1

起動時にプロセスが既に実行されているかどうかを確認する Delphi アプリケーションがあります。実行中の場合は、そのプロセスにデータを渡し、現在のプロセスを終了します。問題: 現在のプロセスを終了する際に、アプリのウィンドウが終了前に一瞬点滅します。メインフォームが作成される前に、すべてのコードがアプリケーションの初期化にあるため、フォームを一瞬表示する方法がわかりません。ウィンドウを非表示にするなど、さまざまなことを試しましたが、何も機能していないようです。私が間違っていることはありますか?

4

1 に答える 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 に答える