: 而是在於我不光是要攔截到某個鍵被按下
: 還要依照當時的狀態判斷,是要將該按鍵訊息放回原本的視窗還是要吃掉它 ^^"
: (因為有這部份的要求
: 所以我改掉 PostMessage 和本來全部都會 CallNextHookEx 的部份)
: 就是這部份會發生很多問題
我就想說我應該也有這個判斷啊…剛剛才發現我貼錯程式了!
我是全部使用 SendMessage,全部由 VB 判斷是否要吃掉。
曾經試過要在 C 裡面判斷,不過那時做不出來…
由 VB 這裡判斷,整個邏輯還單純,我用都好好的,並不會有不穩的情況。
效率上也感覺不出任何影響,人打字的速度再快也比不過電腦處理的速度。
#define MYWM_KEYB_MESSAGE WM_USER + 2
#define EAT_MESSAGE 1
static LRESULT WINAPI KeyboardHook_HookProc(int nCode, WPARAM wParam,
LPARAM lParam)
{
LRESULT lResult;
lResult = 0;
if (nCode == HC_ACTION)
lResult = SendMessage(g_hwndPost, MYWM_KEYB_MESSAGE,
wParam, lParam);
if (lResult == 0 || nCode < 0) {
lResult = CallNextHookEx(g_hhook, nCode, wParam, lParam);
return lResult;
}
return EAT_MESSAGE;
}
Private Const MYWM_HOTKEY As Long = WM_USER + 2
Private Const EAT_MESSAGE As Long = 1
Private Const NOEAT_MESSAGE As Long = 0
Case MYWM_HOTKEY
If RunKeyFunction(wp, lp) Then
WndProc = EAT_MESSAGE
Else
WndProc = NOEAT_MESSAGE
End If
Exit Function
--
ChrisTorng http://groups.msn.com/ChrisTorng
ChrisTorng 樣式訊息記錄 V2.1 正式推出
http://groups.msn.com/ChrisTorng/msn6messagelog.msnw
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 203.75.28.114