|
Вопрос # 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);
- var
- wnd : HWND;
- begin
-
- if wnd <> 0 then begin
- 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);
- Timer1.Enabled := False;
- end;
- end;
- procedure TForm1.Button1Click(Sender: TObject);
- begin
- WinExec('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)
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|