Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > ОС и железо
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 10.02.2012, 12:20
sectorb sectorb вне форума
Прохожий
 
Регистрация: 27.04.2010
Сообщения: 2
Репутация: 10
По умолчанию Проблема со знанием WinApi

Добрый день форумчане.

Вообщем задача такая: Через программу написаную на Delphi открыть программу AnVir Task Manager (1)? потом в ней программно нажать на кнопку "Сохранить" (2), далее в выпавшем списке также программно нажать "Сохранить как текст или Html..."(3). Пока что все удалось до последнего пункта, нивкакую не хочет нажимать на кнопку (3).

Подскажите как можно получше реализовать или реализовать вообще.

Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
ShellExecute(Handle,
  'open', 'C:\Program Files\AnVir Task Manager\AnVir.exe', nil, nil, SW_SHOWNORMAL);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin

h :=FindWindow(nil, 'AnVir Task Manager');
if h <> 0 then
begin
ShowMessage('Окно найдено');


h2 := FindWindowEx(h, 0,'ReBarWindow32', '');
if h2 <> 0 then
begin

h3 := FindWindowEx(h2, 0,'ToolbarWindow32', '');
if h3 <> 0 then
begin

   postmessage(h3, WM_LBUTTONDOWN, 10, 10);
   postmessage(h3, WM_LBUTTONUP, 10, 10);
   postmessage (h4,wm_Activate,0,0);
   postmessage (h4,wm_SetFocus,0,0);
   postmessage (h4,wm_Enable,0,0);
   postmessage(h4, WM_LBUTTONDOWN, 5, 12);
   postmessage(h4, WM_LBUTTONUP, 5,12);

end
else
ShowMessage('Окно НЕнайдено');
end
else
ShowMessage('Окно НЕнайдено')
end
else
ShowMessage('Окно НЕнайдено');
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
h :=FindWindow(nil, 'AnVir Task Manager');
postmessage(h,WM_Close,0,0);
end;

Ответить с цитированием
  #2  
Старый 10.02.2012, 13:11
Pyro Pyro вне форума
Так проходящий
 
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
По умолчанию

можно keybd_event стрелками и enter нажать
ещё можно посмотреть не посылает ли нажатие [3] wm_command с постоянными параметрами, но может быть и что они меняются раз от раза
Ответить с цитированием
  #3  
Старый 17.02.2012, 09:46
sectorb sectorb вне форума
Прохожий
 
Регистрация: 27.04.2010
Сообщения: 2
Репутация: 10
По умолчанию

Через клавиатуру тоже пробовал, никак не могу фокус взять на нужное окно и получается что он не там на клаву нажимает.

Код:
   postmessage (h4,wm_Activate,0,0);
   postmessage (h4,wm_SetFocus,0,0);
   postmessage (h4,wm_Enable,0,0);
Вот так я пытался взять фокус окна, может по другому как то надо?
Ответить с цитированием
  #4  
Старый 17.02.2012, 12:25
Pyro Pyro вне форума
Так проходящий
 
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
По умолчанию

attachthreadinput
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 17:50.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter