pls私は自分のコードで何が間違っていたかを修正するのに役立つ必要があります。私はコードを実行し、バグやエラーはありませんが、私は組み合わせを試してみると、それは( "キーAはブロックされている"これは月曜日までに。ここでは、コードは次のとおりです。キーボードのフックを正しく使用してキーをブロックし、Cキーでブロックを解除するためにキーの組み合わせを押す方法
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <Windows.h>
#include <sstream>
#define _WIN32_WINNT 0x050
using namespace std;
string intToHexString(int intValue) {
string hexStr;
/// integer value to hex-string
stringstream sstream;
sstream << "0x" << hex << (int)intValue;
hexStr = sstream.str();
sstream.clear(); //clears out the stream-string
return hexStr;
}
LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam) {
BOOL locked = FALSE;
PKBDLLHOOKSTRUCT hookStruct;
if (nCode == HC_ACTION) {
switch (wParam)
{
case WM_KEYDOWN:
case WM_SYSKEYDOWN:
case WM_KEYUP:
case WM_SYSKEYUP:
hookStruct = (PKBDLLHOOKSTRUCT)lParam;
/**
* this is where the problem is
*/
//ctrl+alt+n
if (hookStruct->vkCode == 0x11 && hookStruct->vkCode == 0x12 && hookStruct->vkCode == 0x4E
&& !locked) {
locked = TRUE;
if (hookStruct->vkCode == 0x41) {
cout << "The key A is blocked" << endl;
return 1;
}
}
else if (hookStruct->vkCode == 0x11 && hookStruct->vkCode == 0x12 && hookStruct->vkCode == 0x4E) {
locked = FALSE;
BlockInput(locked);
cout << "The key is unblocked" << endl;
}
else {
return CallNextHookEx(NULL, nCode, wParam, lParam);
}
}
}
return CallNextHookEx(NULL, nCode, wParam, lParam);
}
int main()
{
char key_pressed;
int ascii_value;
string key_press_special;
HHOOK hhkLowLevelKybd = SetWindowsHookEx(WH_KEYBOARD_LL, LowLevelKeyboardProc, 0, 0);
cout << "press any key to see it's Character, ASCII and Scan Code" << endl;
cout << "Press ESC key to Exit" << endl;
while(1) {
key_pressed = _getch();
if (key_pressed == 13) {
key_press_special = "Enter";
cout << "Character: " << key_press_special << endl;
}
else if (key_pressed == 9) {
key_press_special = "Tab";
cout << "Character: " << key_press_special << endl;
}
else if (key_pressed == 27) {
key_press_special = "ESC";
cout << "Character: " << key_press_special << endl;
}
else {
cout << "Character: " << key_pressed << endl;
}
ascii_value = key_pressed;
cout << "The ASCII Value is: " << ascii_value << endl;
int scan = MapVirtualKey(ascii_value, 0);
string scanCode = intToHexString(scan);
cout << "Scan Code is: " << scanCode << endl;
if (key_pressed == 27) {
break;
}
else {
continue;
}
}
UnhookWindowsHookEx(hhkLowLevelKybd);
return 0;
}
Plsはあなたが間違いを見たときに批判すること自由に感じ、私はまだ学んでいます。
を***私は、コードを実行し、何のバグやエラーがないが、私は組み合わせを試してみると、それはやってたとしているもの行いません** *バグの定義ではありませんか? – drescherjm
*** hookStruct-> vkCode == 0x11 && hookStruct-> vkCode == 0x12 && hookStruct-> vkCode == 0x4E ***これは決して真実ではありません。 – drescherjm
申し訳ありませんが定義されていたことを知らなかった –