刷新IE窗口自动在VB.Net中不起作用

时间:2011-07-12 01:37:08

标签: vb.net 64-bit refresh sendkeys

我尝试编写一个简单的函数将Internet Explorer窗口置于前台,然后按F5使用dll函数刷新它:

    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 个答案:

答案 0 :(得分: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

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