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

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

Как украсть текст из Edit'a чужого приложения! [D6, D7]


serfom ©   (2004-01-25 16:29:00) 

Как украсть текст из Edit'a чужого приложения!


Woodpecker   (2004-01-27 14:20:00) [1]

>serfom ©  (25.01.04 16:29)

Кража текста является уголовно наказуемым деянием.


YuRock   (2004-01-26 21:19:00) [2]

А можно проще: GetWindowText(hEdit, @Buf, nBufLen)


serfom   (2004-01-26 21:08:00) [3]

Thanks


XenonXX   (2004-01-26 04:59:00) [4]


unit main;

interface

uses
 Windows, Messages, SysUtils, Forms, Graphics, ExtCtrls, StdCtrls,
 Controls, Classes, Buttons, Dialogs, ShellApi;

type
 TfrmAntiPassword = class(TForm)
   Shape1: TShape;
   Bevel2: TBevel;
   Label4: TLabel;
   GroupBox1: TGroupBox;
   Label3: TLabel;
   Label2: TLabel;
   Label1: TLabel;
   edtText: TEdit;
   edtClassName: TEdit;
   edtHandle: TEdit;
   Panel1: TPanel;
   Bevel1: TBevel;
   btnHelp: TSpeedButton;
   btnExit: TSpeedButton;
   Image1: TImage;
   Panel2: TPanel;
   SpeedButton1: TSpeedButton;
   SpeedButton2: TSpeedButton;
   Image2: TImage;
   procedure ImageMouseDown(Sender: TObject; Button: TMouseButton;
     Shift: TShiftState; X, Y: Integer);
   procedure ImageMouseUp(Sender: TObject; Button: TMouseButton;
     Shift: TShiftState; X, Y: Integer);
   procedure btnExitClick(Sender: TObject);
   procedure SpeedButton1Click(Sender: TObject);
   procedure SpeedButton2Click(Sender: TObject);
   procedure FormShow(Sender: TObject);
   procedure FormClose(Sender: TObject; var Action: TCloseAction);
   procedure edtHandleKeyUp(Sender: TObject; var Key: Word;
     Shift: TShiftState);
   procedure btnHelpClick(Sender: TObject);
 private
   procedure WMNCHITTEST(var M: TWMNCHitTest); message WM_NCHITTEST;
 end;

var
 frmAntiPassword: TfrmAntiPassword;

implementation

{$R *.dfm}
{$R 'antipsw.res'}

procedure TfrmAntiPassword.WMNCHitTest (var M:TWMNCHitTest);
begin
inherited;
 if M.Result = htClient then M.Result := htCaption;
end;

procedure TfrmAntiPassword.ImageMouseDown(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
 Screen.Cursors[100] := LoadCursor(hInstance,'CRS');
 Screen.Cursor := 100;
 Image1.Visible := false;
end;

procedure TfrmAntiPassword.ImageMouseUp(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
var
 p: PChar;
 point: TPoint;
 n: integer;
 s: string;
 h: HWND;
 buf: array [0..255] of char;
begin
 try
   point.X := Mouse.CursorPos.X;
   point.Y := Mouse.CursorPos.Y;
   H := WindowFromPoint(Point);
   edtHandle.Text := IntToStr(h);
   n := GetWindowTextLength(H);
   GetMem(p, n+1);
   GetWindowText(H, p, n+1);
   s := StrPas(p);
   edtText.Text := s;
   GetClassName(H, buf, SizeOf(Buf));
   edtClassName.Text := buf;
   AnimateWindow(Handle, 100, 1000);
 finally
   Screen.Cursor := crDefault;
   Image1.Visible := true;
 end;
end;

procedure TfrmAntiPassword.btnExitClick(Sender: TObject);
begin
 Close;
end;

procedure TfrmAntiPassword.SpeedButton1Click(Sender: TObject);
begin
 Application.Minimize;
end;

procedure TfrmAntiPassword.SpeedButton2Click(Sender: TObject);
begin
 Close;
end;

procedure TfrmAntiPassword.FormShow(Sender: TObject);
var
 RectSmall, RectNormal: TRect;
begin
 RectSmall := Rect(0, 0, 0, 0);
 RectNormal := BoundsRect;
 DrawAnimatedRects(Handle, IDANI_CAPTION, RectSmall, RectNormal);
end;

procedure TfrmAntiPassword.FormClose(Sender: TObject;
 var Action: TCloseAction);
var
 RectSmall, RectNormal: TRect;
begin
 RectSmall := Rect(0, 0, 0, 0);
 RectNormal := BoundsRect;
 DrawAnimatedRects(Handle, IDANI_CAPTION, RectNormal, RectSmall);
end;

procedure TfrmAntiPassword.edtHandleKeyUp(Sender: TObject; var Key: Word;
 Shift: TShiftState);
var
 p: PChar;
 n: integer;
 s: string;
 h: HWND;
 buf: array [0..255] of char;
begin
 if key = VK_RETURN then
 begin
   val(edtHandle.Text, h, n);
   if n <> 0 then
   begin
     ShowMessage('??????????, ??????? ????? ?????!'+sLineBreak+
         '?????????? ????? ???? ???????????'+sLineBreak+
         ' ?????? ? ???????????? ????.');
     exit;
   end;
   if not IsWindow(H) then
   begin
     ShowMessage('???? ? ???????????? '+IntToStr(h)+' ?? ???????');
     exit;
   end;
   GetMem(p, n+1);
   GetWindowText(H, p, n+1);
   s := StrPas(p);
   edtText.Text := s;
   GetClassName(H, buf, SizeOf(Buf));
   edtClassName.Text := buf;
 end;
end;

end.


Наверх

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