Article ID: 72918 - View products that this article applies to.
This article was previously published under Q72918
To determine if a specific program is running, call the Windows API function FindWindow.
FindWindow returns the handle of the window whose class is given by the lpClassname parameter and whose window name (caption), is given by the lpCaption parameter. If the returned value is zero, the application is not running.
NOTE: Only 16-bit implementations of VBA support the sample code in this article.
This information is included with the Help file provided with Microsoft Professional Toolkit for Visual Basic version 1.0, Microsoft Visual Basic version 2.0, and Microsoft Visual Basic version 3.0.
By calling FindWindow with a combination of a specific program's class name and/or the title bar caption, your program can determine whether that specific program is running. When an application is started from the Program Manager, it registers the class name of the form. The window class provides information about the name, attributes, and resources required by your form. MDI forms in Visual Basic have ThunderMDIForm as their class name, and all other Visual Basic forms have ThunderForm as their class name.
You can determine the class name of an application by using SPY.EXE that comes with the Microsoft Windows Software Development Kit (SDK) version 3.0 or 3.1.
If the window has a caption bar title, you can also use the title to locate the instance of the running application. This caption text is valid even when the application is minimized to an icon.
Because another instance of your Visual Basic program will have the same class name and may have the same title bar caption, you must use dynamic data exchange (DDE) to determine if another instance of your Visual Basic program is running. (This DDE technique is not shown in this article).
Step-by-Step ExampleThe following example shows three ways to determine if the Windows Calculator is running. To create the program, do the following:
Class Name Application SciCalc CALC.EXE CalWndMain CALENDAR.EXE Cardfile CARDFILE.EXE Clipboard CLIPBOARD.EXE Clock CLOCK.EXE CtlPanelClass CONTROL.EXE XLMain EXCEL.EXE Session MS-DOS.EXE Notepad NOTEPAD.EXE pbParent PBRUSH.EXE Pif PIFEDIT.EXE PrintManager PRINTMAN.EXE Progman PROGMAN.EXE (Windows Program manager) Recorder RECORDER.EXE Reversi REVERSI.EXE #32770 SETUP.EXE Solitaire SOL.EXE Terminal TERMINAL.EXE WFS_Frame WINFILE.EXE MW_WINHELP WINHELP.EXE #32770 WINVER.EXE OpusApp WINWORD.EXE MSWRITE_MENU WRITE.EXE
Article ID: 72918 - Last Review: December 12, 2003 - Revision: 2.0