发信人: gzwsh()
整理人: gzwsh(2000-08-31 23:22:47), 站内信件
|
在Form_Initialize事件中:
FindWindow、OpenIcon为API函数,OpenIcon函数是将最小化的窗口还原
Private Sub Form_Initialize()
Dim ret As Long,ret1 As Long
ret = FindWindow(vbNullString, "Form1")
If ret = 0 Then Exit Sub
ret1=IsIconic(ret)
If ret1<>0 Then
ret1 = OpenIcon(ret)
End If
AppActivate "Form1"
End
End Sub
这种方法与App对象中判断一个实例是否存在的方法有一点不同,
App.PrevInstance判断是否存在一个实例,这是VB内建的对象,
在某些应用时,就不及使用API灵活。
例如,要激活已运行的一个实例时,一般可以使用
AppActivate (Titel,[Wait])
但是,如果已运行的一个实例处于最小化状态时,这个方法就不
行了,必须使用API将已运行的一个实例还原,这时,就需要获得
已运行的一个实例的窗口的hWnd,所以在程序开始时,就不判断
App.PrevInstance是否为真,而是改用FindWindow看看是否已运
行了该程序的窗口,来判断是否存在一个实例。
当然,这种方法,对于窗口标题经常会改变的程序,会有点问题,
就是在FindWindow(vbNullString, "Form1")中,"Form1"经常
改变,可能查找比较麻烦。FindWindow中的第一个参数改成类名的
话,应该就可以解决这个问题,但是在VB中对于每个窗口的类名都
是相同的,我想可以通过API改变窗口的类名,不过我就未试过成功,
主要是对API还不太熟悉。
-- ※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.104.71.4]
|
|