2011-07-12 89 views
0
工作

我試圖寫一個簡單的功能帶來的Internet Explorer窗口到前臺,然後按F5使用DLL函數以刷新:刷新IE窗口不自動在VB.Net

Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Integer) As Integer 

然後使用以下函數調用此函數:

SetForegroundWindow(processID.MainWindowHandle.ToInt32) 
     SendKeys.Send("{F5}") 

但是,當我試圖調試代碼時,setforeground不起作用。

我使用Windows 2008(64位),所以我想我應該使用ToInt64。但是,這似乎也沒有做到這一點,當我打電話給SetForegroundWindow,似乎沒有出現。

有沒有其他建議?我正在使用VS 2008.

很多thnaks!

回答

1

P/Invoke signatures我能找到建議的參數應該是一個IntPtr,而不是大小的整數(一種有意義的 - 你不應該需要編寫的32個獨立的碼位和64位):

<DllImport("user32.dll")> _ 
Private Shared Function SetForegroundWindow(ByVal hWnd As IntPtr) As <MarshalAs(UnmanagedType.Bool)> Boolean 
End Function 

此外,焦點問題非常難以調試,因爲調試器窗口往往希望始終重新獲得焦點(例如,如果您單步執行,它可能會在其他位置設置焦點,然後立即重新獲得焦點以顯示下一行的代碼)