Windows Mobile上使用鉤子

2021-05-02 22:03:48 字數 2435 閱讀 8175

wince系統對於鉤子技術的支援,顯然不及windows。有一些技術文件乾脆說wince不支援鉤子。其實,不盡然。我們還是可以從coredll.dll中,得到一些有用的介面,來實現攔截一些簡單的鍵盤或滑鼠的動作。

還是**最有說服力:

#define wh_journalrecord     0

#define wh_journalplayback   1

#define wh_keyboard_ll      20

#define hc_action            0

typedef lresult    (callback* hookproc)(int code, wparam wparam, lparam lparam);

typedef hhook      (winapi *_setwindowshookexw)(int, hookproc, hinstance, dword);

typedef lresult    (winapi *_callnexthookex)(hhook, int, wparam, lparam);

typedef lresult    (winapi *_unhookwindowshookex)(hhook);

static _setwindowshookexw      sethook;

static _unhookwindowshookex    unhookhook;

static _callnexthookex         callnexthook;

hinstance g_hhookapidll    = null;

hhook     g_hkbdhook       = null;

hhook     g_hmousehook     = null;

lresult callback kbdhookcallback(int ncode, wparam wparam, lparam lparam);

lresult callback mousehookcallback(int ncode, wparam wparam, lparam lparam);

bool activatehook(hinstance hinstance, hookproc hookcallback);

bool deactivatehook();

bool activatehook(hinstance hinstance, hookproc hookproc)

;g_hmousehook = qasetwindowsjournalhook(wh_journalrecord, mousehookcallback, &msg);//這個是針對滑鼠的

if(null == g_hmousehook )

g_hhookapidll = loadlibrary(_t("coredll.dll"));

if(null == g_hhookapidll)

sethook = (_setwindowshookexw)getprocaddress(g_hhookapidll, _t("setwindowshookexw"));

if(null == sethook)

g_hkbdhook = sethook(wh_keyboard_ll, hookproc, hinstance, 0);

if(null == g_hkbdhook)

callnexthook = (_callnexthookex)getprocaddress(g_hhookapidll, _t("callnexthookex"));

if(null == callnexthook)

unhookhook = (_unhookwindowshookex)getprocaddress(g_hhookapidll, _t("unhookwindowshookex"));

if(null == unhookhook)

return true;

}bool deactivatehook()

if(g_hkbdhook != null)

if(g_hhookapidll != null)

return true;

}lresult callback kbdhookcallback(int ncode, wparam wparam, lparam lparam)}}

return callnexthook(g_hkbdhook, ncode, wparam, lparam);

}lresult callback mousehookcallback(int ncode, wparam wparam, lparam lparam)}}

return callnexthook( g_hmousehook, ncode, wparam, lparam );

}如果在乙個程式中啟動了鉤子,其他的程式使用鉤子將無效。

由於使用了微軟未公開的函式,可能會有潛在的問題,建議慎用。另,據說wm6.5以上,已經不支援滑鼠鉤子。

Windows Mobile上的簽名

之前在windows mobile平台上開發的程式都沒有用到過特權api,一直沒有關心過windows mobile平台上簽名的問題.但是現在的專案必須要使用特權api,不簽名就可能無法在使用者的手機上執行 其實並不是執行不起來,而是那些特權api會呼叫失敗,這樣就得不到正確的結果,就像程式有bug...

Windows Mobile上使用鉤子

wince系統對於鉤子技術的支援,顯然不及windows。有一些技術文件乾脆說wince不支援鉤子。其實,不盡然。我們還是可以從coredll.dll中,得到一些有用的介面,來實現攔截一些簡單的鍵盤或滑鼠的動作。還是 最有說服力 define wh journalrecord 0 define wh...

Windows Mobile上的藍芽點對點通訊

實驗室做短距離通訊,藍芽是其中主要技術之一。研究生入學複試的時候,大老闆跟我們說,藍芽的起源和一位彈鋼琴的人有關,因為藍芽用到了跳頻,這個和手指在各個琴鍵之間跳動的現象有一定的聯絡。各學科之間的碰撞,會出現一些奇妙的火花。在 windows mobile 平台上,如何來實現藍芽通訊呢?有好多人已經做...