C++: SendMessage -> WM_CLOSE

Posted: 一月 21, 2008 in 技術相關
標籤:,

之前提到可以利用 SendMessage() 的方式來主動與視窗程式溝通

假設今天情境需求為 希望能定期檢查程式中某函數值 如果 FALSE 則主動關閉程式

那應該要如何實作呢 !?

  1. 產生 OnTimer() 函示 -> 定期 Polling
  2. 如果 Polling 結果為非 -> 關閉程式

假設需要關閉的是主程式 第一步一樣先取得其視窗 Handle

接著送出訊息告知關閉 ! 如下…


	HWND hCloseWindow = this->GetSafeHwnd();
	::SendMessage(hCloseWindow, WM_CLOSE, 0, 0);

(關閉所需送出之 MSG 為 WM_CLOSE)

如此即可定時檢查程式內某參數/函數 !!

更新 2008/01/21

雖然上述方式依舊可以成功 但正確用法應如下所示…

::SendMessage(hWnd, WM_SYSCOMMAND, SC_CLOSE, NULL);

可以參考 MSDN中有關 WM_SYSCOMMAND 的 class member 用法 [連結]

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 變更 )

Twitter picture

You are commenting using your Twitter account. Log Out / 變更 )

Facebook照片

You are commenting using your Facebook account. Log Out / 變更 )

Google+ photo

You are commenting using your Google+ account. Log Out / 變更 )

連結到 %s