Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.02.2012, 18:35   #21
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

stdio.
Начните с самого начала.
У Вас Visual Studio 2010.
Создайте проект консольного приложения win32 (не CLR!)
В свойствах проекта раскройте ветку "Свойства конфигурации\Общие"
В поле "Набор символов" вместо "использовать набор символов юникода" поставьте
"не задано".
По коду.
Я ведь четко указал, что в lparam передается указатель на структуру KBDLLHOOKSTRUCT.
Одно из полей этой структуры передает скан-код клавиши.
Зачем же искать его в wparam, который передает идентификатор одного из четырех сообщений: WM_KEYDOWN, WM_KEYUP, WM_SYSKEYDOWN, WM_SYSKEYUP.

P/S/
Вам останется только перевести скан-код в виртуальный код с учетом текущей раскладки клавы.

Последний раз редактировалось EUGY; 27.02.2012 в 18:38.
EUGY вне форума Ответить с цитированием
Старый 27.02.2012, 18:51   #22
stdio
Форумчанин
 
Аватар для stdio
 
Регистрация: 14.02.2012
Сообщений: 105
По умолчанию

Код:
В поле "Набор символов" вместо "использовать набор символов юникода" поставьте
"не задано".
такого поля у меня нету(
stdio вне форума Ответить с цитированием
Старый 27.02.2012, 19:09   #23
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

надо бы поискать )
Изображения
Тип файла: jpg s.jpg (135.9 Кб, 42 просмотров)
EUGY вне форума Ответить с цитированием
Старый 27.02.2012, 19:50   #24
stdio
Форумчанин
 
Аватар для stdio
 
Регистрация: 14.02.2012
Сообщений: 105
По умолчанию

нашёл))) только после нажатия Ctrl+F5 появилось
значит исходит от сюда?

Код:
#include "stdafx.h"
#define  _WIN32_WINNT 0x0501
#include <windows.h>
HHOOK hhook = NULL;

LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{

	KBDLLHOOKSTRUCT* pkbs = (KBDLLHOOKSTRUCT*) lParam;
	if (WM_KEYDOWN==wParam)
	{
		char C[255];
		wsprintf(C,"нажата клавиша с кодом %x \n", pkbs->vkCode);
		OutputDebugString(C);
	}
	return CallNextHookEx(hhook, nCode, wParam, lParam);
}


int main()
{
	hhook = SetWindowsHookEx(WH_KEYBOARD_LL, LowLevelKeyboardProc ,0, 0);
	while (GetMessage(0,0,0,0));
	//UnhookWindowsHookEx(hhook);
	return 0;
}
ай да красота ни одной ошибки)))) можно даже кнопочкой F11 посмотреть как оно работает))))

From Stilet: Какого японца код выкладываешь не по правилам?! Учти за это карают! Оформляй код тегом по кнопке # в редакторе

Последний раз редактировалось Stilet; 27.02.2012 в 20:13.
stdio вне форума Ответить с цитированием
Старый 27.02.2012, 20:08   #25
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

Да исходи отсюда.
#define _WIN32_WINNT 0x0501 можно убрать. Это определение уже есть.
Окно консоли не нужно? Вместо того, чтоб его скрывать, смени подсистему:
Ветка "Свойства конфигурации\Компоновщик\Система"
В поле "подсистема" поставь "Windows (/SUBSYSTEM:WINDOWS)"
И тогда функция входа будет не _tmain, а
Код:
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
	hhook = SetWindowsHookEx(WH_KEYBOARD_LL, LowLevelKeyboardProc ,0, 0);
	while (GetMessage(0,0,0,0));
	return 0;
}
EUGY вне форума Ответить с цитированием
Старый 27.02.2012, 20:14   #26
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
//UnhookWindowsHookEx(hhook);
Зря заремил... Снимать хук кто будет?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.02.2012, 20:20   #27
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

//UnhookWindowsHookEx(hhook);
Никто, ведь это кейлогер ). while (GetMessage(0,0,0,0)); // вечный цикл
EUGY вне форума Ответить с цитированием
Старый 27.02.2012, 20:40   #28
stdio
Форумчанин
 
Аватар для stdio
 
Регистрация: 14.02.2012
Сообщений: 105
По умолчанию

Сильная тема))) в процессах видно зато в приложениях нет...
здесь я так понял надо обработать какие та сообщения? сообщений вызывающего потока
Код:
while (GetMessage(0,0,0,0));
stdio вне форума Ответить с цитированием
Старый 27.02.2012, 20:52   #29
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

Если бы приложение создавало окна, то да. А так это просто "затычка", чтобы программа не завершилась.
Поток в этой программе один.
В этом можно убедится, проверив идентификатор потока DWORD trdId = GetCurrentThreadId();
Он одинаковый, как в WinMain так и в LowLevelKeyboardProc.
EUGY вне форума Ответить с цитированием
Старый 27.02.2012, 21:00   #30
stdio
Форумчанин
 
Аватар для stdio
 
Регистрация: 14.02.2012
Сообщений: 105
По умолчанию

даже в выводе есть признаки жизни


Код:
"хуки.exe": Загружено: "C:\Users\SEGO\Documents\Visual Studio 2010\Projects\хуки\Debug\хуки.exe", Символы загружены.
"хуки.exe": Загружено: "C:\Windows\System32\ntdll.dll", Невозможно найти или открыть файл PDB
"хуки.exe": Загружено: "C:\Windows\System32\kernel32.dll", Невозможно найти или открыть файл PDB
"хуки.exe": Загружено: "C:\Windows\System32\KernelBase.dll", Невозможно найти или открыть файл PDB
"хуки.exe": Загружено: "C:\Windows\System32\user32.dll", Невозможно найти или открыть файл PDB
"хуки.exe": Загружено: "C:\Windows\System32\gdi32.dll", Невозможно найти или открыть файл PDB
"хуки.exe": Загружено: "C:\Windows\System32\lpk.dll", Невозможно найти или открыть файл PDB
"хуки.exe": Загружено: "C:\Windows\System32\usp10.dll", Невозможно найти или открыть файл PDB
"хуки.exe": Загружено: "C:\Windows\System32\msvcrt.dll", Невозможно найти или открыть файл PDB
"хуки.exe": Загружено: "C:\Windows\System32\msvcr100d.dll", Символы загружены.
"хуки.exe": Загружено: "C:\Windows\System32\imm32.dll", Невозможно найти или открыть файл PDB
"хуки.exe": Загружено: "C:\Windows\System32\msctf.dll", Невозможно найти или открыть файл PDB
нажата клавиша с кодом 7a 
нажата клавиша с кодом 7a 
нажата клавиша с кодом a2 
нажата клавиша с кодом 41 
нажата клавиша с кодом a2 
нажата клавиша с кодом 41 
нажата клавиша с кодом a2 
нажата клавиша с кодом a2 
нажата клавиша с кодом 43 
нажата клавиша с кодом a2 
нажата клавиша с кодом 43 
нажата клавиша с кодом a2 
нажата клавиша с кодом 43
stdio вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевод формул на язык програмирования (Pascal) spinogryz_ua Помощь студентам 7 16.01.2012 17:51
язык ассемблера nastya_m Помощь студентам 5 07.12.2011 13:15
Перевод программы на русский язык. shivo Фриланс 1 05.01.2011 15:20
помогите с написанием бат файла Aivar Помощь студентам 2 24.09.2008 22:58