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

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

Сгенерировать событие OnClick у кнопки чужого окна


delphimun ©   (2003-06-18 14:41:00) 

Допустим есть форма с caption-ом "Window", а на этой форме кнопка c caption-ом "Add", как сгенерировать событие OnClick на кнопке с caption-ом "Add"?
Заранее благодарен.


delphimun   (2003-06-18 19:28:00) [1]

mrcat Больщое спасибо, я правда уже сам разобрался без этой непонятной ф-ии:
var
w_handle:integer;
b_handle:integer;
my_string:string;
begin
my_string:="aaa";
w_handle:= FindWindow(nil, "abc");
b_handle:= FindWindowEx(w_handle, 0, nil, "Open");
SendMessage(b_handle, wm_LButtondown, 0, 0);
SendMessage(b_handle, wm_LButtonUp, 0, 0);
end;


mrcat   (2003-06-18 19:07:00) [2]

Плохо искал ;)

function RestructElements(aHandle: HWND; aInfo: Pointer): boolean; stdcall;
begin
result := true; // must be TRUE! See F1 :)
end;

hProg := FindWindow(nil, моя_программа);
if hProg <> 0 then
begin
EnumChildWindows(integer(hProg), @RestructElements, 0);
end;


этот код работает.


delphimun   (2003-06-18 18:57:00) [3]

Обыскал почти все, а кроме примеров на С++ ничего не нашел, может кто покажет пример или кинет ссылочку


[NIKEL]   (2003-06-18 18:06:00) [4]

слушай, не парься... зайди на Королевство Дельфи и почитай статью прям то что тебе надо - ссылки не помню, зайди и посмотри в прошедших новостях


delphimun   (2003-06-18 17:18:00) [5]

А как работает EnumChildWindows? Вот, что я сней там настряпал, но ничего не работает:

program Project1;

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

var
a:integer;
hwnd:integer;
function EnumChildProc(HWND:THandle; lParam:LPARAM):boolean;stdcall;
begin
showmessage(inttostr(hwnd)); //я предполагаю, что это и есть //описатель дочернего компанента
Result:=True;
end;

begin

hwnd := findwindow(nil,"Form1");
a := EnumChildWindows(hwnd,@EnumChildProc, 1);{зачем нужен параметр iparam? И вот сдесь у меня ошибка несоответствия типов integer и longbool.}
end.
Вобщем я совсем запутался, не мог бы кто скинуть мне примерчик кода.Я знаю caption дочернего окна, мне нужно получить его описатель


Chieftain   (2003-06-18 15:20:00) [6]

Хым, получить хендл нужного окна (EnumWindows), потом получить хендл кнопки(EnumChildWindows), потом послать кнопке сообщение(SendMessage). Короче, без WinAPI - никак.


mrcat   (2003-06-18 15:08:00) [7]

[ BM_CLICK]


Наверх

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