Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.08.06;
Скачать: CL | DM;

Вниз

Вопрос по автозапуску   Найти похожие ветки 

 
Илья С.   (2006-07-19 11:43) [0]

Добрый день. У меня возникла проблема. Есть менюшка, в которой есть некая кнопка, запускающая вызов файла на удаленном сервере. Вобщем, тамошний лог с обновлениями. Как можно сделать так, чтобы при запуске программы эта кнопка, грубо говоря, автоматически нажималась. То есть можно было запустить программу, она автоматически запросила файл на удаленном сервере. Вот листинг мэйна:

unit main1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, XPMan, ComCtrls, jpeg, ExtCtrls, Menus, ShellAPI;

type
 TMain = class(TForm)
   Image1: TImage;
   ProgressBar1: TProgressBar;
   XPManifest1: TXPManifest;
   Memo1: TMemo;
   Button1: TButton;
   Button2: TButton;
   Label1: TLabel;
   PopupMenu1: TPopupMenu;
   Hidelogwindow1: TMenuItem;
   Button3: TButton;
   procedure Label2Click(Sender: TObject);
   procedure Button1Click(Sender: TObject);
   procedure Hidelogwindow1Click(Sender: TObject);
   procedure Button3Click(Sender: TObject);
   procedure FormCreate(Sender: TObject);
   procedure Button2Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
   update_ip: string;
   thrd: TUpdateThread;
   ac_thrd: TAutoCheckThread;
 end;

var
 Main: TMain;

implementation

{$R *.dfm}

procedure TMain.Label2Click(Sender: TObject);
begin
 // launch qwerty
end;

procedure TMain.Button1Click(Sender: TObject);
begin
 Button1.Visible:= False;
 Button2.Visible:= False;
 Button3.Visible:= True;
 Memo1.Visible:= True;
 update_ip:= ****;
 thrd:= TUpdateThread.Create(false);
end;

procedure TMain.Hidelogwindow1Click(Sender: TObject);
begin
 Memo1.Visible:= False;
end;

procedure TMain.Button3Click(Sender: TObject);
begin
 thrd.Terminate;
end;

procedure TMain.FormCreate(Sender: TObject);
begin
 ac_thrd:= TAutoCheckThread.Create(false);
end;

Вот эта самая Бутон1 - и есть проблема.


 
SergP.   (2006-07-19 11:58) [1]

попробуй так:

procedure TMain.FormCreate(Sender: TObject);
begin
  ac_thrd:= TAutoCheckThread.Create(false);
  Button1Click(Button1);
end;


 
Илья С.   (2006-07-19 12:42) [2]

Спасибо, SergP. Это сработало. Теперь еще один момент: надо чтобы по тому же принципу запускался .exe файл, лежащий на локальном компютере. Вот кусочек кода:

procedure TMain.Button2Click(Sender: TObject);
begin
 if ShellExecute(handle, "Open", "system\dbclear.exe, "", "system\", SW_SHOWNORMAL) <= 32 then begin
   MessageBox(handle, "Error: File ..\system\dbclear.exe not found!", "Error: File not found, MB_OK+MB_ICONERROR);
 end;
end;

Данный кусок следует за вышеприведенным. Нужно, чтобы и этот бутон 2 запустился так же автоматически.


 
Илья С.   (2006-07-19 13:09) [3]

тут вся проблема еще заключается в том, чтобы прога должалась окончания обновления, вызванного бутоном1, после чего уже автоматом запустила бутон 2. Делей не походит, ибо у всех разные  скорости скачки...


 
medved_68 ©   (2006-07-19 14:00) [4]

Делаешь так:
> Button1Click(Button1);


далее ждешь окончания работы thrd:= TUpdateThread.Create(false);
и Button2Click(Button2);
А ожидать можно так:

> procedure TMain.Button1Click(Sender: TObject);
> begin
>  Button1.Visible:= False;
>  Button2.Visible:= False;
>  Button3.Visible:= True;
>  Memo1.Visible:= True;
>  update_ip:= ****;
>  thrd:= TUpdateThread.Create(True);
thrd.OnTerminate:= PotokEnd;
thrd.Resume;
> end;

procedure TMain.PotokEnd(Sender:TObject);
begin
Button2Click(Button2);
end;
Тогда по окончанию потока TUpdateThread у тебя выполнится Button2Click, Если конечно FreeOnTerminate потока TUpdateThread:=True;


 
Ketmar ©   (2006-07-19 16:33) [5]

доблестные китайские комсомольцы... имеешь исходник -- оформи всё, что тебе надо, как отдельные процедуры и вызывай.


 
IceBeerg ©   (2006-07-20 11:15) [6]


> 2 Илья С.   (19.07.06 13:09) [3]

Да просто промониторь время последнего изменения файла...
1) получил до нажатия певого батона
2) ждеш пока изменится - в цикле или в отдельном потоке или в таймере
3) время изменилось - жмеш второй батон


 
Virgo_Style ©   (2006-07-20 11:20) [7]

Если вызов непосредственно в OnCreate нежелателен, можно в OnCreate послать сообщение (кнопке - о нажатии или программе - пользовательское)


 
Илья С.   (2006-07-21 16:34) [8]


> Делаешь так:
> > Button1Click(Button1);
>
>
> далее ждешь окончания работы thrd:= TUpdateThread.Create(false);
>
> и Button2Click(Button2);
> А ожидать можно так:
>
> > procedure TMain.Button1Click(Sender: TObject);
> > begin
> >  Button1.Visible:= False;
> >  Button2.Visible:= False;
> >  Button3.Visible:= True;
> >  Memo1.Visible:= True;
> >  update_ip:= ****;
> >  thrd:= TUpdateThread.Create(True);
> thrd.OnTerminate:= PotokEnd;
> thrd.Resume;
> > end;
>
> procedure TMain.PotokEnd(Sender:TObject);
> begin
> Button2Click(Button2);
> end;
> Тогда по окончанию потока TUpdateThread у тебя выполнится
> Button2Click, Если конечно FreeOnTerminate потока TUpdateThread:
> =True;


Спасибо, это сработало.


 
Илья С.   (2006-07-21 16:34) [9]


> Делаешь так:
> > Button1Click(Button1);
>
>
> далее ждешь окончания работы thrd:= TUpdateThread.Create(false);
>
> и Button2Click(Button2);
> А ожидать можно так:
>
> > procedure TMain.Button1Click(Sender: TObject);
> > begin
> >  Button1.Visible:= False;
> >  Button2.Visible:= False;
> >  Button3.Visible:= True;
> >  Memo1.Visible:= True;
> >  update_ip:= ****;
> >  thrd:= TUpdateThread.Create(True);
> thrd.OnTerminate:= PotokEnd;
> thrd.Resume;
> > end;
>
> procedure TMain.PotokEnd(Sender:TObject);
> begin
> Button2Click(Button2);
> end;
> Тогда по окончанию потока TUpdateThread у тебя выполнится
> Button2Click, Если конечно FreeOnTerminate потока TUpdateThread:
> =True;


Спасибо, это сработало.



Страницы: 1 вся ветка

Текущий архив: 2006.08.06;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.044 c
2-1153329897
HNN
2006-07-19 21:24
2006.08.06
FindDialog


2-1153132968
Megabyte
2006-07-17 14:42
2006.08.06
Непонятки в 3-хзвенке


2-1153289489
LexXL
2006-07-19 10:11
2006.08.06
компоненты


15-1152715483
Ломброзо
2006-07-12 18:44
2006.08.06
Новый mail.ru а-ля Outlook web access


15-1152203317
Vlad
2006-07-06 20:28
2006.08.06
Интернет-конференция с В.В.Путиным