//需要关闭运行的上位机
HWND hwnd = ::FindWindow(NULL, TEXT("要关闭的程序窗口名称"));
::SendMessage(hwnd, WM_CLOSE, 0, 0);//发送WM_CLOSE关闭
1、有些程序可能没有设置标题栏名称,随意放在哪都可以
AfxGetMainWnd()->SetWindowText(TEXT("标题栏名称"));//vs2013中不能全部修改,只能修改右边部分标题
2、可能有些程序因为ESC和回车键的原因屏蔽了WM_CLOSE
而一般屏蔽消息的方法都是在OnCancel()和OnBnClickedOk()中屏蔽,这样会导致直接无法接收WM_CLOSE消息
实际上可以直接屏蔽ESC和回车按键的消息,而又能接收WM_CLOSE消息
BOOL C类名Dlg::PreTranslateMessage(MSG* pMsg)
{
if (pMsg->message == WM_KEYDOWN)
{
switch (pMsg->wParam)
{
case VK_ESCAPE: //Esc按键事件
return true;
case VK_RETURN: //Enter按键事件
return true;
default:
;
}
}
return CDialogEx::PreTranslateMessage(pMsg);
}