Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.04 c
2-1148063993
Golik
2006-05-19 22:39
2006.06.04
Запрос ! где ошибка ?


15-1146834675
Jeer
2006-05-05 17:11
2006.06.04
Еще один Gesserex ?


2-1147975150
Mr tray
2006-05-18 21:59
2006.06.04
WM_KEYDOWN не печатает символ


8-1136239895
DoSpyRap
2006-01-03 01:11
2006.06.04
ПЕРИОДИЧЕСКИЙ СОХРАНЕНИЕ ЭКРАНА


15-1147344034
Юрий Зотов
2006-05-11 14:40
2006.06.04
Звездные войны... :o)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский