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