任何人都可以告诉我如何使用PowerShell在弹出窗口中单击“确定”或“取消”? 我正在尝试使用PowerShell自动化网站,但我是PowerShell的新手。我必须在弹出框中单击“确定”按钮才能继续。我知道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命令发送回车键。请让我知道如何处理弹出窗口。提前谢谢。
答案 0 :(得分:3)
使用Powershell v2,您可以使用PInvoke访问常规的Win32 API,从而可以访问FindWindow
和SetForegroundWindow
。然后使用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}")
来源/灵感:
答案 1 :(得分:0)
您可能想要从CodePlex调查WASP管理单元:
http://wasp.codeplex.com/wikipage?title=Some%20Usage%20Examples&referringTitle=Home
答案 2 :(得分:0)
尝试这样的事情:
$wshell = New-Object -ComObject wscript.shell;
$wshell.AppActivate('Vector RP1210 API Setup')
Sleep 1
$wshell.SendKeys('%C')
$wshell.AppActivate('Vector RP1210 API')
Sleep 1
$wshell.SendKeys('{ENTER}')