首先当然是自定义消息
#define WM_SUSPEND WM_USER+9
消息一般由系统发出,也可以由驱动产生。
在MFC中关联处理函数
BEGIN_MESSAGE_MAP(CBrightDlg, CDialog) //{{AFX_MSG_MAP(CBrightDlg) ON_MESSAGE(WM_SUSPEND,OnSuspend)
......................
//}}AFX_MSG_MAP END_MESSAGE_MAP()
ON_NOTIFY是控件向其父窗口发送消息处理的宏, ON_COMMAND是菜单和工具栏项处理消息的宏, ON_MESSAGE是处理自定义消息的宏
休眠后要关闭的应用都可以在下面关闭了了。
HRESULT CToolDlg::OnSuspend() { DWORD dPid; HWND hWnd,hWnd1;
hWnd = ::FindWindow(TEXT("GPS_eDog"),NULL); if(hWnd != NULL)//没有找到 { GetWindowThreadProcessId(hWnd,&dPid); HANDLE hWnd_Info1=OpenProcess(0,false,dPid); TerminateProcess(hWnd_Info1,0); CloseHandle(hWnd_Info1); }
hWnd1 = ::FindWindow(TEXT("RF_Receiver"),NULL); if(hWnd1 != NULL)//没有找到 { GetWindowThreadProcessId(hWnd1,&dPid); HANDLE hWnd_Info2=OpenProcess(0,false,dPid); TerminateProcess(hWnd_Info2,0); CloseHandle(hWnd_Info2); }
CDialog::OnCancel(); return 0; } 设定以后就可以实现待机后再还原的问题。不会待机后整个系统全部忘记前次所作的事情 相当于软件的断电记忆。