小编zyq*_*zyq的帖子

如何在Windows 8.1 Update 2操作系统中使用PowerShell环境中的Win32 API FindWindow()查找桌面窗口(按窗口名称)?

我不记得在旧的Windows操作系统中找到一个窗口有任何问题,但是,我使用PowerShell v4.0在Windows 8.1 Update 2操作系统中没有成功.

这是我正在使用的PowerShell v4.0代码(非常简单):

$sig=@'
[DllImport("user32.dll")]
public static extern IntPtr FindWindow(String sClassName, String sAppName);
'@

$fw = Add-Type -Namespace Win32 -Name Funcs -MemberDefinition $sig -PassThru
$wname='Form1' # any existing window name

$fw::FindWindow($null -as [String], $wname) # returns 0, always!
Run Code Online (Sandbox Code Playgroud)

最后一个命令总是返回0.

将DllImport属性更改为

[DllImport("user32.dll", CharSet = CharSet.Unicode)]
Run Code Online (Sandbox Code Playgroud)

什么都不改变; 0以相同的方式返回.

有趣的是注意到C#中的等效代码,返回正确的HWND值.

有谁知道上面的PowerShell v4.0代码有什么问题(以及如何修复)?

windows powershell

4
推荐指数
1
解决办法
5257
查看次数

标签 统计

powershell ×1

windows ×1