我正在尝试退出一个窗口,我已经第三次DestroyWindow()
并SendMessage()
WM_CLOSE,CloseWindow()
前两个不起作用,而 CloseWindow((; 只是最小化它!
我正在尝试执行的操作的示例代码:
int main()
{
HWND curwind;
char ccurwind[256];
HWND newwind;
HWND wind2;
Sleep(1000);
printf("Destroying in 5...n");
Sleep(1000);
printf("Destroying in 4...n");
Sleep(1000);
printf("Destroying in 3...n");
Sleep(1000);
printf("Destroying in 2...n");
Sleep(1000);
printf("Destroying in 1...n");
curwind = GetForegroundWindow();
GetWindowTextA(curwind, ccurwind, 256);
//DestroyWindow(curwind);
if (DestroyWindow(curwind) == 0) {
printf("Failed with error: %s", GetLastError());
}
else {
printf("nDestroyed %s", ccurwind);
}
getch();
return 0;
}
所以基本上关闭窗口但不关闭过程示例方案:我在谷歌的新窗口中打开一个新标签,该程序将关闭该窗口,但不会关闭整个过程。这是否可能,如果是,我将使用什么功能?
只允许拥有窗口的线程调用DestroyWindow
。 SendMessage(hWnd, WM_SYSCOMMAND, SC_CLOSE, 0)
与使用系统菜单关闭窗口相同,但它最终只会发送WM_CLOSE
。
窗口可以忽略WM_CLOSE
,对此您无能为力。
如果窗口的完整性级别高于您的进程,则UIPI将阻止您的消息。
函数:DestroyWindow((应该可以完成这项工作。
发件人: 'https://msdn.microsoft.com/en-us/library/windows/desktop/ms632682(v=vs.85(.aspx'
销毁指定的窗口。该函数将WM_DESTROY和WM_NCDESTROY消息发送到窗口以停用它并从中删除键盘焦点。该函数还会销毁窗口的菜单、刷新线程消息队列、销毁计时器、删除剪贴板所有权以及断开剪贴板查看器链(如果窗口位于查看器链的顶部(。
如果指定的窗口是父窗口或所有者窗口,则 DestroyWindow 会在销毁父窗口或所有者窗口时自动销毁关联的子窗口或拥有的窗口。该函数首先销毁子窗口或拥有的窗口,然后销毁父窗口或所有者窗口。
DestroyWindow 还会销毁由 CreateDialog 函数创建的无模式对话框。