VC關閉窗口退出


1、OnOK()或OnCancel()//只對窗口程序有用

2、PostQuitMessage(0);//最常用

3、ExitProcess(0);
4、發送WM_CLOSE消息,如:

     SendMessage(WM_CLOSE,   0,   0);

      
5、TerminateProcess

6、CDialog.Destroy()

7、exit(0);

8、 void CMainFrame::OnClose()
     {
          // TODO: Add your message handler code here and/or call default
          if (MessageBox("確定要退出嗎?","提示",MB_YESNO|MB_DEFBUTTON2)==IDYES)
          {
                 CFrameWnd::OnClose();
          }
     }

如果是關閉其它程序

// 一種方法,通過窗口文字
HWND hWnd = ::FindWindow(NULL, _T("MSDN Library Visual Studio 6.0")); // 注: 這個是窗口的標題文字
 if (NULL != hWnd) {
       ::SendMessage(hWnd, WM_CLOSE, 0, 0);
   }

//另外一種方法,進程ID
DWORD id_num;
HWND hWnd = ::FindWindow(NULL, _T("MSDN Library Visual Studio 6.0"));  
GetWindowThreadProcessId(hWnd, &id_num); //注意:第二個參數是進程的ID,返回值是線程的ID。
HANDLE hd = OpenProcess(PROCESS_ALL_ACCESS,FALSE, id_num);
TerminateProcess(hd, 0);

如果窗口文字是會變的,可以使用FindWindow的第一個參數:應用程序的類名。
可以通過VC提供的Spy++這個軟件獲得ClassName。
從開始菜單->MS 6.0 Tools->spy++,找出你要關閉的程序,比如說spy++,雙擊它,看Class選項的Class Name是Afx:400000:8:10011:0:15503db。
然后:
HWND hWnd = ::FindWindow(_T("Afx:400000:8:10011:0:15503db"), NULL);  
GetWindowThreadProcessId(hWnd, &id_num); //注意:第二個參數是進程的ID,返回值是線程的ID。
HANDLE hd = OpenProcess(PROCESS_ALL_ACCESS,FALSE, id_num);
TerminateProcess(hd, 0);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM