3.12. Prevent Your Application from Starting Twice
Want to make sure that the user can run no more than one copy of your application on the same computer? In VB .NET 1.0, you'd need to go through the awkward task of searching all the loaded processes to make sure your program wasn't already in memory. In VB 2005, the work is done for you.
Note: There's no longer a need to write code to check whether your application is already running. VB 2005 will perform the check for you.
3.12.1. How do I do that?
In Visual Studio, double-click the My Project item in the Solution Explorer. A tabbed window with application settings will appear. Click the Application tab, and look at the Windows Application Properties section at the bottom of the tab. Now click the "Make single instance application" checkbox and build the project.
If you try to start the application while it's already running, it will ignore you completely, and nothing will happen.
3.12.2. What about...
...showing a custom error message? If you need to show an error message, check for other instances without stopping the application, or otherwise tweak the code, then you'll need to perform the check youself by using the System.Diagnostics.Process class. Here's the code to get you started:
' Get the full name of the process for the current application. Dim ModuleName, ProcessName As String ModuleName = Process.GetCurrentProcess.MainModule.ModuleName ProcessName = System.IO.Path.GetFileNameWithoutExtension(ModuleName) ' Check for other processes with this name. Dim Proc( ) As System.Diagnostics.Process Proc = Process.GetProcessesByName(ProcessName) If Proc.Length > 1 Then ' (There is another instance running.) Else ' (There are no other instances running.) End If
3.12.3. Where can I learn more?
For more information, look up the "ProcessInfo class" index entry in the MSDN help, or look up "Process class sample" index entry for a full-fledged example.