VC++ 獲取窗體句柄,併發送鍵盤消息

當我們想得到一個窗口對象(CWnd的派生對象)指針的句柄(HWND)時,最安全的方法是使用GetSafeHwnd()函數,通過下面的例子來看其理由:
CWnd   *pwnd   =   FindWindow(“ExploreWClass”,NULL);   //希望找到資源管理器
HWND   hwnd   =   pwnd-> m_hwnd;     //得到它的HWND
這樣的代碼當開始得到的pwnd爲空的時候就會出現一個“General   protection   error”,並關閉應用程序,一般不能對一個NULL指針訪問其成員,如果用下面的代碼:
CWnd   *pwnd   =   FindWindow(“ExploreWClass”,NULL);   //希望找到資源管理器
HWND   hwnd   =   pwnd-> GetSafeHwnd();     //得到它的HWND
就不會出現問題,因爲儘管當pwnd是NULL時,GetSafeHwnd仍然可以用,只是返回NULL,通過GetSafeHwnd()的實現代碼就更清楚了:
_AFXWIN_INLINE   HWND   CWnd::GetSafeHwnd()   const
{
      return   this   ==   NULL?NULL:m_hWnd;
}

實例如下,獲取記事本的句柄,併發送鍵盤消息:

報告題寫內容後的記事本文件:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章