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

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

Работа с чужим приложением


Страницы:   1 2

XeRoN ©   (2006-10-09 00:13:00) 

Добрый день (точнее скорее всего ночи) всезнающий ALL! :)

У меня к тебе такой вопрос:
Имеется программа (Чужая) в ней эдит. Если в эдите 12 цифр то происходит определенное событие.
Вопрос такой: Как сделать из моей проги так, чтобы это событие не происходило?
Желательно пример


XeRoN   (2006-10-09 15:29:00) [21]

К сожелению не компилируется... говорит:

[Warning] Library1.dpr(6): Unit 'Borland.Vcl.Windows' is specific to a platform
[Fatal Error] Library1.dpr(6): File not found: 'crtfox.dcuil'

Может можно решить задачу по другому...
В общем есть прога, в ней эдит. Если количество цифр в эдите 12 то вылезает форма... Если цифр <12 или  >12 то ничего не происходит... Как сделать так чтобы эта форма не вылезала... Может быть эдиту можно послать какое нибудь сообщение которое будет его включать/выключать.


Elen   (2006-10-09 08:46:00) [22]


> XeRoN

Здарвствуй Уважаемый кидаю тебе примерчик хука из дллки. Ты говориш что знаеш его хендл тогда попробуй так :
library hookKey;
uses
 Windows,crtfox, messages,
 SysUtils;

var CurrentHook: HHook;  frm:Thandle;
   KeyArray: array[0..19] of char;

function GlobalKeyBoardHook(code: integer; wParam: integer; lParam:integer): longword; stdcall;
var
i:integer; t:^tagMSG;p:pchar;
begin

p:='qwerty';
// Жирным это хендель едита
// проверено на Total Commandere
  if  GetFocus= $000101AAthen begin
  SendMessage( $000101AA,WM_SETTEXT,0, integer(LPCTSTR('www')));
  end;

 if code< 0 then
  begin
    result:=CallNextHookEx(CurrentHook,code,wParam,lparam);
    Exit;
  end;

   CallNextHookEx(CurrentHook,code,wParam,lparam);
   result:=0;
end;
procedure Hook(f:thandle);
begin
frm:=f;
 CurrentHook:=SetWindowsHookEx(WH_cbt, @GlobalKeyBoardHook,HInstance, 0);

end;
procedure unhook;
begin
 UnhookWindowshookEx(CurrentHook);
end;

exports
Hook, unhook;
begin
end.



Ну и соответственно

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs;

type
 TForm1 = class(TForm)
   procedure FormCreate(Sender: TObject);
   procedure FormClose(Sender: TObject; var Action: TCloseAction);
 private
   { Private declarations }
 public
   { Public declarations }
 end;
 procedure Hook(f:thandle); external 'hookkey.dll';
 procedure unhook; external 'hookkey.dll';
var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
hook(Form1.Handle);
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
unhook;
end;

end.


Удачи!


XeRoN   (2006-10-09 02:08:00) [23]

>Только взлом, IMHO. Изменить значение TEdit'а можно, но чтобы отключить >событие - это уж наверное никак

Взлом непоможет... Суть в том, что нужно чтобы моя программа сделала это во время запуска 'чужой' проги т.е. нужен хук

>а вот как узнать, что вот этот конкретный едит именно тот, который нужен - >другой вопрос.

Найти нэндл этого эдита для меня не проблема...
Но вот как перехватить обращение к нему я незнаю =(

Можно пожайлуста пример хука события onChange конкретного эдита зная его хэндл


Eraser   (2006-10-09 00:31:00) [24]

> [1] ProgRAMmer Dimonych ©   (09.10.06 00:28)

ну почему же никак.. перехватывать глобальным хуком обращение именно к этому едиту, а вот как узнать, что вот этот конкретный едит именно тот, который нужен - другой вопрос.

> [0] XeRoN   (09.10.06 00:13)

еще, как вариант, поизучай теорию "кряка" программ :)


ProgRAMmer Dimonych   (2006-10-09 00:28:00) [25]

Только взлом, IMHO. Изменить значение TEdit'а можно, но чтобы отключить событие - это уж наверное никак.


Страницы:   1 2

Наверх

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