Главная страница
    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.013 c
15-1152095029
igrek23
2006-07-05 14:23
2006.08.06
компоненты для работы с топографическими картами


2-1153430505
Батя
2006-07-21 01:21
2006.08.06
WebBrowser


2-1153077301
dj0n
2006-07-16 23:15
2006.08.06
Как открыть доступ на таблицу InterBase!


3-1149163950
Morgan128
2006-06-01 16:12
2006.08.06
Использование TQuery


3-1148975873
Kley
2006-05-30 11:57
2006.08.06
выгрузка записей из одной табл в другую





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский