我做了个屏保程序,为防止重复运行,用If App.PrevInstance = 1 Then End来执行,结果发现好象无法中止,程序照样重复运行。我想用
wnd = FindWindow(vbNullString, Me.Caption)
If wnd <> Me.hWnd Then
   end
End If
即若已有程序运行,则wnd<>me.hwnd,程序中止。
运行发现当只有一个程序运行时,找到的wnd与me.hwnd仍然不同(应该是同一程序的hwnd)。为什么?有什么办法解决?

解决方案 »

  1.   

    试着输出一下wnd,看看是不是等于0,我估计wnd=0
      

  2.   


    wnd = FindWindow(vbNullString, Me.Caption)FindWindow(
        LPCTSTR lpClassName, // pointer to class name
        LPCTSTR lpWindowName  // pointer to window name
       )lpWindowName 是窗口的名称,不是Me.Caption
      

  3.   

    wnd的值<>0,说明可以找到,可能是不能用me.caption,但窗口名称怎么得到?我用ctrl+alt+del的方法知道VB程序进程名称总是“工程1”。难道它就是窗口名称吗?能修改吗?
      

  4.   

    If App.PrevInstance = 1 Then 
     unload me   '不如改成这样
    endif