2011-07-12 48 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 

此外,焦点问题非常难以调试,因为调试器窗口往往希望始终重新获得焦点(例如,如果您单步执行,它可能会在其他位置设置焦点,然后立即重新获得焦点以显示下一行的代码)