When working in Windows, it is very easy to lose a minimized icon onthe desktop. Or you may forget you have an application running and tryto open it again from the Program Manager. There are times, however, whenyou don’t want to run two separate instances of an application. To preventthis you can use the built-in system object App to determine whether anotherinstance of an application is running. Here’s a routine you can use inyour Form_Load() or Main() procedures to do this:
Sub Form_Load () Dim sCaption As String If App.PrevInstance Then sCaption = Me.Caption MsgBox "Another Instance Is Already Running" Me.Caption = "Different Caption" AppActivate sCaption SendKeys "% R", True Unload Me End If End Sub
Checking the App.PrevInstance property to see if it contains aTrue value tells you if another instance is running. If it is, inform theuser, then activate the first instance prior to shutting down the second.You can activate any application that is currently running by using theAppActivate statement and passing the text that appears in the application’stitle bar. This technique requires that the current instance has the same captionas the one you want to activate, so you’ll need to change the current titleof the main window and then call AppActivate with the caption of the application.Call the statement SendKeys to tell the other instance to restore itselfto a normal window state. The “% R” string passed to the SendKeysstatement tells the application to invoke the control menu and select theRestore option. The code to check for multiple instances should be placed in the Main()or Form_Load() of your start-up form. This technique will not work if youincorporate information within the caption at run time, such as the currentdata-file name.