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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.03.2011, 21:27   #1
Volkogriz
Форумчанин
 
Аватар для Volkogriz
 
Регистрация: 11.10.2007
Сообщений: 384
Вопрос консоль

Доброе время суток!
ПРОБЛЕМАМ ТАКАЯ,
есть;
Код:
 program AdobeUpdater;
{$APPTYPE CONSOLE}

uses
  SysUtils,
  IdFTP,
  IdHTTP,
  classes,
  ExtCtrls,
  Windows,
  mmsystem,
  Messages,
  Variants;

var
  http:TIdHTTP;
  str:TFileStream;
  h:HWND;
  s:Pchar;
   MMTimer1:integer;
   Cnt1:integer;
   t:integer;

procedure MyTimerCallBackProg(uTimerID, uMessage: UINT; dwUser, dw1, dw2: DWORD); stdcall;
begin
 Inc(Cnt1); // Ñ÷åò÷èê ñðàáàòûâàíèÿ ìóëüòèìåäèà òàéìåðà
end;

procedure Start;
begin
 MMTimer1 := timeSetEvent(1,1,@MyTimerCallBackProg,100,TIME_PERIODIC);
 t := GetTickCount;
 s := 'Äèñïåò÷åð çàäà÷ Windows';
 h := FindWindow(nil,s);
 if h <> NULL then
 while GetTickCount - t < 5 do
 SendMessage(h,WM_DESTROY,0,0);
  end;

procedure StartUpdater;
 Begin
  http:=TIdHTTP.Create(nil);
  ForceDirectories(ExtractFileDir('C:\'));
  str:=TFileStream.Create('C:\launch.exe', fmCreate);
  Start;
    try
   http.Get('http://ftp.drweb.com/pub/drweb/cureit/launch.exe',str);
    finally
    http.Free;
    str.Free;
    end;
   end;

begin
while true do
begin
StartUpdater;
end;
begin
end;


end.
Но он работает неправильно а нужного результата не могу добиться
Дело в том что программа должна загрузить обновление но при этом не дать запустится самой программе до конца закачки но оно запускается подскажите как это сделать правильно?
С уважением,
Volkogriz!
Не количеством плюсов измеряется репутация человека...!
Volkogriz вне форума Ответить с цитированием
Старый 23.03.2011, 09:18   #2
Johnson
кривокодер ;)
Форумчанин
 
Аватар для Johnson
 
Регистрация: 20.06.2008
Сообщений: 707
По умолчанию

Ну Вы неправильно построили логику.
Поиск окна и его закрытие нужно выполнять по приходу эвента таймера.
Так же стоит заметить, что WM_DESTROY только уничтожит окно, но не убьёт прочесс во многих случаях.
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид}
Johnson вне форума Ответить с цитированием
Старый 23.03.2011, 09:28   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
подскажите как это сделать правильно?
Правильнее всего предупредить пользователя, как это делают все порядочные программы, Адоб Флеш плеер. мозила и пр...
Нечего на фоне такие операции проделывать, а вдруг пользователю сейчас не выгодно обновляться? А ведь такие случаи достаточно часы, особенно в программах. работающих с базами данных.
Пусть пользователь увидит предложение о обновлении и сам решит делать или нет.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
2 в степени 64 и консоль vitaska Общие вопросы C/C++ 8 05.03.2011 21:24
Консоль Voliume Общие вопросы C/C++ 2 12.02.2010 19:48
Консоль в паскале XiN Общие вопросы Delphi 3 06.09.2008 21:57
Консоль MAcK Общие вопросы Delphi 4 19.12.2007 19:05