0

谁能告诉我如何使用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 命令发送回车键。请让我知道如何处理弹出窗口。提前致谢。

4

3 回答 3

3

使用 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}")

来源/灵感:

于 2013-04-15T14:51:13.210 回答
2

尝试这样的事情:

$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}')
于 2019-09-23T14:30:08.513 回答
0

您可能想从 CodePlex 调查 WASP 管理单元:

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

于 2013-04-15T14:17:03.967 回答