现在我已经能获得指定窗口的句柄了hwnd,现在想把这个指定的窗口关闭,采用了下面的方法:
1。发出关闭窗口的消息SendMessage(hwnd, WM_QUIT, 0, 0)
2。直接关闭窗口DestroyWindow(hwnd)
但是这两种方法都不能关闭指定的窗口。用DestroyWindow返回错误为Acess is denied。
3。向指定的窗口发出ALT+F4的组合键,但不知道怎么使用。是SendMessage(hwnd, VK_MENU&VK_F4,0,0)吗?请教各位,如何实现呢?
1。发出关闭窗口的消息SendMessage(hwnd, WM_QUIT, 0, 0)
2。直接关闭窗口DestroyWindow(hwnd)
但是这两种方法都不能关闭指定的窗口。用DestroyWindow返回错误为Acess is denied。
3。向指定的窗口发出ALT+F4的组合键,但不知道怎么使用。是SendMessage(hwnd, VK_MENU&VK_F4,0,0)吗?请教各位,如何实现呢?
也是不行的,我试过了。
BOOL FindProcessHandleAndKill(const CString &cs_WndName)
{
HWND hWnd;
DWORD ProcessID;
HANDLE hProcess; hWnd=::FindWindow(NULL, cs_WndName);
if(hWnd==NULL)//テサモミユメオスエーソレ
{
return FALSE;
}
else
{
if(GetWindowThreadProcessId(hWnd, &ProcessID)==0)//ハァーワ
{
return FALSE;
}
else
{
hProcess=OpenProcess(PROCESS_ALL_ACCESS,FALSE,ProcessID);
if(hProcess==NULL)
{
return FALSE;
}
else
{
if(TerminateProcess(hProcess, 0))
{
return TRUE;
}
else
{
return FALSE;
}
}
}
}}
WM_DESTROY 对应 OnDestroy(),同样是个反馈消息,在窗体(图形及内存)销毁时发出。WM_SYSCOMMAND 对应 OnSysCommand(int nID, LPARAM lParam),执行系统菜单命令,
nID == SC_CLOSE 表示“关闭”。nID 还可以表示“最大/小化”、
“还原”、“移动”、“改变大小”等。WM_QUIT 在 MFC 中没见过,也许 SDK 中才中用得到吧。
是可以的,我试过的
那不可能是 WM_CLOSE 的作用。我上面说了,WM_CLOSE 对应 OnClose(),
是个反馈消息。
Ait + F4 应该作为消息中的参数才对。
感觉风之子的MFC水平很高,佩服,佩服!