Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   PeekMessage не работает должным образом (http://forum.oszone.net/showthread.php?t=310106)

амир-05 08-01-2016 17:25 2592494

PeekMessage не работает должным образом
 
Код:

#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 на форуме Сообщить модератору о нарушении

K.A.V. 10-01-2016 13:56 2593097

У меня ваш код работает без сбоя

Цитата:

Цитата амир-05
После вывода нескольких клавиш программа даёт сбой »

Ну так, смотрите, на чем ваш код спотыкается, отладчиком, GetLastError...Не слышали о таких штуках? Если не слышали - самое время загуглить и познакомиться с этими двумя замечательным возможностями из мира программирования


Время: 21:59.

Время: 21:59.
© OSzone.net 2001-