2013-04-15 29 views
0

任何人都可以請告訴我如何點擊「確定」或「取消」使用PowerShell彈出窗口? 我想使用PowerShell自動化網站,但我是PowerShell的新手。我必須在彈出框中點擊確定按鈕才能繼續。我知道VBScript中,在我可以使用使用powershell處理彈出框

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命令發送回車鍵。請讓我知道如何處理彈出窗口。提前致謝。

回答

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

來源/靈感: