線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1313
推到 Plurk!
推到 Facebook!

hook wm_timer

尚未結案
dt520
一般會員


發表:11
回覆:61
積分:14
註冊:2003-05-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-12-26 22:56:48 IP:61.146.xxx.xxx 未訂閱
如何HOOK wm_timer 消息, 我想用全局 HOOK 另一程序发出的wm_timer,但不知到如何做(设文件名为hook.dll)? 我调用hook.dll的EXE文件怎么样可以接收hook.dll发来消息? 我的hook.dll怎样将另一程序发出的wm_timer消息转发到调用hook.dll的EXE文件? DT520 @>>>-->>---------一路风尘一路歌!!
dt520
一般會員


發表:11
回覆:61
積分:14
註冊:2003-05-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-12-27 16:12:28 IP:61.146.xxx.xxx 未訂閱
我在网上找到这些资料,但不怎么样使用. //main.c 文件    #include  #include #include #include "getmsg.h" HINSTANCE hInstance; BOOL WINAPI DllMain(HANDLE hModule, DWORD, LPVOID); LRESULT CALLBACK MyGetMsgProc(INT hc, WPARAM wParam, LPARAM lParam); LRESULT CALLBACK MyCallWndProc(INT hc, WPARAM wParam, LPARAM lParam); BOOL HookInstalled = 0 ; // State Table of my hooks HHOOK hhookMsg =NULL, hhookWnd =NULL; __declspec( dllexport ) HWND g_hWnd =NULL; __declspec( dllexport ) UINT g_msg =0; __declspec( dllexport ) char g_caption[256]; __declspec( dllexport ) char g_className[50]; //--------------------------------------------------------------------------- // DllMain //--------------------------------------------------------------------------- BOOL APIENTRY DllMain(HANDLE hModule, DWORD dwReason, LPVOID lpReserved) { FILE *fp =NULL; hInstance = hModule; switch(dwReason) { case DLL_PROCESS_ATTACH: if((fp =fopen("c:\\share.txt", "r")) !=NULL) { fscanf(fp, "%d %d %s %s", &g_hWnd, &g_msg, g_className, g_caption); fclose(fp); } //MessageBox(NULL, g_className, g_caption, MB_OK); break; case DLL_PROCESS_DETACH: break; default: break; } return TRUE; } //--------------------------------------------------------------------------- int __stdcall InstGetMsg(BOOL fInstall, char *pclass, char *pcaption, UINT msg, HWND hWnd) { FILE *fp; if ( fInstall ) { if(pclass ==NULL) g_className[0] =0; else strcpy(g_className, pclass); if(pcaption ==NULL) g_caption[0] =0; else strcpy(g_caption, pcaption); g_hWnd =hWnd; g_msg =msg; if((fp =fopen("c:\\share.txt", "w")) !=NULL) { fprintf(fp, "%d %d %s %s", g_hWnd, g_msg, g_className, g_caption); fclose(fp); } if(HookInstalled) return FALSE; hhookWnd = SetWindowsHookEx(WH_CALLWNDPROC, MyCallWndProc, hInstance, 0); hhookMsg = SetWindowsHookEx(WH_GETMESSAGE, MyGetMsgProc, hInstance, 0); HookInstalled = TRUE; } else { if(!HookInstalled) return FALSE; UnhookWindowsHookEx(hhookMsg); UnhookWindowsHookEx(hhookWnd); HookInstalled = FALSE; } return TRUE; } LRESULT CALLBACK MyGetMsgProc(INT hc, WPARAM wParam, LPARAM lParam) { PMSG pmsg; HWND hwnd; char *pclass =NULL, *pcaption =NULL; pmsg = (PMSG)lParam; //用delphi 怎么样写?? if (hc >= 0 && pmsg && pmsg->hwnd) { if(pmsg->message ==g_msg) { if(g_className[0] !=0) pclass =g_className; if(g_caption[0] !=0) pcaption =g_caption; hwnd =FindWindow(pclass, pcaption); if(g_hWnd && pmsg->hwnd ==hwnd) { PostMessage(g_hWnd, pmsg->message, pmsg->wParam, pmsg->lParam); //return 0; } } } return CallNextHookEx(NULL, hc, wParam, lParam); } LRESULT CALLBACK MyCallWndProc(INT hc, WPARAM wParam, LPARAM lParam) { PCWPSTRUCT pcwps; HWND hwnd; char *pclass =NULL, *pcaption =NULL; pcwps = (PCWPSTRUCT)lParam; if (hc >= 0 && pcwps && pcwps->hwnd) { if(pcwps->message ==g_msg) { if(g_className[0] !=0) pclass =g_className; if(g_caption[0] !=0) pcaption =g_caption; hwnd =FindWindow(pclass, pcaption); if(hwnd) MessageBeep(0); if(pcwps->hwnd ==hwnd) { SendMessage(g_hWnd, pcwps->message, pcwps->wParam, pcwps->lParam); //return 0; } } } return CallNextHookEx(NULL, hc, wParam, lParam); } //getmsg.h 文件 /* InstGetMsg: 安装截取某个窗口的某个消息 * fInstall: TRUE-安装,FALSE-撤消安装 * hWnd: 接收消息的窗口,即截取到某个窗口的消息后再转发到hWnd窗口 * msg: 要截取哪个消息 * pclass: 要截取的窗口类型 * pcaption: 要截取的窗口标题,和className必须其中一个不为0 */ int __stdcall InstGetMsg(BOOL fInstall, char *pclass, char *pcaption, UINT msg, HWND hWnd); DT520 @>>>-->>---------一路风尘一路歌!!
dt520
一般會員


發表:11
回覆:61
積分:14
註冊:2003-05-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-12-29 21:31:00 IP:61.146.xxx.xxx 未訂閱
pmsg = (PMSG)lParam; //用delphi 怎么样写?? 用下面方法解决: var pdtmsg:pmsg; begin pdtmsg:=pmsg(lParam); if pdtmsg^.hwnd>0 then DT520 @>>>-->>---------一路风尘一路歌!!
系統時間:2024-07-07 18:05:52
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!