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

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

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 15 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

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

Здравствуйте, подскажите пожалуйста, почему выводит код клавиши дважды? и как это пофиксить?
Код:
#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,873
Репутация: 1915
По умолчанию

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

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
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


16:51.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.