最大化已存在的程序 ( 积分: 50 )

  • 主题发起人 主题发起人 simickm
  • 开始时间 开始时间
S

simickm

Unregistered / Unconfirmed
GUEST, unregistred user!
在启动程序时候,发现已该程序已经在运行,如何使已经运行的程序显示出来呢(可能已经最小化了)?
 
在启动程序时候,发现已该程序已经在运行,如何使已经运行的程序显示出来呢(可能已经最小化了)?
 
Uses OnlyOne.pas; 即可
www.hitekersoft.com/download/OnlyOne.rar
 
查找其句柄, 然后 ShowWindow(..., SW_MAXIMIZE)
 
请详细点
 
http://www.delphibbs.com/keylife/iblog_show.asp?xid=604
 
可是为什么不能关闭呢
 
program Project1;

uses
Windows,
Messages,
Forms,
Dialogs,
Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

var
h,h2:Hwnd;

begin

H := FindWindow('TForm1', nil);
if H = 0 then
begin
ShowMessage('没有发现相同的应用程序实例。');
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end
else
begin
ShowMessage('应用程序已经加载');
H2 := FindWindow(nil,'Project1'); //注意恢复application
ShowWindow(h2,SW_MAXIMIZE);
ShowWindow(h,SW_RESTORE);
SetForegroundWindow(H);
Halt;
end;


end.
 
我如何能恢复程序的界面呢? 因为应用程序的当前窗口不一定form1,
 
问题应该是恢复程序显示才对
 
你总知道恢复窗体的类名吧
用类名替换TFrom1
 
但是如果 Fom1 是MDI的主窗体, 可能包含有子窗体,我不知道那个自窗体打开了阿? 如果只是打开Form1 哪就不行了,没有其他的窗体怎么行呢?
 
program Project1;

uses
Windows,
Messages,
Forms,
Dialogs,
Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

var
h,h2:Hwnd;

begin

H := FindWindow('TForm1', nil);
if H = 0 then
begin
ShowMessage('没有发现相同的应用程序实例。');
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end
else
begin
ShowMessage('应用程序已经加载');
H2 := FindWindow(nil,'Project1'); //注意恢复application
ShowWindow(h2,SW_MAXIMIZE);
ShowWindow(h,SW_RESTORE);
SetForegroundWindow(H);
Halt;
end;


end.
 
众人抬烟火焰高,果然不错
 
后退
顶部