Z
zceo
Unregistered / Unconfirmed
GUEST, unregistred user!
要保证一个实例在运行,这一点,在窗体不隐藏时可以实现,但是如果在第一个实例隐藏后,我想使用第二个实例将隐藏的第一个实例窗体显示出来,然后再关闭自已时(也就是关闭第二个窗体)第一个窗体会一闪而过,不知道是什么原因?<br>我所需要实现的功能如下:使用第二个实例将隐藏的第一个实例窗体显示出来,然后再关闭自已。不管第一个实例是显示,还是隐藏。即保证只有一个实例在运行。<br>procedure TForm1.FormCreate(Sender: TObject);<br>var<br> MutexHandle: Thandle;<br> h: HWND;<br>begin<br><br><br> Mutexhandle := windows.CreateMutex(nil, true, '电话机');<br> if Mutexhandle <> 0 then<br> begin<br> if getlasterror = windows.ERROR_ALREADY_EXISTS then<br> begin<br> Application.MessageBox('本程序已有运行实例!', '启动提示!', 48);<br><br> h := FindWindow(nil, '电话机'); //把string转化成pchar<br> if h<>0 then<br> edit1.Text := inttostr(h);<br> ShowWindow(h,SW_SHOW);<br> Application.Terminate;<br> end;<br> end;<br><br>end;<br><br><br>//并不真正关闭程序,隐藏<br>procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);<br>begin<br> CanClose := False;<br> Hide;<br><br>end;