PowerShell 调用系统 DLL 中的函数,如何使用返回参数中的值

PowerShell 调用系统 DLL 中的函数,如何使用返回参数中的值

GetWindowText 函数,获得窗口标题,有三个参数,其中两个为输入参数,窗口句柄和标题字符串的最大长度,一个输出参数,窗口标题文本。
我们把文本的类型定义为 System.Text.StringBuilder,在函数声明中写成:
System.Text.StringBuilder lpString
在调用函数时,也要定义一个 System.Text.StringBuilder 类型的变量,写成:
$Title = New-Object -TypeName System.Text.StringBuilder
调用函数$FindWindow::GetWindowText($WindowsHandle, $Title, 1024)
之后,$Title中就有了窗口标题的文本了,但类型并不是字符串,因此,最后还要进行一下转换:
$Title.ToString()

$signature = @"
[DllImport("user32.dll")]
public static extern Int32 GetWindowText(IntPtr hWnd, System.Text.StringBuilder lpString, Int32 nMaxCount);
"@

Function Find-Window{
    Param( $WindowsHandle )

    $FindWindow = Add-Type -memberDefinition $signature -name "Win32GetWindow" -namespace Win32Functions -passThru

    $Title = New-Object -TypeName System.Text.StringBuilder
    $FindWindow::GetWindowText($WindowsHandle, $Title, 1024)
    $Title.ToString()
 }

你可能感兴趣的:(互操作,PowerShell)