Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > C++ > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 05.01.2018, 13:26   #1
DarkJoker
Пользователь
 
Регистрация: 12.08.2014
Сообщений: 25
Вопрос выводит в консоль дважды

Здравствуйте, подскажите пожалуйста, почему выводит код клавиши дважды? и как это пофиксить?
Код:
#define _CRT_SECURE_NO_WARNINGS

#include "stdafx.h"
#include "Windows.h"
#include <iostream>
using namespace std;

HHOOK hookHandle;

LRESULT CALLBACK keyHandler(int nCode, WPARAM wParam, LPARAM lParam);

int _tmain(int argc, _TCHAR* argv[]) {

	hookHandle = SetWindowsHookEx(WH_KEYBOARD_LL, keyHandler, NULL, 0);

	if (hookHandle == NULL) {
		cout << "ERROR CREATING HOOK: ";
		cout << GetLastError() << endl;
		getchar();
		return 0;
	}

	MSG message;

	while (GetMessage(&message, NULL, 0, 0) != 0) {
		TranslateMessage(&message);
		DispatchMessage(&message);
	}

	cout << "Press any key to quit...";


	UnhookWindowsHookEx(hookHandle);

	return 0;
}


LRESULT CALLBACK keyHandler(int nCode, WPARAM wParam, LPARAM lParam) {
	cout << "Hello!" << endl;

	// Checks whether params contain action about keystroke
	if (nCode == HC_ACTION) {
		cout << ((KBDLLHOOKSTRUCT *)lParam)->vkCode << endl;
	}

	return CallNextHookEx(hookHandle, nCode,
		wParam, lParam);
}
DarkJoker вне форума Ответить с цитированием
Старый 05.01.2018, 15:05   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 5,996
По умолчанию

Потому что клавиша сначала нажимается, потом отпускается.
Прочитайте что содержит WPARAM.
waleri вне форума Ответить с цитированием
Старый 05.01.2018, 19:33   #3
DarkJoker
Пользователь
 
Регистрация: 12.08.2014
Сообщений: 25
По умолчанию

Спасибо! разобрался =)
DarkJoker вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
MS Visual Studio C++ проблема с калькулятором не выводит корень(не консоль) Spfrezen Помощь студентам 1 08.02.2015 12:32
с++,циклическая очередь, сразу норм выводит, а потом на где-то логика нарушается и неправильно выводит nati_94 Помощь студентам 2 17.03.2013 14:29
Дважды два. jojahti Свободное общение 68 29.01.2010 11:53
Почему выполняется дважды? MAKEDON Помощь студентам 1 17.05.2009 15:06