How to Produce a List of Other Applications Running in WindowsID: Q121242
|
This article demonstrates an approach that you can use to produce a list of all applications that are running under Microsoft Windows.
It is sometimes necessary for a FoxPro application to determine whether another application is running. The following article explains how to use the FindWindow() function to determine whether a particular application is running:
Q110117 How to Pause Program Execution During a RUN CommandIn order to use the FindWindow() function, you need to know the complete text of the window title. In some cases, the complete text of the window title cannot be known. When a document is opened in Microsoft Word, for example, the title of the Microsoft Word window will contain the text "Microsoft Word - " followed by the name of the document that is being edited. Since it is not possible for a FoxPro application to know the full text of the window title in cases like this, the FindWindow() function cannot be used to determine whether the application is running.
? IsWindEx("Microsoft Word")
To produce a list of all visible windows currently in existence, call the
function with a null value, as follows:
=IsWindEx("")
FUNCTION IsWindEx
PARAMETERS WindowName
IsWindEx = .F.
SET LIBRARY TO foxtools.fll
* Register the Windows API functions that will be called
mGetWinTxt = RegFn("GetWindowText", "I@CI", "I")
mGetWindow = RegFn("GetWindow", "II", "I")
mIsWinVis = RegFn("IsWindowVisible", "I", "I")
* Get the HWND (handle) to the main FoxPro window
foxhwnd = MAINHWND()
* Produce a list of all windows
hwndNext = CallFn(mGetWindow,foxhwnd,0)
DO WHILE hwndNext <> 0
IF (hwndnext <> foxhwnd) .AND. ;
CallFn(mGetWindow,hwndnext,4) = 0 .AND. ;
CallFn(mIsWinVis,hwndnext) <> 0
Stuffer = SPACE(64)
x = CallFn(mGetWinTxt,hwndnext,@Stuffer,64)
* If a window name was specified, check to
* see if this is the specified window. If a
* window name was not specified, display the
* name of the window.
IF LEN(TRIM(WindowName)) = 0
? Stuffer
ELSE
IF WindowName $ Stuffer
IsWindEx = .T.
EXIT
ENDIF
ENDIF
ENDIF
hwndNext = CallFn(mGetWindow,hwndnext,2)
ENDDO
SET LIBRARY TO
IF LEN(TRIM(WindowName)) = 0
IsWindEx = .T.
ENDIF
RETURN IsWindEx
For more information about the functions called in this code sample, please
refer to the documentation for the Windows 3.1 Software Development Kit or
the Microsoft Developer's Network (MSDN) Development Library CD-ROM.
Q80124 Retrieving the Names of Simultaneous Tasks Under Windows
MSDN Development Library CD Microsoft Windows 3.1 SDK documentation Microsoft Visual C/C++ documentation Microsoft Knowledge Base article Q80124
Additional query words: VFoxWin FoxWin 2.50 2.50a 2.50b task open task list task manager emulate taskmanager
Keywords : kbcode kbVFp300 kbVFp600 FxprgFoxtools
Version : 2.5x 2.60 2.60a 3.00
Platform : WINDOWS
Issue type :
Last Reviewed: August 3, 1999