Delphi 终止前显示窗口

Delphi 终止前显示窗口,delphi,Delphi,我有一个delphi应用程序,它在启动时检查一个进程是否已经在运行,如果它正在运行,我将数据传递给该进程并终止当前进程。问题:在终止当前进程时,应用程序窗口在终止前闪烁一秒钟。所有的代码都在应用程序初始化中,甚至在创建主窗体之前,所以我不明白它如何在一瞬间显示窗体。我尝试过很多方法,比如让窗户隐形,但似乎没有任何效果。是不是我做错了什么事。你显然没有很快终止合同。我会做类似的事情 program Project1; uses Forms, Windows, Unit1 in 'Un

我有一个delphi应用程序,它在启动时检查一个进程是否已经在运行,如果它正在运行,我将数据传递给该进程并终止当前进程。问题:在终止当前进程时,应用程序窗口在终止前闪烁一秒钟。所有的代码都在应用程序初始化中,甚至在创建主窗体之前,所以我不明白它如何在一瞬间显示窗体。我尝试过很多方法,比如让窗户隐形,但似乎没有任何效果。是不是我做错了什么事。

你显然没有很快终止合同。我会做类似的事情

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.
更新:我相信你会这样做

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
不会立即终止应用程序。相反,它很简单。此消息将在所有初始化完成后接收并执行。

我想您也可以替换
应用程序。通过
Halt
终止
,但我认为这很糟糕(太严重)。由于您的问题依赖于此,请向我们展示代码。>“我有什么做错了吗?”>很可能。