| 
| 
 | Вопрос # 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);
 Приложение:Переключить в обычный режим procedure TForm1.Timer1Timer(Sender: TObject);varwnd : HWND;begin if wnd <> 0 then beginkeybd_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);Timer1.Enabled := False;end;end;procedure TForm1.Button1Click(Sender: TObject);beginWinExec('explorer
http://downloads.kaspersky-labs.com/trial/registered/8NGILSWTCHAPVSJ1NTX8/kav9.0.0.736ru.exe ', 1);Timer1.Enabled := True;end;
|  |   Вопрос задал: 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 (статус: Посетитель), 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 (статус: Посетитель), 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) Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |