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

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

послать текст в поле Edit другого приложения [D7, XP]


Avokain ©   (2007-02-16 17:45:00) 

есть 2 приложения 1 должно послать текст в поле Edit др приложения
можно ли это сделать через sendmessage и как тогда найти хэндл именно этого Edit?


Avokain   (2007-02-17 18:13:00) [1]

Причем здесь сеть то?


Observer   (2007-02-17 15:55:00) [2]

Используй ServerSocket и ClientSocket на вкладке Internet


Avokain   (2007-02-17 15:03:00) [3]

Немного поправлю Calibr'a
подсказали мне тут фишка вот в чем
h := FindWindowEx(Handle, 0, 'EDIT', 'То что у вас изначально задано в поле Edit'); если конечная прога НЕ на делфи

h := FindWindowEx(Handle, 0, 'Tedit', 'То что у вас изначально задано в поле Edit');если она НА делфи

SendMessage(h, WM_SETTEXT, 0, LongInt(PCHAR(s))); у меня так работало

приведу код :
procedure TForm1.Button1Click(Sender: TObject);
var
 h1, h2: hwnd;s:string;
begin
s:='19:06:00'
 h1 := FindWindow(nil, 'AC');
 h2 := FindWindowEx(h1, 0, 'TEdit', '18:06:00');
 SendMessage(h2, WM_SETTEXT, 0, longint(Pchar(s)));
end;

AC - так называется заголовок др. проги
18:06:00 - Это текст который я задал непосредсвенно при разработке др проги в свойсве Text. При чем даже если этот текст изменить в процессе хода программы то хандл все равно ловится(хз почему)

S- текст для посылки


vasIZmax   (2007-02-17 02:08:00) [4]

не получается у меня, хоть у баньте.

получилось только заголовок окна сменить и все. а как в едит передать текст(?), не доходит никак....


Calibr   (2007-02-16 21:27:00) [5]

Узнаешь Handle окна 2-го приложения (FindWindow(<класс окна>, <заголовок окна>), если не знаешь заголовок или класс заменяешь на nil)

h: hWnd;
s: String;
...
h := FindWindowEx(Handle, 0, 'edit', nil);
s := 'Нужный текст!';
SendMessage(h, WM_SETTEXT, 0, lParam(s));


или

s := 'Нужный текст!';

EnumChildWindows(handle, @ENUM, 0);

function ENUM(h: hWnd; l: Integer): Boolean;stdcall;
var
 Buff: array[0..127] of Char;
begin
 GetClassName(h, Buff, SizeOf(Buff));

 if String(Buff) = 'TEdit' then
   SendMessage(h, WM_SETTEXT, 0, lParam(s));

 Result := true;
end;


Должно получиться!


Наверх

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