【发布时间】:2013-12-09 22:40:48
【问题描述】:
我关注this ask,打开一个这样的进程,
// 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
没有错误,没有异常发生。我检查了 MSDN 关于CLoseWindow 但仍然失败。有什么想法吗?谢谢!
更新: 好的,我修复了它并使它更健壮。 调用此进程的 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 返回值。
标签: c# internet-explorer process