起動時にプロセスが既に実行されているかどうかを確認する Delphi アプリケーションがあります。実行中の場合は、そのプロセスにデータを渡し、現在のプロセスを終了します。問題: 現在のプロセスを終了する際に、アプリのウィンドウが終了前に一瞬点滅します。メインフォームが作成される前に、すべてのコードがアプリケーションの初期化にあるため、フォームを一瞬表示する方法がわかりません。ウィンドウを非表示にするなど、さまざまなことを試しましたが、何も機能していないようです。私が間違っていることはありますか?
質問する
185 次
1 に答える
2
あなたはどうやらすぐに終了していないようです。私は次のようなことをします
program Project1;
uses
Forms,
Windows,
Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
function PrevInstance: boolean;
begin
...
end;
procedure PassData;
begin
...
end;
begin
if PrevInstance then
begin
PassData;
Exit;
end;
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
更新:あなたは次のようなことをすると思います
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure MyInitProc;
begin
if true then Application.Terminate;
end;
initialization
InitProc := @MyInitProc;
end.
アプリケーションをすぐに終了しないため、これは機能しません。Application.Terminate
代わりに、メッセージを投稿するWM_QUIT
だけです。このメッセージは、すべての初期化が完了した後に受信され、処理されます。
于 2013-02-28T13:44:17.987 に答える