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

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

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.02.2012, 15:55   #1
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,601
По умолчанию Получения кода нажатой клавиши

Добрый день. Примерно, второй час сижу и никак не могу найти функцию, которая, подобна GetAsyncKeyState, сможет асинхронно получить код клавиши. Надеюсь, что такая существует. Нужно, чтобы она работала без созданного окна т.е. в цикле. Возможно будет легче найти альтернативу, опираясь на код.
Код:
include '%fasminc%/win32ax.inc'
.data
Message db 'Нажат Enter',0
Caption db 'Внимание',0
.code
start:

lp:
         invoke GetAsyncKeyState,13
         mov ecx, eax
         JCXZ povtor
         invoke MessageBox,0,Message,Caption,MB_OK 
povtor:  jmp lp
         invoke ExitProcess,0
.end start
Google исключительно отправляет на функции для обработки сообщений, т.е. с уже существующим окном.
Заранее благодарен.
--
Извиняюсь, только сейчас заметил. Если можно исправите, пожалуйста, название темы на "Получение кода нажатой клавиши"

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог

Последний раз редактировалось _PROGRAMM_; 08.02.2012 в 16:43.
_PROGRAMM_ вне форума Ответить с цитированием
Старый 08.02.2012, 18:44   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а цель какая то?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 08.02.2012, 19:26   #3
ромик0
Форумчанин
 
Регистрация: 23.05.2011
Сообщений: 121
По умолчанию

Код:
GetKeyState();
ромик0 вне форума Ответить с цитированием
Старый 08.02.2012, 20:27   #4
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,601
По умолчанию

Цитата:
а цель какая то?
Пытаюсь сделать доброжелательный кейлогер(ну для повышения опыта). Он будет подобием файрвола. Не давать набирать адрес какого-то сайта. Знаю, что программа - бред, зато лучше изучу язык.
Цитата:
GetKeyState();
Я тоже так думал, но никак не могу найти ее прототип. Сейчас еще разок напрягусь.
--
Нашел прототип.
Код:
Uint8 *SDL_GetKeyState(int *numkeys);
Цитата:
Получает снимок текущего состояния клавиатуры. Текущее состояние возвращается как указатель на массив. Его размер сохраняется в numkeys. Массив проиндексирован SDLK_* символами (см. SDLKey). Значение 1 означает, что клавиша нажата, 0 - отпущена. Возвращаемый указатель показывает на внутреннюю структуру SDL. Он сохраняется в течении всей жизни приложения и не должен освобождаться
Возникает вопрос: является ли это оптимальным решением моей задачи? Если да, то каков длинны массив и какого размера у него значения(WORD,DWORD)?

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог

Последний раз редактировалось _PROGRAMM_; 08.02.2012 в 20:35.
_PROGRAMM_ вне форума Ответить с цитированием
Старый 08.02.2012, 21:11   #5
ромик0
Форумчанин
 
Регистрация: 23.05.2011
Сообщений: 121
По умолчанию

в windows.* ищи прототипы
ромик0 вне форума Ответить с цитированием
Старый 08.02.2012, 21:13   #6
ромик0
Форумчанин
 
Регистрация: 23.05.2011
Сообщений: 121
По умолчанию

ща тож попробую с
Код:
GetKeyState()
кей логер написаить.
ромик0 вне форума Ответить с цитированием
Старый 08.02.2012, 21:15   #7
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,601
По умолчанию

Цитата:
в windows.* ищи прототипы
Я в асм пишу, это не так просто.
В общем поискал. Лучше пользоваться GetKeyboardState. Тут статья, в которой рассматривается вариант без окон.

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог

Последний раз редактировалось _PROGRAMM_; 08.02.2012 в 21:26.
_PROGRAMM_ вне форума Ответить с цитированием
Старый 08.02.2012, 21:35   #8
ромик0
Форумчанин
 
Регистрация: 23.05.2011
Сообщений: 121
По умолчанию

открой нужную библиотеку через блокнот. должно получиться.
ромик0 вне форума Ответить с цитированием
Старый 11.02.2012, 22:56   #9
Skolos
Пользователь
 
Регистрация: 09.12.2011
Сообщений: 36
По умолчанию

GetKeyState() прекрасно лосит все клавиши. Сам писал подобный кейлогер. Вот только я не делал его скрытым(ловил клавиши нажатые при открытом окне программы)
А как создать прогу без окна хорошо описано в кныге "Делфи глазами хакера"М.Фленов. Кстати, там и создание кейлогера описано.
Skolos вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
код нажатой клавиши Delphi all_is_fear Помощь студентам 1 02.12.2011 10:35
Анализ нажатой клавиши monty "2" Помощь студентам 2 21.04.2010 17:42
Определение кода нажатой клавиши Fataller Общие вопросы C/C++ 8 07.11.2009 19:29
код нажатой клавиши galaid Общие вопросы Delphi 4 24.05.2009 20:03
вывести код нажатой клавиши fclmhooligan JavaScript, Ajax 0 22.10.2008 09:32