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上使用鉤子
wince系統對於鉤子技術的支援,顯然不及windows。有一些技術文件乾脆說wince不支援鉤子。其實,不盡然。我們還是可以從coredll.dll中,得到一些有用的介面,來實現攔截一些簡單的鍵盤或滑鼠的動作。還是 最有說服力 define wh journalrecord 0 define wh...
Windows Mobile上的簽名
之前在windows mobile平台上開發的程式都沒有用到過特權api,一直沒有關心過windows mobile平台上簽名的問題.但是現在的專案必須要使用特權api,不簽名就可能無法在使用者的手機上執行 其實並不是執行不起來,而是那些特權api會呼叫失敗,這樣就得不到正確的結果,就像程式有bug...
Windows Mobile上的藍芽點對點通訊
實驗室做短距離通訊,藍芽是其中主要技術之一。研究生入學複試的時候,大老闆跟我們說,藍芽的起源和一位彈鋼琴的人有關,因為藍芽用到了跳頻,這個和手指在各個琴鍵之間跳動的現象有一定的聯絡。各學科之間的碰撞,會出現一些奇妙的火花。在 windows mobile 平台上,如何來實現藍芽通訊呢?有好多人已經做...