Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.08.06;
Скачать: [xml.tar.bz2];

Вниз

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

 
Илья С.   (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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.01 c
3-1148930833
Евгений Р.
2006-05-29 23:27
2006.08.06
Нехватка еста для БДЕ


2-1153166950
Vivax
2006-07-18 00:09
2006.08.06
Palladinu


2-1152867059
Levin_610
2006-07-14 12:50
2006.08.06
Сервис


1-1151182022
AlexeyT
2006-06-25 00:47
2006.08.06
TImage: баг с иконками большими 32х32


1-1151310021
Tosha87
2006-06-26 12:20
2006.08.06
OleContainer и ScrollBar по вертикали





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский