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

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

Как изменить содержимое Edita чужой программы [D7, WinXP]


Страницы:   1 2

carmen ©   (2005-05-27 22:51:00) 

Имеет чужая программа. Мне нужно в поле ввода вводить автоматом свои значения. Я пробую делать так:

Var Hnd,HndDialog,HndControl,HndAsc,HndBtn  :HWnd;
   StrClass :PChar;
   StrBase :string;
begin
Hnd:=FindWindow(nil, 'Parametrs'); // Работает
if Hnd <>0 then
 begin
  windows.SetForegroundWindow(Hnd);   // Устанавливаю фокус
  HndControl:=0;
  // Здесь у меня всегда возвращает 0, где моя ошибка
  HndControl:=FindWindowEx(Hnd,0,nil,pchar('123')); // В поле ввода первоначально стоит значение 123
  if HndControl<>0 then
   begin
    StrBase:='1234';
    Sleep(1000);
    SendMessage(HndControl, WM_Settext,0,Integer(StrBase));
    SendMessage(HndDialog,WM_Command,MakeWParam (1,$0f),HndControl);
   End;
 End;

У меня получается найти Hnd, а вот найти HndControl не получается, всегда возвращается значение 0.
Як правильно надо делать.


carmen   (2005-05-27 23:49:00) [21]

Да Вы правы, поле ввода находилос не на самой форме на GroupBox.
Теперь следующий вопрос как нажать на кнопку класса TBitBtn которая находится на этой же форме (на самой форме, родитель класс TForm).


Marser   (2005-05-27 23:39:00) [22]


> carmen ©   (27.05.05 23:30) [7] [Новое
>сообщение][Ответить]
> Чужая программа тоже написана на Delphi и используется
> класс TEdit. Выще приведение замечания тоже не работают

Кнопка расположена непосредственно на форме? Или на панели etc ? Тогда нужно определить и дескриптор этой самой панели, ибо она и будет родительским коном для поля ввода.


alex-drob   (2005-05-27 23:35:00) [23]


> carmen ©   (27.05.05 23:30) [7]

В комплекте Delphi 7 есть WinSight32. Можно запустить её, найти там нужную программу и посмотреть класс.


alex-drob   (2005-05-27 23:32:00) [24]


> Marser ©   (27.05.05 23:24) [6]


> Пробовать не нужно, нужно брать WinSpect

Нужно брать не мне, а тому кто задавал вопрос. Я же не знаю что у него за чужая программа. Я просто предложил вариант.


carmen   (2005-05-27 23:30:00) [25]

Чужая программа тоже написана на Delphi и используется класс TEdit. Выще приведение замечания тоже не работают


Marser   (2005-05-27 23:24:00) [26]


> alex-drob   (27.05.05 23:18) [5]

Пробовать не нужно, нужно брать WinSpect или подобные вещи и узнавать класс контрола. Я перед предыдущим сообщением так и сделал и вновь убдеился, что-таки "TEdit". Но вариантов много, поэтому очень не советую лезть вслепую и предполагать.


alex-drob   (2005-05-27 23:18:00) [27]

Я согласен со всем, но если
> HndControl:=FindWindowEx(Hnd,0,'Edit',nil)

не работает, то можно попробывать TEdit


Marser   (2005-05-27 23:16:00) [28]


> alex-drob   (27.05.05 23:12) [3] [Новое
>сообщение][Ответить]
> HndControl:=FindWindowEx(Hnd,0,pchar('TEdit'),nil)

Если делфийный, то да, но системный класс имено "Edit". И приведение к Pchar делать необязательно.


alex-drob   (2005-05-27 23:12:00) [29]

HndControl:=FindWindowEx(Hnd,0,pchar(' TEdit'),nil)


carmen   (2005-05-27 23:06:00) [30]

Так тоже не работает


Marser   (2005-05-27 23:02:00) [31]


> HndControl:=FindWindowEx(Hnd,0,nil,pchar('123')); // В
> поле ввода первоначально стоит значение

Попробуй так:
HndControl:=FindWindowEx(Hnd,0,'Edit',nil)


Страницы:   1 2

Наверх

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