實現熱鍵啟用後臺程式 (轉)

gugu99發表於2008-06-09
實現熱鍵啟用後臺程式 (轉)[@more@]

實現熱鍵啟用後臺程式

(湖南 張波雲)

  在DOS下編寫常駐的應用(TSR)時,一般設定了熱鍵啟用方式,DOS對
此非常熟悉。在 9X環境下,有的時侯前臺執行程式隱藏了Windows的工作列,使
使用者不能切換,許多Game程式執行時便是如此。如果在你的後臺程式中加入熱鍵撥出功
能,便無此慮了。 
  程式實現原理:首先使用者預定一個熱鍵,無論該程式是前臺程式還是後臺程式,只
要使用者按了這個鍵,該程式就會立即變為前臺程式。程式中要對熱鍵訊息WM_HOTKEY進行
捕獲,並透過訊息引數瞭解哪一個鍵被按下。 
  因為VC中的CLASSWIZARD中沒有對訊息WM_HOTKEY進行封裝,我們只有透過實現對
該訊息的對映及處理(程式設計環境VC5, 工程為MFC APPWIZARD [EXE] 型別,本例的工程名
為:EXAMPLE)。 
  具體實現步驟如下: 
  1. 宣告熱鍵訊息處理原型 
  在CExampleView.h中訊息對映宣告處(AFX_mSG字樣之後)加入如下語句: 
  LRESULT OnHotKey(WPARAM wParam,LPARAM lParam); 
  2. 訊息與相應處理函式相關聯 
  在CExampleView.Cpp中加入訊息對映宏,使訊息與相應處理函式發生關係,
  ON_MESSAGE(WM_HOTKEY,OnHotKey); 
  3. 為方便以後的操作 
  預先在CexamplView類中建立一個響應WM_CREATE和WM_DESTROY訊息的函式
  OnCreate( )與OnDestroy( )的,(利用CLASSWIZARD很容易實現,請參考有關VC的書籍,在此不再贅述)。 
  4.向登記熱鍵 
  在OnCreate()函式中加入如下程式碼以向系統登記熱鍵,本例子的熱鍵設為
  Ctrl+Shift+A. 
  RegisterHotKey(m_hWnd,1001,MOD_CONTROL|MOD_SHIFT,′A′); 
  RegisterHotKey(m_hWnd,1002,MOD_CONTROL|MOD_SHIFT,′a′); 
  5.處理熱鍵 
  在訊息處理函式OnHotKey()中對熱鍵進行處理,並可加入使用者希望執行的程式程式碼等
: 
  LRESULT CExampleView::OnHotKey(WPARAM wParam,LPARAM lParam) 
  if (wParam== 1001||wParam= =1002) 
  CWnd::SetForegroundWindow();//使得被啟用視窗出現在前景 
  MessageBox(″Hello,How do you do!″); 
  //使用者可在此新增程式碼 
  return 0; 
  6.程式執行完畢後解除熱鍵 
  在OnDestroy()中透過UnRegisterHotKey()解除熱鍵登記,釋放系統資源. 
  UnRegisterHotKey(m_hWnd, 1001); 
  UnRegisterHotKey(m_hWnd, 1002); 
  7.編譯並執行程式 
  執行程式後,無論何時只要按下熱鍵Ctrl+Shift+A後本程式便立即成為前臺執行程
序,並出現在DeskTop上。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-1005427/,如需轉載,請註明出處,否則將追究法律責任。

相關文章