Форум: "Основная";
Текущий архив: 2002.02.14;
Скачать: [xml.tar.bz2];
ВнизСвязь между приложениями Найти похожие ветки
← →
USAtyj (2002-01-30 12:36) [3]Вот код для определения хендлов всех (почти) контролов на нужной форме. В нужный эдит вводится текст.
Нажатие кнопки, если че, тоже через SendMessage.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Printers, ExtCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
Button2: TButton;
Label1: TLabel;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
handleF:HWND;
handleARR: array [1..100000] of HWND;
handleID: array [1..100000] of integer;
i,n:integer;
implementation
{$R *.DFM}
procedure TForm1.Button2Click(Sender: TObject);
var NRetries:integer;
iError:string;
Buff: array [0..256] of Char;
begin
NRetries:=0;
iError:="";
handleF:=0;
handleF:=FindWindow(nil,PChar("MyProgram")); // MyProgram - заголовок окна, которое надо найти и в котором контролы определить
if handleF <> 0 then begin
Memo1.Lines.Add("Найдено окно");
n:=0;
for i:=0 to 1000000 do begin
if GetDlgItem(handleF,i)<>0 then begin
n:=n+1;
handleARR[n]:=GetDlgItem(handleF,i);
handleID[n]:=i;
Memo1.Lines.Add(IntToStr(i));
end;
end;
Memo1.Lines.Add("Всего:="+IntToStr(n));
end else begin
iError:="Окно не найдено";
end;;
Memo1.Lines.Add(iError);
for i:=1 to n do begin
if handleID[i] = 8976 then begin
SendMessage(handleARR[i],WM_SETTEXT,0, integer(pchar("9w900888"))); // здесь контролу с хендлом 8976 присваивается текст "9w900888"
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Close;
end;
end.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.02.14;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.003 c