Я хочу переписать ctrl + c и ctrl + v на моей Windows 10 машине добавить некоторые дополнительные функции.
Я могу правильно копировать и вставлять и успешно создал клавиатуру для выполнения моего кода после нажатия этих клавиш, но у меня возникла проблема после нажатия ctrl , пока мой программа работает, ctrl непрерывно действует, как будто она удерживается. Даже после того, как я полностью завершил программу, ctrl продолжает действовать так, как будто она удерживается, пока я полностью не выйду из компьютера. Что я могу сделать, чтобы исправить это?
Спасибо!
Редактировать: после небольшого возни, я могу заключить, что любой ключ застрял. Shift и заглушки также застревают.
#include <Windows.h>
#include <stdio.h>
#include <queue>
using namespace std;
LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam) {
PKBDLLHOOKSTRUCT p = (PKBDLLHOOKSTRUCT)lParam;
if (wParam == WM_KEYDOWN) {
if (p->vkCode == 0x43 && GetKeyState(VK_CONTROL) & 0x8000) { // ctrl-c is pressed
WM_COPY;
}
else if (p->vkCode == 0x56 && GetKeyState(VK_CONTROL) & 0x8000) { // ctrl-v is pressed
OpenClipboard(NULL);
char* buffer;
buffer = (char*)GetClipboardData(CF_TEXT);
CloseClipboard();
cout << buffer;
}
return CallNextHookEx(NULL, nCode, wParam, lParam);
}
}
int main()
{
HHOOK keyBoard = SetWindowsHookEx(WH_KEYBOARD_LL, KeyboardProc, NULL, NULL);
MSG msg;
while (!GetMessage(&msg, NULL, NULL, NULL)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
UnhookWindowsHookEx(keyBoard);
}