Liu 板


LINE

看板 Liu  RSS
※ 引述《ChrisTorng (ChrisTorng)》之銘言: : : 完全更新了原本按鍵攔截的結構 : : 因此會非常不穩定,也非常需要測試 ^^" : : (才剛解決一個嚴重 Bug) : : 事實上我還在評估 : : 因為雖然這個結構可以改良部份困擾已久的問題 : : 不過程式效率可能會降低(目前還不確定是不是真的會降低) : : 所以可能根據大家的回報再決定最後用哪一個結構好了 : 用 vc 寫 dll 對嗎? : 事實上我為了工作已經寫好一個現成的攔截鍵盤 vc dll, : 也是由書上抄來的,我用是已經很穩定了,不知道會不會有幫助,提供做參考: : // CbtHook.cpp : Defines the entry point for the DLL application. : // : #include "stdafx.h" : #include "CbtHook.h" : #define CBTHOOK_VERSION 1 : #define MYWM_APPACTIVATE WM_USER + 1 : #define MYWM_APPMINMAX WM_USER + 2 : #define MYWM_APPDESTROYWND WM_USER + 3 : HINSTANCE g_hinstDll = NULL; : // for VS.NET warning C4659: : // #pragma 'data_seg' : 使用保留的區段 '.drectve' 有未定義的行為, : // 使用 #pragma comment(linker, ...) : #pragma data_seg(".drectve") : //#pragma comment(linker, "/SECTION:.drectve,RWS") : static char szLinkDirectiveShared[] = "-section:Shared,rws"; : #pragma data_seg() : #pragma data_seg("Shared") : HHOOK g_hhook = NULL; : HWND g_hwndPost = NULL; : #pragma data_seg() : static LRESULT WINAPI WndHook_HookProc(int nCode, WPARAM wParam, : LPARAM lParam) : { : switch (nCode) : { : case HCBT_ACTIVATE: : PostMessage(g_hwndPost, MYWM_APPACTIVATE, wParam, : (LPARAM)(((LPCBTACTIVATESTRUCT)lParam)->hWndActive)); : break; : case HCBT_MINMAX: : PostMessage(g_hwndPost, MYWM_APPMINMAX, wParam, lParam); : break; : case HCBT_DESTROYWND: : PostMessage(g_hwndPost, MYWM_APPDESTROYWND, wParam, lParam); : break; 亂po參考試看看,說不定會有用,當初寫一個滑鼠監測程式是卡在這裡 好像是不能全都是用PostMessage(..) 如果現在最上層的執行視窗 是本身自已的執行程式的話 就要用SendMessage(..) (原理 也就是現在進來讀取這個DLL檔的 是本身自已的程式) 我之前寫的那個程式是要滿足這樣的規則 不知道xliu需不需要 HWND hWnd1, hWnd2; hWnd1 = GetForegroundWindow(); hWnd2 = GetParent(hWnd1); if (!hWnd2) hWnd2 = hWnd1; if (hWnd2 == m_hWnd)//為本程式的執行視窗 SendMessage(m_hWnd, WM_COMMAND, dwArg, NULL); else PostMessage(m_hWnd, WM_COMMAND, dwArg, NULL); : } : return CallNextHookEx(g_hhook, nCode, wParam, lParam); : } : BOOL WINAPI SetWindowHook(int ThreadId, HWND hWndPost) : { : HHOOK hhook; : if (g_hhook != NULL) return(FALSE); : g_hwndPost = hWndPost; : hhook = SetWindowsHookEx(WH_CBT, WndHook_HookProc, g_hinstDll, : ThreadId); : InterlockedExchange((PLONG) &g_hhook, (LONG) hhook); : return(g_hhook != NULL); : } : BOOL WINAPI ReleaseWindowHook() : { : BOOL fOK = TRUE; : if (g_hhook == NULL) : return(FALSE); : fOK = UnhookWindowsHookEx(g_hhook); : g_hhook = NULL; : return(fOK); : } : int WINAPI GetDllVersion() : { : return(CBTHOOK_VERSION); : } : BOOL APIENTRY DllMain(HINSTANCE hinstDll, DWORD fdwReason, LPVOID lpvReserved) : { : switch (fdwReason) : { : case DLL_PROCESS_ATTACH: : g_hinstDll = hinstDll; : break; : case DLL_THREAD_ATTACH: : case DLL_THREAD_DETACH: : case DLL_PROCESS_DETACH: : break; : } : return(TRUE); : } --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.25.174 ※ 編輯: badpp 來自: 140.112.25.174 (06/26 23:51)







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Soft_Job站內搜尋

TOP