амир-05
08-01-2016, 17:25
#include<windows.h>
#include <iostream>
HHOOK _hook;
HINSTANCE hinstDLL;
int a;
LRESULT CALLBACK KeyProc(int code, WPARAM wParam, LPARAM lParam){
KBDLLHOOKSTRUCT * pStruct = (KBDLLHOOKSTRUCT *)lParam;
a=pStruct->vkCode;
return CallNextHookEx(_hook, code, wParam, lParam);
}
void SetHook(){
HINSTANCE hinstDLL = GetModuleHandle(NULL);
if (!(_hook = SetWindowsHookEx(WH_KEYBOARD_LL,KeyProc, hinstDLL,0)))
{
MessageBox(NULL, "Failed to install hook!", "Error", MB_ICONERROR);
}
}
int main(){
MSG msg;
SetHook();
while(true){
system("cls");
std::cout<<a;
PeekMessage(&msg,NULL,0,0,0);
}
}
Эта программа выводит код нажатой клавиши,даже когда она неактивна.После вывода нескольких клавиш программа даёт сбой.Я заменил PeekMessage на GetMessage и всё работало стабильно,но мне такой вариант не подходит.Помогите сделать программу стабильной с PeekMessage.
Amir_05_05 на форуме Сообщить модератору о нарушении
#include <iostream>
HHOOK _hook;
HINSTANCE hinstDLL;
int a;
LRESULT CALLBACK KeyProc(int code, WPARAM wParam, LPARAM lParam){
KBDLLHOOKSTRUCT * pStruct = (KBDLLHOOKSTRUCT *)lParam;
a=pStruct->vkCode;
return CallNextHookEx(_hook, code, wParam, lParam);
}
void SetHook(){
HINSTANCE hinstDLL = GetModuleHandle(NULL);
if (!(_hook = SetWindowsHookEx(WH_KEYBOARD_LL,KeyProc, hinstDLL,0)))
{
MessageBox(NULL, "Failed to install hook!", "Error", MB_ICONERROR);
}
}
int main(){
MSG msg;
SetHook();
while(true){
system("cls");
std::cout<<a;
PeekMessage(&msg,NULL,0,0,0);
}
}
Эта программа выводит код нажатой клавиши,даже когда она неактивна.После вывода нескольких клавиш программа даёт сбой.Я заменил PeekMessage на GetMessage и всё работало стабильно,но мне такой вариант не подходит.Помогите сделать программу стабильной с PeekMessage.
Amir_05_05 на форуме Сообщить модератору о нарушении