Solved

Check if appliacation already running in vb.net

Posted on 2016-08-03
4
54 Views
Last Modified: 2016-08-04
I have the following code  to launch an external program via a button

 Dim p As New System.Diagnostics.Process

        p.StartInfo.FileName = "C:\Program Files (x86)\Campaign Maintenance\MarketingCampaignFrontEnd.exe"

        p.start

Works fine except that if the button is clicked multiple times, multiple instances of the program are launched

I'd like to add code so that the application is only started if it is not already running
0
Comment
Question by:johnnyg123
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
4 Comments
 
LVL 84
ID: 41741124
Perhaps the "Make Single Instance Application" option would work for you? That's found in the My Project >> Application section.

MSDN article on the property: https://msdn.microsoft.com/en-us/library/8fz4ssw2(v=vs.100).aspx

Of course, this won't stop UserA on MachineA from running their local instance while UserB on MachineB is running their own local instance.
0
 

Author Comment

by:johnnyg123
ID: 41741196
Thanks for the response.....I think I need to explain a bit further what I am looking for


I wasn't looking on how to keep multiple instances of the vb.net application from being launched

The vb.net application has a "Main Menu" form with many buttons on it

One of the buttons will launch an external application

My question was regarding checking to see if an instance of the external application was already running.

I believe it is possible to check using a shell command but I saw something that gave me the impression that System.Diagnostics.Process  should be used  instead

Hope that better explains what I am looking for
0
 
LVL 34

Accepted Solution

by:
it_saige earned 500 total points
ID: 41741269
What you want to do is get a list of the current processes that are running on the computer and compare them to the process you want to start.  If the process is not found in the list, then you can start the process; otherwise perform the set of tasks, if any, to properly handle the process running already.

In other words -
Module Module1
	Sub Main()
		' Note the usage of NOTEPAD.  This is because GetProcessByName 
		' uses the Friendly Name of the process.
		If Not IsProcessRunning("NOTEPAD") Then
			Process.Start("NOTEPAD.EXE")
			Console.WriteLine("Notepad started...")
		Else
			Console.WriteLine("Notepad is running...")
		End If
		Console.ReadLine()
	End Sub

	Function IsProcessRunning(name As String)
		Return Process.GetProcessesByName(name).Length > 0
	End Function
End Module

Open in new window

Will produce the following output with notepad not currently running -Capture.JPGAnd with notepad already running -Capture.JPGIf you want it to show the running instance, then you have a variety of methods that can be used, but it's pretty standard to use the Windows API to get the window handle, activate it if needed and set as the foreground window.

-saige-
0
 

Author Closing Comment

by:johnnyg123
ID: 41742568
Thanks

Exactly what I was looking for
0

Featured Post

Forrester Webinar: xMatters Delivers 261% ROI

Guest speaker Dean Davison, Forrester Principal Consultant, explains how a Fortune 500 communication company using xMatters found these results: Achieved a 261% ROI, Experienced $753,280 in net present value benefits over 3 years and Reduced MTTR by 91% for tier 1 incidents.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Parsing a CSV file is a task that we are confronted with regularly, and although there are a vast number of means to do this, as a newbie, the field can be confusing and the tools can seem complex. A simple solution to parsing a customized CSV fi…
The ECB site provides FX rates for major currencies since its inception in 1999 in the form of an XML feed. The files have the following format (reducted for brevity) (CODE) There are three files available HERE (http://www.ecb.europa.eu/stats/exch…

738 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question