关于避免二次运行(50分)

  • 主题发起人 主题发起人 lby15
  • 开始时间 开始时间
L

lby15

Unregistered / Unconfirmed
GUEST, unregistred user!
看程序:
program Project1;
uses
Forms, windows,
Unit1 in 'Unit1.pas' {Formabc};
{$R *.RES}
var
h:integer;
begin
h:=FindWindow(pchar('TFormabc'),nil);
if h > 0 then
begin
;//这里
end else
begin
Application.Initialize;
Application.CreateForm(TFormabc, Formabc);
Application.Run;
end;
end.
我要做的大家一看就明白
怎样才能做到:
1。如果应用程序是最小化,把它恢复,
2。把它显示在最前端。
3。还能再最小化.
please.
 
is setforeground work?
I remember lmd cando
this
not sure.
 
program Convert;
uses
.........
{$R *.RES}
var hwnd:thandle;
begin
hwnd:=findwindow(nil,'your title');
if hwnd=0 then
begin
Application.Initialize;
Application.CreateForm(TMainForm, MainForm);
Application.Run;
end
else
begin
if not iswindowvisible(hwnd) then
postmessage(hwnd,wm_user,0,0);//自定义消息
setforegroundwindow(hwnd);
end;
end.
-------
unit Main;
interface
uses
.....
type
TMainForm = class(TForm)
procedure wmuser(var msg:tmessage);message wm_user;//only once;
private
{ Private declarations }
public
{ Public declarations }
end;

var
MainForm: TMainForm;
implementation
procedure TMainForm.wmuser(var msg:tmessage);
begin
if msg.LParam=0 then
application.restore;
end;
.......
 
不行啊,Keyes兄。
 
行了,
>>hwnd:=findwindow(nil,'your title');
改一下。
 
不行也差不多了,就是用这种方法。
这类问题真多!
 
是啊! 刚才我还以为是前几天那个问题呢,原来是新的.
这只能说明本论坛的查询功能形同虚设.
 
var hwnds1:integer;
begin

hwnds1:=FindWindow(form的类名,form的Caption的名字);
if hwnds1<>0 then
begin
SetForegroundWindow(hwnds1);
ShowWindow(hwnds1, SW_RESTORE);
Application.Terminate;
end;
Application.Initialize;
Application.CreateForm(Twblrform, wblrform);
Application.Run;
end.
 
真是对不起大家,其实我昨晚因为太着急,有一个程序今早就交工,
其实我也查找了,可能是找的关键字不对吧,找了几回,没找到我要的。
真是对不起两位老大。
因为着急,我记得我解决问题后,给分了,怎么还没结束呢。哦,忘了,唉!
分只给Keyes.后来的就不好意思了.
好象jlmouse的ShowWindow不行啊.
 
果然,昨晚又忘了,不好意思.
 
后退
顶部