Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.11.2007, 09:59   #1
nechto
Пользователь
 
Аватар для nechto
 
Регистрация: 13.11.2007
Сообщений: 26
По умолчанию Не могу найти Handle Edit'а в окне чужой программы

Ситуация следующая:
надо в окошке чужой программы в Edit куда вводится пассворд ввести соответствующий текст. Использую следующий код:
var
MyFormHandle, MyEditHandle: HWND;
begin
//ищем нужное окно
MyFormHandle := FindWindow(nil, 'Бла-бла "бла-бла"');
//ищем Edit
MyEditHandle := FindWindowEx(MyFormHandle,0,'Edit', nil); //находим edit
//посылаем текст
SendMessage(MyEditHandle, em_setsel, 0, longword(pchar('ТЭР-ПароЛЬ')));
end;
Окно он находит, а вот Edit никак не найдет. Как справиться?
nechto вне форума Ответить с цитированием
Старый 13.11.2007, 10:10   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Значит Эдит не просто в том окне, а возможно в каком нить контеинере на окне, или ты неверно указал тип эдита. Поищи его через SPYXX или подобных программ
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.11.2007, 10:16   #3
nechto
Пользователь
 
Аватар для nechto
 
Регистрация: 13.11.2007
Сообщений: 26
По умолчанию

Спасибо, посмотрю.
nechto вне форума Ответить с цитированием
Старый 13.11.2007, 13:19   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Значит Эдит не просто в том окне, а возможно в каком нить контеинере на окне, или ты неверно указал тип эдита. Поищи его через SPYXX или подобных программ
Нет, Виталий, здесь что-то в самом деле не то. Он прав. Перед этим такая тема рассматривалась.
Я проверял. Форма назначения - Form1+Edit1, больше ничего.
Из другой простенькой Form2+Button1 форма Form1 находится, можно поменять ей Caption, т.е. это точно именно та форма.
Edit же в ней можно найти ТОЛЬКО по содержимому, по классу поиск всегда безрезультатен.
Кстати, интересная штука - если поменять в Edit-е текст, то этот Edit при повторном поиске опять отыскивается по старому значению текста, которого уже нет.
Перерыл все, что у меня было в факах по этому вопросу, так и не смог осуществить поиск по классу.
mihali4 вне форума Ответить с цитированием
Старый 13.11.2007, 13:27   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Нда? Ну я чесно говоря ищу только с помошью EnumWindow и потому горя не знаю, а FindWindow уже давно не рулю.

Кста, а Класс точно Edit, может Tedit?
Ану скиньте сюдыть экзешничек, я найду... через OllyDBG )))
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.11.2007, 13:38   #6
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Кста, а Класс точно Edit, может Tedit?
Перебрал все возможные варианты и регистр тоже.
Вот рабочий вариант поисковой формы:
Код:
procedure TMyForm.Button1Click(Sender: TObject);
var h,sh: integer;
begin
h:= FindWindow(nil, 'SSS'); //находим окно по капшену
//SetWindowText(h, 'Ну, ты попал...'); //можно поменять капшен
Label1.Caption:=IntToSTr(h);//выводим хэндл окна
sh:= FindWindowEx(h,0,0,'Edit1'); //находим edit по тексту в нем
Label2.Caption:=IntToSTr(sh);//выводим хэндл эдита
SendMessage(sh, WM_SETTEXT, 0, LParam(PChar('MyText222')));//засылаем новый текст в эдит 
Application.ProcessMessages;
end;
mihali4 вне форума Ответить с цитированием
Старый 13.11.2007, 13:45   #7
nechto
Пользователь
 
Аватар для nechto
 
Регистрация: 13.11.2007
Сообщений: 26
По умолчанию

Вся проблема в том, что текста в Edit нет
nechto вне форума Ответить с цитированием
Старый 13.11.2007, 13:50   #8
nechto
Пользователь
 
Аватар для nechto
 
Регистрация: 13.11.2007
Сообщений: 26
По умолчанию

Упс.. Виноват, всем огромное спасибо, все работает!!!
nechto вне форума Ответить с цитированием
Старый 13.11.2007, 13:52   #9
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Сообщение от nechto Посмотреть сообщение
Упс.. Виноват, всем огромное спасибо, все работает!!!
С чего вдруг сработало?
mihali4 вне форума Ответить с цитированием
Старый 13.11.2007, 14:02   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
С чего вдруг сработало?
Заинтриговал и...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как имея handle окна узнать handle edit-a который находится в етом окне SeRhy Общие вопросы Delphi 1 20.07.2008 13:48
Запуск своего модуля из чужой программы Volkogriz Общие вопросы Delphi 7 16.10.2007 05:19
Завершение работы чужой программы Viteef Win Api 12 24.09.2007 12:31
Не могу найти KlErik Общие вопросы Delphi 4 11.01.2007 11:40