Главная страница
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.014 c
14-68550
edik
2003-08-02 16:38
2003.08.21
Где взять документацию


3-68183
KONST
2003-07-28 17:42
2003.08.21
Помогите новичку. Как с помощью IBDatabase подключиться к базе.


14-68475
vopros
2003-08-06 10:09
2003.08.21
Приехал из отпуска. Настроение на 0.


3-68238
Buka
2003-07-21 18:26
2003.08.21
Как установить BDE вместе с поставляемой на другую машину програм


14-68470
Gogerman
2003-08-06 12:58
2003.08.21
Ошибка доступа к памяти, при использовании динамического массива