处理使用PowerShell一个弹出框(Handling a popup box using pow

2019-08-31 06:54发布

谁能告诉我怎么点击“OK”或“取消”的弹出窗口上使用PowerShell? 我试图自动化使用PowerShell一个网站,但我是新来的PowerShell。 我必须点击OK按钮,在弹出框中进行。 我知道VBScript中,在我可以使用

set obj0 = createobject("wscript.shell")
count = 0
do while count = 0
if obj0.appactivate "Popupboxname" then
----perform required action---
count = 1
else
wscript.sleep(2000)
end if
loop

谁能告诉我该怎么做在PowerShell中的一样吗? 如果我能以某种方式访问​​该弹出式窗口,至少我可以用SendKeys命令发送回车键。 请让我知道如何处理弹出窗口。 提前致谢。

Answer 1:

使用PowerShell V2可以使用的PInvoke访问正常的Win32 API,从而使您可以访问FindWindowSetForegroundWindow 。 然后使用SendKeys发送一个Enter键。

像这样注册的方法:

$pinvokes = @'
    [DllImport("user32.dll", CharSet=CharSet.Auto)]
    public static extern IntPtr FindWindow(string className, string windowName);

    [DllImport("user32.dll")]
    [return: MarshalAs(UnmanagedType.Bool)]
    public static extern bool SetForegroundWindow(IntPtr hWnd);
'@

Add-Type -AssemblyName System.Windows.Forms
Add-Type -MemberDefinition $pinvokes -Name NativeMethods -Namespace MyUtils

现在,你可以找到你需要的窗口:

$hwnd = [MyUtils.NativeMethods]::FindWindow(null, "Popupboxname")

给它重点:

[MyUtils.NativeMethods]::SetForegroundWindow($hwnd)

并发送Enter键:

[System.Windows.Forms.SendKeys]::SendWait("{ENTER}")

来源/启示:

  • 电源外壳:如何发送鼠标点击?
  • http://poshcode.org/1837
  • http://www.tek-tips.com/viewthread.cfm?qid=1563429


Answer 2:

你可能想从CodePlex上investige的WASP管理单元:

http://wasp.codeplex.com/wikipage?title=Some%20Usage%20Examples&referringTitle=Home



文章来源: Handling a popup box using powershell