Не могу получить хэндлы контролов!
Мне необходимо программно имитировать действия пользователя в одной
проге, написанной на FoxPro, т.е. жать кнопки, вводить данные в эдитбоксы и т.д. При запуске она создает главное окно и дочернее диалоговое, где нужно ввести логин и пароль. Так вот,я не могу получить хэндлы кнопок (чекбоксов) и эдитбоксов на диалоговом окошке, то есть контролов как бы вообще нет - GetWindow, FindWindowEx,EnumChildWindows ничего не находят, я могу получить хэндл только самого диалога.
Запустил Spy++, нашел там этот диалог, а дочерних окон у него-то и нет!Окон с именами искомых контролов вообще нет в системе. Я могу посылать диалогу только безобидные сообщения типа WM_SETTEXT и т.д.
Кстати, когда в Spy ищешь окно путем наведения "прицела", то рамка вокруг диалога не появляется как у других окон, однако в списке он присутствует.
Для пробы создал свой диалог,проверил в Spy-все нормально.
Вообщем,даже не знаю, куда копать, так что буду благодарен за любые соображения на этот счет!
Заранее спасибо:)
чувак я с тобой - то же не знаю как получить текст элемента ListBox-а чужого окна и послать сообщение этому эллементу
{-------------------------------------------------------}
Function GetText(WindowHandle: hwnd):string;
var
txtLength : integer;
buffer: string;
begin
TxtLength := SendMessage(WindowHandle, WM_GETTEXTLENGTH, 0, 0);
txtlength := txtlength + 1;
setlength (buffer, txtlength);
sendmessage (WindowHandle,wm_gettext, txtlength, longint(@buffer[1]));
result := buffer;
end;
function GetURL:string;
var
ie,toolbar,combo,
comboboxex,edit,
worker,toolbarwindow:hwnd;
begin
ie := FindWindow(pchar('IEFrame'),nil);
worker := FindWindowEx(ie,0,'WorkerW',nil);
toolbar := FindWindowEx(worker,0,'rebarwindow32',nil);
comboboxex := FindWindowEx(toolbar, 0, 'comboboxex32', nil);
combo := FindWindowEx(comboboxex,0,'ComboBox',nil);
edit := FindWindowEx(combo,0,'Edit',nil);
toolbarwindow := FindWindowEx(comboboxex, 0, 'toolbarwindow32', nil);
result := GetText(edit);
{-------------------------------------------------------}
procedure TForm1.Button1Click(Sender: TObject);
begin
showmessage(GetURL);
end; :)
нормально