我有一个 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 回答