JournalRecordProc 配合 WH_JOURNALRECORD 鉤子類型,用於攔截並記錄系統範圍內的所有輸入事件(滑鼠移動、點擊、鍵盤按鍵等)。它是實現「巨集錄製器」的核心。
function JournalRecordProc(
nCode: Integer; // 鉤子代碼
wParam: WPARAM; // 訊息 ID(如 WM_MOUSEMOVE, WM_KEYDOWN)
lParam: LPARAM // 指向 EVENTMSG 結構
): LRESULT; stdcall;
CallNextHookEx;通常為 HC_ACTION (0),表示有事件發生需處理。WM_*)。EVENTMSG 結構:
type
tagEVENTMSG = record
message: UINT; // 訊息 ID
paramL: UINT; // 低位參數
paramH: UINT; // 高位參數
time: DWORD; // 事件時間戳
hwnd: HWND; // 目標視窗句柄
end;
SetWindowsHookEx(WH_JOURNALRECORD, @JournalRecordProc, hInstance, 0) 安裝系統級鉤子。EVENTMSG 並呼叫 JournalRecordProc。UnhookWindowsHookEx 卸載鉤子。考慮使用 Raw Input API、UI Automation 或 Windows Hooks (WH_KEYBOARD_LL / WH_MOUSE_LL) 實現低權限、高可靠性的輸入監聽與記錄。