Run only once

  • Thread starter Thread starter Guest
  • Start date Start date
G

Guest

Hello

I want to make an aplication that runs only one time

Let me explain better, each time I click on 'calculator' icon, it will open several 'calculators'

What I want to do is to make a aplication that, if I click is icon it will open the aplication, if the aplication is already open it will 'bring it to front' instead of open a new aplication

Thank's in advanc

Luis Mendes
 
Hi Luis,

When you speak a little bit German I would look here, it gives the best
solutions.
http://dotnet.mvps.org/dotnet/code/application/

"Nur eine etc.

Without the German you can have a look at the code and if that not succeed
as well than

Single instance
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwinforms/html/reaworapps1.asp


I hope this helps a little bit?

Cor
I want to make an aplication that runs only one time.

Let me explain better, each time I click on 'calculator' icon, it will open several 'calculators'.

What I want to do is to make a aplication that, if I click is icon it will
open the aplication, if the aplication is already open it will 'bring it to
front' instead of open a new aplication.
 
Here is the code I am using (although it does not bring the "running
instance to the front", sounds like a good idea).

Option Strict On
Imports System.Threading

Module Main
Private Sub SubMain()

SingletonApp.Run(New MyForm)

End Sub
Enc Module


Public Class SingletonApp

Shared m_Mutex As Mutex
Public Shared Sub Run(ByVal mainForm As Form)
If (IsFirstInstance()) Then
AddHandler Application.ApplicationExit, AddressOf OnExit
Application.Run(mainForm)
End If
End Sub
Public Shared Function IsFirstInstance() As Boolean

' use this to create a unique guid for your app...
'Dim g As New Guid
'g = Guid.NewGuid
'Debug.WriteLine(g.ToString)

m_Mutex = New Mutex(False, "8ca35a66-6e9a-41d4-a87d-d9755b1f88c4") '
arbitrary GUID
Dim owned As Boolean = False
owned = m_Mutex.WaitOne(TimeSpan.Zero, False)
Return owned
End Function

Public Shared Sub OnExit(ByVal sender As Object, ByVal args As
EventArgs)
m_Mutex.ReleaseMutex()
m_Mutex.Close()
End Sub
End Class

HTH,
Greg

Luis Mendes said:
Hello,

I want to make an aplication that runs only one time.

Let me explain better, each time I click on 'calculator' icon, it will open several 'calculators'.

What I want to do is to make a aplication that, if I click is icon it will
open the aplication, if the aplication is already open it will 'bring it to
front' instead of open a new aplication.
 
The code I currently use is

Dim Processes() As Process
Processos = Process.GetProcessesByName("Taskfind")
If Processos.Length > 1 Then
End
'If any process with the same name is running, end the application
End If
Application.Run(FormToBeRun) 'If not, open the form

This code is in Sub Main.

Andre Nogueira

Luis Mendes said:
Hello,

I want to make an aplication that runs only one time.

Let me explain better, each time I click on 'calculator' icon, it will open several 'calculators'.

What I want to do is to make a aplication that, if I click is icon it will
open the aplication, if the aplication is already open it will 'bring it to
front' instead of open a new aplication.
 
* "=?Utf-8?B?THVpcyBNZW5kZXM=?= said:
I want to make an aplication that runs only one time.

Let me explain better, each time I click on 'calculator' icon, it will open several 'calculators'.

What I want to do is to make a aplication that, if I click is icon it will open the aplication, if the aplication is already open it will 'bring it to front' instead of open a new aplication.

<URL:http://www.pobox.com/~skeet/csharp/faq/#one.application.instance>
 
Back
Top