パソコンを起動するとスタートアップに登録しているプログラムを起動しある処理をします。
1日1回処理すればよいためiniファイルに更新処理した日付を登録し、
起動時にiniファイルをチェックして本日分が処理済みであれば
何もせずに終了したい。
というプログラムを組みたいのですが、
procedure TForm1.FormCreate(Sender: TObject);
begin
if 更新処理チェック then
beging
処理
ini更新
end else
begin
Close;
end;
end;
としてみましたがプログラムを終了できませんでした。
Closeに飛びますがFormはそのままです。
procedure TForm1.Button1Click(Sender: TObject);
begin
Close;
end;
であればFormは終了します。
このような処理を行うにはどのようにすればよいか教えてください。
今Delphiがない環境のため、日本語で表示してます。
申し訳ありません。
Windows2000
Delphi6
Close;の変わりに
PostMessage(Handle, WM_Close, 0, 0);
と書くと動くようですが、起動直後に閉じるので一瞬だけフォームが
表示されます。
二重起動防止の論理と同じように、Form を作る前に、まずプロジェクトファイルで
if 更新処理チェック then
の処理をしたらよいのでは?
>FormをCreateしたときにCloseしたい
>procedure TForm1.FormCreate(Sender: TObject);
>begin
> {略}
> Close;
> {略}
>end;
私も最初の頃やっちまいました。
表題の質問の答えは不可で、この記述自体が無効です。
何故かは以下を参照してください。
http://www.jnishida.com/faq/archives/2002/05/del0038.htm
他の方が書かれたように代替方法をお勧めします。
私なら、えーとさんの方法
zebra 2006/09/05(火) 03:21:48
> Close;の変わりに
> PostMessage(Handle, WM_Close, 0, 0);
> と書くと動くようですが、起動直後に閉じるので一瞬だけフォームが
> 表示されます。
これを追加しておけば、表示されないのでは?
Application.ShowMainForm := False;
メインフォームのFormCreate処理時点では、
Application.Run; まで進んでいないはずなので。
更新チェックの内容が、どの程度かわかりませんが、
自分なら、えーとさんの方法で行います。
program Hogehoge;
begin
if 更新チェック then begin
//更新済みのためなにもしない
end
else begin
Application.Initialize;
Application.CreateForm(TMainForm, MainForm);
Application.Run;
end;
end.
いいのかどうか分かりませんが、こういうのもあります・・・
「Terminate」があまり気持ちのいいものでは無いのですけど。
procedure TForm1.FormCreate(Sender: TObject);
begin
if False then begin
beep;
end else begin
Application.ShowMainForm := False;
Application.Terminate;
end;
end;
いやいや、もっとシンプルに
Formを作成しない方法は如何ですか?
ファイル名"Project1.dpr"
program Project1;
uses
Windows,
Messages,
SysUtils,
Variants,
Classes,
Graphics,
Controls,
Forms,
Dialogs;
{$R *.res}
var
strList:TStringList;
begin
//Application.Initialize; //無くても良い?
//Application.Run; //無くても良い?
strList:=TStringList.Create;
strList.Add(DateTimeToStr(now));
strList.SaveToFile('test.txt');
strList.Free;
showmessage('終了します。');
end.
…って、質問の答えになって無いですね。
なにやってるんだ…
皆さんありがとうございます。
無事目的のことができました。
ツイート | ![]() |