关于FindWindow的用法 ( 积分: 20 )

  • 主题发起人 主题发起人 zzjat
  • 开始时间 开始时间
Z

zzjat

Unregistered / Unconfirmed
GUEST, unregistred user!
Hwnd&nbsp;:=&nbsp;FindWindow('TForm1','Form1')&nbsp;&nbsp;;<br>&nbsp;&nbsp;if&nbsp;&nbsp;Hwnd&nbsp;&lt;&gt;&nbsp;0&nbsp;then<br>&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;PostMessage(Hwnd,WM_Close,0,0)&nbsp;;<br>&nbsp;&nbsp;end;<br>&nbsp;&nbsp;我这段代码的目地是想让程序在运行时检查一下有没有另一个副本在运行,编译后Copy了一份可执行文件,然后运行Copy的程序,当我在Delphi中启动程序时,第一次运行的那个文件没有被关闭,但是当我把caption改一下名字后再运行时,第一次运行的程序就可以关闭了,为什么?
 
或者这样说,如何在运行一个程序时检查有没有另一个副本在运行,有则关闭那个副本后再运行,而不是不运行
 
我找到一个偷鸡的方法:<br><br>procedure&nbsp;TForm1.FormShow(Sender:&nbsp;TObject);<br>var<br>&nbsp;&nbsp;Hwnd:THandle&nbsp;;<br>begin<br>&nbsp;&nbsp;Self.Caption&nbsp;:=&nbsp;'Self'&nbsp;;<br>&nbsp;&nbsp;Hwnd&nbsp;:=&nbsp;FindWindow(nil,'Form1')&nbsp;&nbsp;;<br>&nbsp;&nbsp;if&nbsp;&nbsp;Hwnd&nbsp;&lt;&gt;&nbsp;0&nbsp;then<br>&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;PostMessage(Hwnd,WM_Close,0,0)&nbsp;;<br>&nbsp;&nbsp;end;<br>&nbsp;&nbsp;Self.Caption&nbsp;:=&nbsp;'Form1'&nbsp;;<br>end;<br><br>有没有王道?
 
用互斥的方法吧...
 
接受答案了.
 
后退
顶部