Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 3 413

/ вопрос решён /

Приветствую, уважаемые эксперты!
Вопрос заключается вот в чем .
Допустим в программе, есть кнопка «Скачать файл» - назовем ее Button1.
При нажатии, на которую появится вот это окно
«Загрузка файла - предупреждение системы безопасности»
Мне нужно программно нажать на клавиши.
Подскажите, пожалуйста, в чем моя ошибка.
Срабатывает
keybd_event(VK_UP, 0, 0, 0);
keybd_event(VK_UP, 0, KEYEVENTF_KEYUP, 0);
А дальше не работает
keybd_event(VK_RETURN, 0, 0, 0);
keybd_event(VK_RETURN, 0, KEYEVENTF_KEYUP, 0);

Приложение:
  1. procedure TForm1.Timer1Timer(Sender: TObject);
  2. var
  3. wnd : HWND;
  4. begin
  5.  
  6. if wnd <> 0 then begin
  7. keybd_event(VK_UP, 0, 0, 0);
  8. keybd_event(VK_UP, 0, KEYEVENTF_KEYUP, 0);
  9. keybd_event(VK_RETURN, 0, 0, 0);
  10. keybd_event(VK_RETURN, 0, KEYEVENTF_KEYUP, 0);
  11. Timer1.Enabled := False;
  12. end;
  13. end;
  14. procedure TForm1.Button1Click(Sender: TObject);
  15. begin
  16. WinExec('explorer http://downloads.kaspersky-labs.com/trial/registered/8NGILSWTCHAPVSJ1NTX8/kav9.0.0.736ru.exe ', 1);
  17. Timer1.Enabled := True;
  18. end;


Kyran29 Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задал: Kyran29 (статус: Посетитель)
Вопрос отправлен: 17 ноября 2009, 07:20
Состояние вопроса: решён, ответов: 2.

Ответ #1. Отвечает эксперт: Вадим К

Здравствуйте, Kyran29!
Почему люди любят делать проблемы? Почему бы не воспользоваться компонентом idHttp (Скачиваем файлы из интернета ) или готовой функций с synapse (Введение в Synapse ) что бы скачать файл??? А то завтра появиться вопрос "а как скрыть окно" или "а почему не работает под вистой(севен) - а там всего лишь кнопки переставили. А под английской версией windows или любой другой не русской тоже не будет (там текст другой...). А если это всплывет окно от UAC в висте, то данный способ вообще никак не сможет отработать - потому что то окно появляется в "отдельном рабочем столе" и с помощью АПИ функций сложно пробиться в него.

Если же хочется иметь красивое окошко скачки, то в примере с Indy есть, как сделать прогресс, всё остальное - в ваших руках.

Ответ отправил: Вадим К (статус: Академик)
Время отправки: 17 ноября 2009, 09:16
Оценка за ответ: 5

Ответ #2. Отвечает эксперт: Паровоз

Здравствуйте, Kyran29!

Ваша кнопка просто не успевает срабатывать. Попробуйте поставить там, где написано "А дальше не работает" что-нибудь типа Sleep(1000).

Ответ отправил: Паровоз (статус: 10-ый класс)
Время отправки: 17 ноября 2009, 13:38
Оценка за ответ: 5


Мини-форум вопроса

Всего сообщений: 5; последнее сообщение — 20 ноября 2009, 10:33; участников в обсуждении: 2.
Kyran29

Kyran29 (статус: Посетитель), 19 ноября 2009, 21:27 [#1]:

Уважаемые эксперты,
Меня очень интересует Ваше мнение
Вот:

unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls,URLMon;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
function DownloadFile(SourceFile, DestFile: string): Boolean;
begin
  try
    Result := UrlDownloadToFile(nil, PChar(SourceFile), PChar(DestFile), 0, nil) = 0;
  except
    Result := False;
  end;
end; 
 
procedure TForm1.Button1Click(Sender: TObject);
const
  // Адресок
  SourceFile = 'http://downloads.kaspersky-labs.com/trial/registered/8NGILSWTCHAPVSJ1NTX8/kav9.0.0.736ru.exe ';
  // Куда качаем
  DestFile = 'c:\kav9.0.0.736ru.exe ';
begin
  if DownloadFile(SourceFile, DestFile) then
  begin
    ShowMessage('Файл загружен!');
  end
  else
    ShowMessage('Ошибка при загрузке - ' + SourceFile)
end;
Паровоз

Паровоз (статус: 10-ый класс), 19 ноября 2009, 22:37 [#2]:

А что именно интересует?
Kyran29

Kyran29 (статус: Посетитель), 20 ноября 2009, 07:20 [#3]:

А что именно интересует?

Здравствуйте Паровоз!
Итересует Ваше мнение о Выше написанном коде?
Может, что-то поменять.
Паровоз

Паровоз (статус: 10-ый класс), 20 ноября 2009, 10:31 [#4]:

Я думаю, что этот код нужно выполнять в отдельном потоке.
Паровоз

Паровоз (статус: 10-ый класс), 20 ноября 2009, 10:33 [#5]:

P.S. А вообще это уже другой вопрос и его нужно задавать в отдельной ветке.

31 января 2011, 19:36: Статус вопроса изменён на решённый (изменил модератор Ерёмин А.А.): Автоматическая обработка (2 и более ответов с оценкой 5)

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:52
Выполнено за 0.03 сек.