精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● VFP>>〖外部引用〗>>当应用程序已经运行,再运行快捷方式就还原已经运行的系统

主题:当应用程序已经运行,再运行快捷方式就还原已经运行的系统
发信人: foxzz()
整理人: foxzz(2002-12-22 08:33:22), 站内信件
Declare integer SendMessage in user32 ;
        integer, integer, integer, integer
Declare Integer FindWindow IN USER32.DLL AS FindWindow ;  
        String,String  
Declare Integer GetClassNameA In user32.Dll As GetClassName ;  
        Integer,String @,Integer @  
Declare Integer FindWindowExA In user32.Dll As FindWindowEx ;  
        Integer,Integer,String,String  
Declare Integer GetWindowTextA In user32.Dll As GetWindowText ;  
        Integer,String @,Integer @  

Local hWnd,hWnd2  
Local cClassName,nClassNameLen  
Local cWndTst,nWndTstLen  
&& 取得窗口类名  
hWnd = FindWindow(0,_screen.Caption)  
cClassName = Space(256)  
nClassNameLen = GetClassName(hWnd,@cClassName,255)  
cClassName = Left(cClassName,nClassNameLen)  

Release nClassNameLen  
&& 开始遍历窗口  
hWnd2 = 0  
Do While .T.  
   hWnd2 = FindWindowEx(0,hWnd2,cClassName,0)  
   cWndTst = Space(256)  
   nWndTstLen = GetWindowText(hWnd2,@ cWndTst,255)  
   If hWnd2 = 0 && 遍历完毕  
      Exit  
   EndIf  
   If nWndTstLen = 0 && 无标题窗口----一个VFP程序运行时,系统中有多个这样的窗口  
      Loop  
   EndIf  

   cWndTst = Left(cWndTst,nWndTstLen)  
   If Not hWnd = hWnd2 && 本程序的另外进程  
      = ShowWindowAsync(hwnd2, 1)
      = SetForegroundWindow(hwnd2)
      && MessageBox("程序已经运行,不能重复加载!")  
      quit
      Exit  
   EndIf  
EndDo  

Release hWnd,cClassName,cWndTst,nWndTstLen  





[关闭][返回]