全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1847
推到 Plurk!
推到 Facebook!

如何攔截整個window的滑鼠左鍵訊息

尚未結案
seeing
初階會員


發表:49
回覆:131
積分:41
註冊:2002-11-07

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-06-09 17:54:25 IP:140.134.xxx.xxx 未訂閱
請問各位高手:     小弟現在可以透過下列的方法攔截 Project 的滑鼠左鍵訊息:
//FormShow
Application->MsgProc;    //副程式
MsgProc(tagMSG &Msg, bool &Handled)
{
  if(Msg.message==WM_LBUTTONDOWN)
  {
    //做想做的事
  }
}
但是無法攔截整個window的滑鼠左鍵訊息,想請教各位高手要如何修改才能順利攔截整個window的滑鼠左鍵訊息,謝謝!
RedSnow
版主


發表:79
回覆:1322
積分:845
註冊:2003-12-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-06-09 21:23:38 IP:219.135.xxx.xxx 未訂閱
seeing 您好:    建議您朝 Hook 這個方向去研究,以下幫您找出一些站上的相關討論與文章,您參考一下吧: 請教一個訊息攔截的問題 http://delphi.ktop.com.tw/topic.php?topic_id=62441 請問如何用WH_GETMESSAGE攔截所有視窗(全域)的WM_MOUSEMOVE????? http://delphi.ktop.com.tw/topic.php?topic_id=33007 請教PopupMenu的問題.. http://delphi.ktop.com.tw/topic.php?topic_id=46883 (查看 m8815010 版主的建議與範例) System mouse Hook的問題! http://delphi.ktop.com.tw/topic.php?topic_id=45833 請教動態生事件和程序外的訊息攔截 http://delphi.ktop.com.tw/topic.php?topic_id=27138 Windows hooks http://delphi.ktop.com.tw/topic.php?topic_id=52604 與作業系統掛勾-Hook寫作 http://delphi.ktop.com.tw/topic.php?topic_id=29151
seeing
初階會員


發表:49
回覆:131
積分:41
註冊:2002-11-07

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-06-10 09:27:24 IP:140.134.xxx.xxx 未訂閱
您好: 已經可以順利攔截滑鼠左鍵訊息了(應該...),但是執行時,程式的視窗會一直閃爍,而且閃的非常快,請問這是什麼原因啊? 謝謝!
RedSnow
版主


發表:79
回覆:1322
積分:845
註冊:2003-12-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-06-10 10:50:42 IP:218.19.xxx.xxx 未訂閱
seeing 您好: 請將您現在使用的程式敘述 (與您描述動作有關的部份) 貼上來,或是描述一下您現在是採用了何種方式與程序來處理的?這樣才好判斷為題之所在。
seeing
初階會員


發表:49
回覆:131
積分:41
註冊:2002-11-07

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-06-10 11:20:40 IP:140.134.xxx.xxx 未訂閱
您好:
HHOOK hMouseHook;    LRESULT CALLBACK MouseHook(int iCode,WPARAM wParam,LPARAM lParam)
{
   if(iCode>=0)
   {
      if(iCode==HC_ACTION)
      {
         TEventMsg msg;
         msg = *((TEventMsg*)(lParam));             if(msg.message==WM_LBUTTONDOWN)
         {
             //...........
         }
      }
      return 0;
   }
   return CallNextHookEx(hMouseHook,iCode,wParam,lParam);
}    //FormShow
if(hMouseHook==NULL)
   hMouseHook=SetWindowsHookEx(WH_JOURNALRECORD,(HOOKPROC)MouseHook,HInstance,0);
程式執行後,標題列會稍微閃爍,但如果在程式外(像是檔案總管)按一下,則會閃爍的更嚴重
seeing
初階會員


發表:49
回覆:131
積分:41
註冊:2002-11-07

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-06-10 12:17:00 IP:140.134.xxx.xxx 未訂閱
您好:   莫名奇妙的解決了,真是太感謝了!
系統時間:2024-11-23 12:54:30
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!