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

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

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.11.2011, 13:25   #1
AlexP_77
 
Регистрация: 21.11.2011
Сообщений: 3
По умолчанию Программно нажать кнопку в чужом окне Delphi7

Народ подскажите как программно нажать кнопку Сохранить в окне загрузки IE. Я пишу прогу которая должна автоматический загружать из интернета архив. Использую для этих целей объект WebBrowser, который насколько я знаю построен на движке IE (Delhi7). Нашёл на различных форумах решение обсалютно такой же и похожих проблем но почему то не срабатывает. Вот 2 листинга:
1)
Код:
var h1,h2:hwnd;
begin
   h1:=0;
  h2:=0;
  h1 := FindWindow ('#32770', 'Загрузка файла');
  if h1<> 0 then
  begin
        h2 := FindWindowEx(h1, 0, nil, '&Сохранить');
    if (h2<>0) then
    begin
      //Устанавливаем фокус на кнопку и активируем её - автоматом на окно
      SetForegroundWindow(h2);
      showmessage('2');
      SendMessage(h2, WM_ACTIVATE, 1, 0);
      SendMessage(h2, WM_ENABLE, 1, 0);
      SendMessage(h2, WM_SETFOCUS, 1, 0);

      //Переносим фокус на другое окно, чтобы перерисовалось окно IE
      SetForegroundWindow(handle);
      Application.ProcessMessages;
      SetForegroundWindow(h2);
      SendMessage(h2, WM_SETFOCUS, 1, 0);
      Sleep(1000); //Делаем обязательную паузу, чтобы окно успело прорисоваться

      //Посылаем Enter кнопке
      keybd_event(VK_RETURN,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
      keybd_event(VK_RETURN,0,KEYEVENTF_EXTENDEDKEY,0);
      keybd_event(VK_RETURN,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);

    end;
  end;
2)
Код:
var Wind,Btn:hwnd;
begin
  if FindWindow(nil, 'Загрузка файла') <> 0 then
  begin
    Wind := FindWindow(nil, 'Загрузка файла');
    Btn := FindWindowEx(Wind, 0, nil, 'Сохранить');
    SendMessage(Btn, BM_CLICK, 0, 0);
  end;
Подскажите в чём косяк. Может кто то знает другой способ.
AlexP_77 вне форума Ответить с цитированием
Старый 03.05.2012, 00:06   #2
Tip.the.besT
------------------
Пользователь
 
Регистрация: 15.08.2011
Сообщений: 78
По умолчанию

А зачем через браузер, если хочешь скрытно, то качай через indy или synapse.
C YBA}|{EH|/|EM Tip.the.besT
Tip.the.besT вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как программно нажать кнопку в чужом Java-окне? vhawk Win Api 0 14.06.2011 17:05
как узнать произошло ли нажатие на кнопку в чужом окне(приложении) Dim969 Общие вопросы C/C++ 1 18.12.2010 15:05
нажать кнопку в окне класса ToolbarWindow32 m.a.x.i.m Win Api 3 06.02.2010 15:42
Программно нажать кнопку DeDoK Общие вопросы Delphi 2 04.05.2008 21:46
Как программно нажать клавишу в чужом процессе? Sere0ga Win Api 2 27.03.2007 18:43