Форум: "WinAPI";
Текущий архив: 2006.06.04;
Скачать: [xml.tar.bz2];
ВнизВзаимодействие с чужими окнами Найти похожие ветки
← →
lis1985 (2006-03-03 20:04) [0]Как поставить флажок в CheckBox чужого окна?
← →
Handle (2006-03-03 20:21) [1]Вот нашёл в Delphi World сам не пробвл.
var
h1, h2: hwnd;
begin
h1 := FindWindow("classname","caption");
h2 := FindWindowEx(h1, 0, "TCheckBox", "Флажок");
SendMessage(h2, BM_SetCheck, 1, 0);
end;
← →
lis1985 (2006-03-04 06:22) [2]Что-то не хочет работать. Вот такой вопрос возник, вот в этих кавычках "Флажок" что указывается?.
← →
GanibalLector © (2006-03-04 13:30) [3]2 lis1985 (04.03.06 06:22) [2]
И не будет,пока ты не найдешь имена и классы окон. Поможет тебе сканер окон,который покажет названия и классы форм.Кстати, FindWindowEx может быть несколько.
← →
Handle (2006-03-04 16:10) [4]
> GanibalLector © (04.03.06 13:30) [3]
> Поможет тебе сканер окон,который покажет названия и классы
> форм
Например Greatis WinDowse.
> lis1985 (04.03.06 06:22) [2]
> Что-то не хочет работать. Вот такой вопрос возник, вот
> в этих кавычках "Флажок" что указывается?.
Имя искомого окна указывается, если у тебя CheckBox один но ты не знаешь как его зовут можно по классу.FindWindowEx(h1, 0, "TCheckBox", nil);
← →
lis1985 (2006-03-04 19:11) [5]Окно-то я нашёл, а вот CheckBox не определяет
← →
lis1985 (2006-03-04 19:17) [6]У меня там 2 CheckBox
← →
Handle (2006-03-04 20:12) [7]
procedure TForm1.Button1Click(Sender: TObject);
var
h1, h2: hwnd;
begin
h1 := FindWindow(nil,"окно");
if h1 = 0 then
begin
ShowMessage("Окно не найдено !!");
Exit;
end
else
begin
h2 := FindWindowEx(h1, 0, nil, "надпись на checkbox"е");
if h2 <> 0 then
begin
SendMessage(h2, BM_SetCheck, 1, 0);
end
else
begin
ShowMessage("CheckBox не найден!!");
end;
end;
end;
Найди в инете и скачай программу Greatis WinDowse, определи класс и(или) имя.
← →
Handle (2006-03-04 20:24) [8]
> Найди в инете и скачай программу Greatis WinDowse, определи
> класс и(или) имя.
А лучше сделай так.procedure TForm1.Timer1Timer(Sender: TObject);
var
s: string;
h: HWND;
buf: array [0..127] of Char ;
begin
Timer1.Interval:= 1 ;
h := WindowFromPoint(Mouse.CursorPos);
SetLength(s, SendMessage(h, WM_GETTEXTLENGTH, 0, 0)+1);
SendMessage(h, WM_GETTEXT, length(s), Integer(PChar(s)));
SetLength(s, lStrLen(PChar(s)));
GetClassName(h,buf,127);
Label1.Caption := "Имя окна - " + s;
Label2.Caption:= "Имя класса - " + buf ;
end;
← →
n0name (2006-03-05 07:36) [9]Находишь первый checkbox потом GetNextWindow.
← →
lis1985 (2006-03-12 10:18) [10]И ещё вот такой вопрос. Как заполнить Edit чужого окна?
← →
Handle (2006-03-12 10:54) [11]
procedure TForm1.Button2Click(Sender: TObject);
begin
Form2.Show;
Form2.FormStyle:= fsStayOnTop;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
h1, h2: hwnd;
begin
h1 := FindWindow(nil,"Form2");
if h1 = 0 then
begin
ShowMessage("Окно не найдено !!");
Exit;
end
else
begin
h2 := FindWindowEx(h1, 0, "TEdit", nil);
if h2 <> 0 then
begin
SendMessage(h2, WM_SETTEXT, 0, Integer(PChar("ТЕКСТ")));
end
else
begin
ShowMessage("TEdit не найден!!");
end;
end;
end;
← →
Lis1985 (2006-03-12 12:35) [12]Ок. Спасибо.
← →
Lis1985 (2006-03-12 13:52) [13]Если у меня два "Edit"? и как пользоваться GetNextWindow?
← →
Handle (2006-03-12 13:59) [14]
var
Form1: TForm1;
h1, h2: hwnd;
implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
h1 := FindWindow(nil,"Form2");
if h1 = 0 then
begin
ShowMessage("Окно не найдено !!");
Exit;
end
else
begin
h2 := FindWindowEx(h1, 0, "TEdit", nil);
if h2 <> 0 then
begin
SendMessage(h2, WM_SETTEXT, 0, Integer(PChar("ТЕКСТ")));
end
else
begin
ShowMessage("TEdit не найден !!");
end;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Form2.Show;
Form2.FormStyle:= fsStayOnTop;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
h2 := GetWindow(h2, GW_HWNDNEXT);
SendMessage(h2, WM_SETTEXT, 0, Integer(PChar("ТЕКСТ")));
end;
← →
Lis1985 (2006-03-12 14:23) [15]Что-то не получается! У меня есть два Edit на чужом окне. Мне необходимо заполнить 2ой Edit, а заполняется первый.
← →
Handle (2006-03-12 14:29) [16]
> Lis1985 (12.03.06 14:23) [15]
> Что-то не получается! У меня есть два Edit на чужом окне.
> Мне необходимо заполнить 2ой Edit, а заполняется первый.
>
Сосредаточься, внимательно посмотри на экран компьютера и мысленно передай мне код своей программы, частота передачи 123456789 Гц.
← →
Lis1985 (2006-03-12 14:42) [17]Значит, нашёл главное окно:
h1 := FindWindow(nil,"Вход");
Окно "Вход" имеет два "Edit".
Нахожу "Edit":
h2 := FindWindowEx(h1, 0, "Edit", " ");
но находится не тот "Edit", который мне нужен. Внимание вопрос! Как найти "Edit", который мне нужен?
← →
Handle (2006-03-12 15:09) [18]Кто нибудь отведите меня в поле и пристрелите.
← →
Lis1985 (2006-03-12 22:02) [19]Что не понятно-то?
← →
Lis1985 (2006-03-12 22:26) [20]В окне имеется два одинаковых "Edit".
Таким образом я нахожу и изменяю содержимое 1ого "Edit":
h1 := FindWindow(nil,"Вход");
h2 := FindWindowEx(h1, 0, "Edit", nil);
SendMessage(h2, WM_SETTEXT, 0, Integer(PChar("ТЕКСТ")));
Как мне изменить содержимое 2ого "Edit"?
← →
Handle (2006-03-13 07:45) [21]
procedure TForm1.Button1Click(Sender: TObject);
var
h1, h2: hwnd;
begin
h1 := FindWindow(nil,"Form2");
h2 := FindWindowEx(h1, 0, "TEdit", nil); // Текст появится в Edit2
//h2 := GetWindow(h2, GW_HWNDNEXT); // <- Если добавишь эту строчку, то в Edit1
SendMessage(h2, WM_SETTEXT, 0, Integer(PChar("ТЕКСТ")));
end;
Если у тебя три и больше TEdit, то текст добавляется в последний созданный
← →
n0name (2006-03-13 09:51) [22]
h1 := FindWindow(nil,"Вход");
h2 := FindWindowEx(h1, 0, "Edit", nil);
h2 := GetNextWindow(h2, GW_HWNDNEXT);
SendMessage(h2, WM_SETTEXT, 0, Integer(PChar("ТЕКСТ")));
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2006.06.04;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.039 c