[英]how can i prevent (winapi keyboard hook hooking keybd_event)?
first, sorry my english! 首先,对不起我的英语! hi guys, i want to make something when i press the "x" then "ax" this is code ----------------- 嗨,大家好,我想按一下[x]然后按[ax],这是代码-----------------
#include "stdafx.h"
using namespace std;
HHOOK hKBHook;
UINT TimerId;
UINT TimerId1;
VOID CALLBACK DelayX(HWND hWnd, UINT nMsg, UINT nIDEvent, DWORD dwTime) {
keybd_event(65, 0, WM_KEYDOWN, 0);
keybd_event(65, 0, WM_KEYUP, 0);
keybd_event(88, 0, WM_KEYDOWN, 0);
keybd_event(88, 0, WM_KEYUP, 0);
KillTimer(NULL, TimerId);
}
VOID CALLBACK XSPlay(HWND hWnd, UINT nMsg, UINT nIDEvent, DWORD dwTime) {
PlaySound(TEXT("tocks.wav"), NULL, SND_ASYNC);
KillTimer(NULL, TimerId1);
}
LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
if (wParam == WM_KEYDOWN)
{
PKBDLLHOOKSTRUCT pKey = (PKBDLLHOOKSTRUCT)lParam;
cout << pKey->vkCode << " ";
switch (pKey->vkCode)
{
case 88:
{
PlaySound(TEXT("tocks.wav"), NULL, SND_ASYNC);
KillTimer(NULL, TimerId1);
TimerId1 = SetTimer(NULL, 0, 297, &XSPlay);
TimerId = SetTimer(NULL, 0, 290, &DelayX);
return 1;
}
case 19:
{
UnhookWindowsHookEx(hKBHook);
return 1;
}
}
}
CallNextHookEx(hKBHook, nCode, wParam, lParam);
return 0;
}
int _tmain(int argc, _TCHAR* argv[]) {
HMODULE hInstance = GetModuleHandle(NULL);
hKBHook = SetWindowsHookEx(WH_KEYBOARD_LL, KeyboardProc, hInstance, NULL);
MSG Msg;
while (GetMessage(&Msg, NULL, 0, 0)) {DispatchMessage(&Msg);}
UnhookWindowsHookEx(hKBHook);
return 0;
}
the problem is press x -> send ax -> hooked this x too -> send ax ---------- loop and i'm really noob maybe many another codes are need improvement. 问题是按x->发送ax->也迷上了x->发送ax ----------循环,我真的很菜,也许还有很多其他代码需要改进。 give me your advise for learning C++ :) thanks for reading! 给我您学习C ++的建议:)感谢您的阅读!
看看这个你也许可以使用额外的信息参数指定,如果这是你自己的X模拟,以防止环路
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.