※ 引述《RexBT (Rex)》之銘言:
: 想請問我目前想做一個Mouse Hook
: 當我接收到Mouse Move的訊息後,串改lParam內x,y座標的值
: 例如
: 永遠都是貼x軸在上下動
: 以下是我的callback function
: LRESULT CALLBACK MouseHookProc2(int nCode, WPARAM wParam, LPARAM lParam)
: {
: if(wParam == WM_MOUSEMOVE ||wParam == WM_NCMOUSEMOVE)
: {
: MOUSEHOOKSTRUCT* data=(MOUSEHOOKSTRUCT*) lParam;
: LPARAM lParam2= MAKELPARAM(0,data->pt.y);
: return CallNextHookEx(NULL,nCode,wParam,lParam2);
: }
: return CallNextHookEx(NULL,nCode,wParam,lParam);
: }
: 但執行結果,每次滑鼠移動都是照常
: 沒有被修改過
: 請問有任何大大有試過寫這樣的function嗎
: 可以指點迷津?
先聲明,以下為我個人理解,有錯請見諒,畢竟小弟也沒幹過同樣的事
首先 要用DLL注入的方法,注入要目標進程(如果你只想在目標進程有效)
若是要全局,我記得是不用寫成DLL的
再來 依我的理解,callback的hook是由系統通知您發生了這個mouse 事件
所以您修改的X 可能只是個複本(我猜的),所以改了沒用,可以換個做法
HOOK到後吃掉訊息,不要CallNextHookEx
用SetCursorPos/ SendMessage 來取代你原本IF裡的 CallNextHookEx