控應用程式窗口的消息的DLL 有開發過HOOK的請進來幫助我吧 |
尚未結案
|
ctjh900801
一般會員 ![]() ![]() 發表:3 回覆:0 積分:0 註冊:2010-12-02 發送簡訊給我 |
小弟寫了一支程式昰用VB.NET 開發的 但要監控到第三方的軟體 來達到自動控制的目的
所以小弟用VC 2010 開發HOOK的 DLL 讓VB.NET 去調用 但HOOK 算是底層的應用程序 開發這個對小弟來說有很大的難度 花了不少的時間 找了很多HOOK的資料 但還是不曉得該怎麼著手不知道怎麼寫 所以來此問一下各位高手了 這是我用SPY 去監控的應用程序的窗口 我要監看的功能函數就是WM_PSD_ENVSTAMPRECT 的lParam 的值 <00031> 00020E46 S WM_PSD_ENVSTAMPRECT wParam:00000001 lParam:00000001 <<<1 <00032> 00020E46 R WM_PSD_ENVSTAMPRECT lResult:00000000 <00033> 00020E46 S WM_PSD_PAGESETUPDLG wParam:00000000 lParam:00000000 <00034> 00020E46 R WM_PSD_PAGESETUPDLG lResult:00000001 <00035> 00020E46 S WM_PSD_ENVSTAMPRECT wParam:00000001 lParam:00000002 <<<2 <00036> 00020E46 R WM_PSD_ENVSTAMPRECT lResult:00000000 <00037> 00020E46 S WM_PSD_PAGESETUPDLG wParam:00000000 lParam:00000000 <00038> 00020E46 R WM_PSD_PAGESETUPDLG lResult:00000002 <00039> 00020E46 S WM_PSD_ENVSTAMPRECT wParam:00000001 lParam:00000003 <<<3 獲取 WM_PSD_ENVSTAMPRECT 的lParam值 <00040> 00020E46 R WM_PSD_ENVSTAMPRECT lResult:00000000 <00041> 00020E46 S WM_PSD_PAGESETUPDLG wParam:00000000 lParam:00000000 我花了很多時間研究了許多跟HOOK有關的C 代碼,但是對小弟來說難度實在太高了。 不好理解 請不要直接給我參考資料 小弟已經搜索了很多的參考資料 從簡單到複雜的HOOK 我都有看過 可是就是不曉得如何著手 我知道的有 要先安裝勾子 然後選擇勾子類型 定義結構 還有共用記憶體也要考慮 還要註銷勾子 安裝勾子用SetWindowEx 勾子類型不曉得用什麼才對 定義結構也不知道要考慮什麼? 希望能直接給我針對我這個project能夠直接給我要寫些什麼代碼進去的幫助 在此謝謝各位了。 以下是小弟我目前寫的代碼 請給予我幫助: ---------------------------------- // hookps.cpp : 定義 DLL 應用程式的匯出函式。 // #include #include "stdafx.h" HWND g_hWnd; HHOOK hThisHook; //保存鉤子的控制碼 static LRESULT CALLBACK HookedShellProc(int nCode, WPARAM wParam, LPARAM lParam); //定義共用的資料結構 typedef struct { HHOOK hThisHook; //當前使用的 HOOK //... 此處可增加其他共用的資料 }; LRESULT HookProc ( int code, // hook code WPARAM wParam, // virtual-key code LPARAM lParam // keystroke-message information ); HINSTANCE hDll; BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { hDll = (HINSTANCE) hModule; return TRUE; }; int GetWindowTextRemote(HWND hwnd,LPSTR lpString) { hThisHook=SetWindowsHookEx(WH_SHELL,(HOOKPROC)HookProc,hDll,GetWindowThreadProcessId(hwnd,NULL) ); }; #define RELEASEHOOK(hThisHook) // <<<<<<將勾子註銷 { //<<< 不曉得為什麼一直冒出IntelliSense: 必須宣告 if(hThisHook) { UnhookWindowsHookEx(hThisHook); hThisHook = NULL; } }; enum { HM_SHELL = 0x0100, }; 我在這邊定義的勾子類刑昰使用WH_SHELL 我不曉得對不對 然後接下來我就完全不曉得該怎麼寫了 #define RELEASEHOOK(hThisHook) // <<<<<<將勾子註銷 { //<<< 上面這裡 不曉得為什麼一直冒出IntelliSense: 必須宣告 的錯誤訊息 這是其中一個問題。 還有我目前還需要在代碼中加入什麼 或是有什麼錯誤 或是哪邊是多加的代碼 沒用處 或是這個勾子類型用錯 請大家針對我這幾個問題給予我協助 謝謝各位了。 編輯記錄
ctjh900801 重新編輯於 2011-10-02 09:57:21, 註解 無‧
ctjh900801 重新編輯於 2011-10-02 09:58:22, 註解 無‧ ctjh900801 重新編輯於 2011-10-02 09:58:49, 註解 無‧ ctjh900801 重新編輯於 2011-10-02 09:58:50, 註解 無‧ |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |