Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.08.21;
Скачать: CL | DM;

Вниз

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

 
delphimun   (2003-06-18 14:41) [0]

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


 
mrcat ©   (2003-06-18 15:08) [1]

[ BM_CLICK]


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

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


 
delphimun   (2003-06-18 17:18) [3]

А как работает 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 дочернего окна, мне нужно получить его описатель


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

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


 
delphimun   (2003-06-18 18:57) [5]

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


 
mrcat ©   (2003-06-18 19:07) [6]

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

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 19:28) [7]

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;



Страницы: 1 вся ветка

Текущий архив: 2003.08.21;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.016 c
1-68363
Толик
2003-08-07 12:49
2003.08.21
DllEntryPoint


1-68389
Olegka
2003-08-07 17:30
2003.08.21
Диалог сохранения в папку


14-68480
ZeroDivide
2003-08-06 09:00
2003.08.21
С начала я бросил курить...


14-68556
VEG
2003-08-04 20:20
2003.08.21
На каком основании форум показывает/скрывает в


1-68297
^^^Dragon^^^
2003-08-06 17:24
2003.08.21
Переменные