我跟着this ask,打開這樣一個過程,關閉IE進程,失敗的user32.dll中的函數調用
// open IE (ok)
Process process = System.Diagnostics.Process.Start("IEXPLORE.EXE", "www.google.com");
IntPtr handle = process.Handle;
// refresh it (ok)
[DllImport("user32.dll")]
static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
ShowWindow(handle, 1);
SendKeys.SendWait("{F5}");
// however, fail to close it (NOT ok)
[DllImport("user32.dll")]
static extern bool CloseWindow(IntPtr hWnd);
CloseWindow(handle); // don't work
沒有錯誤,沒有異常發生。我檢查了關於CLoseWindow的MSDN,但仍然失敗。有關它的任何想法?謝謝 !
更新: 好的,我修正了它,使它更加健壯。 調用這個過程的CloseMainWindow()函數的工作
[DllImport("user32.dll")]
static extern bool SetForegroundWindow(IntPtr hWnd);
bool bOk = ShowWindow(process.MainWindowHandle, 1);
if (bOk) {
bOk = SetForegroundWindow(process.MainWindowHandle);
if (bOk){
process.CloseMainWindow();
}
}
的ShowWindow()返回布爾。 *永遠不會忽略winapi返回值。 –
thx提醒我 – Kevin