发信人: 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]
  | 
 
 
 |