這裏是我的函數的原型:JOURNALRECORDPROC確定鍵按下
LRESULT CALLBACK JournalRecoProc(int code, WPARAM wParam, LPARAM lParam)
{
}
如何,我可以檢查中,如果有ENTER或鼠標左鍵點擊? 我想應該使用lParam,但我找不到。
這裏是我的函數的原型:JOURNALRECORDPROC確定鍵按下
LRESULT CALLBACK JournalRecoProc(int code, WPARAM wParam, LPARAM lParam)
{
}
如何,我可以檢查中,如果有ENTER或鼠標左鍵點擊? 我想應該使用lParam,但我找不到。
作爲MSDN says:
如果掛鉤過程在範圍返回消息WM_KEYFIRST到 WM_KEYLAST中,以下條件適用:
- 的的paramL構件EVENTMSG結構指定了p鍵的虛擬鍵碼ressed。
- paramH成員EVENTMSG結構指定掃描碼。
- 沒有辦法指定重複次數。這個事件總是被用來代表一個關鍵事件。
那麼您就可以訪問它是這樣的:
LRESULT CALLBACK JournalPlaybackProc(int code, WPARAM wParam, LPARAM lParam)
{
// ... blah blah ...
if (code == HC_GETNEXT)
{
// examine eventmsg
EVENTMSG *pEvent = (EVENTMSG*)lParam;
// keypress
if (pEvent->message >= WM_KEYFIRST &&
pEvent->message <= WM_KEYLAST)
{
// decode key press
unsigned int uVirtualKeyCode = pEvent->paramL;
unsigned int uScanCode = pEvent->paramH;
// do your conditional checks here
if (uVirtualKeyCode == VK_ENTER)
{
// Enter key was pressed
}
}
else if (pEvent->message == WM_LBUTTONDOWN)
{
// left mouse click
}
else // ... add checks for other messages ....
}
// ... blah blah ...
}
根據MSDN:http://msdn.microsoft.com/en-us/library/windows/desktop/ms644982% 28v = vs.85%29.aspx EVENTMSG ::從WM_KEYFIRST到WM_KEYLAST的消息 - 鍵盤,否則是其他內容。 –
這些日子的日誌鉤子非常難以實現,在嘗試設置鉤子時,幾乎總會遇到訪問被拒絕的錯誤。鍵盤記錄器不是很受用戶歡迎。需要繞過UIPI,這需要清單,證書和正確的安裝位置。不要認爲你在XP上看到的東西會在其他機器上很好地重現。 –