Solved

Check if appliacation already running in vb.net

Posted on 2016-08-03
4
40 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
  • 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 33

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

3 Use Cases for Connected Systems

Our Dev teams are like yours. They’re continually cranking out code for new features/bugs fixes, testing, deploying, testing some more, responding to production monitoring events and more. It’s complex. So, we thought you’d like to see what’s working for us.

Question has a verified solution.

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

This article describes relatively difficult and non-obvious issues that are likely to arise when creating COM class in Visual Studio and deploying it by professional MSI-authoring tools. It is assumed that the reader is already familiar with the cla…
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…
With the power of JIRA, there's an unlimited number of ways you can customize it, use it and benefit from it. With that in mind, there's bound to be things that I wasn't able to cover in this course. With this summary we'll look at some places to go…
Video by: Mark
This lesson goes over how to construct ordered and unordered lists and how to create hyperlinks.

910 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

Need Help in Real-Time?

Connect with top rated Experts

21 Experts available now in Live!

Get 1:1 Help Now