Обновление окна IE автоматически не работает в VB.Net - PullRequest
0 голосов
/ 12 июля 2011

Я попытался написать простую функцию, чтобы вывести окна 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.

Многие спасибо!

1 Ответ

1 голос
/ 12 июля 2011

P / Invoke подписи Я могу предположить, что параметр должен быть IntPtr, а не целочисленным размером (что имеет смысл - вам не нужно писать отдельный код для 32 и 64).бит):

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

Кроме того, проблемы с фокусировкой общеизвестно трудны для отладки, так как окно отладчика имеет тенденцию постоянно возвращать фокус (например, если вы делаете один шаг, он может установить фокус в другом месте,затем немедленно восстановите фокус, чтобы показать следующую строку кода)

...