Programa ya en ejecucion

19/02/2006 - 06:44 por Fernando Alonso | Informe spam
Me podrian decir como le hago para que un programa no se ejecute 2 o mas
veces ala vez, es decir que al querer abrirlo muestre un mensaje que ya esta
en ejecucion.

gracias...

Preguntas similare

Leer las respuestas

#1 Jorge Serrano [MVP VB]
19/02/2006 - 09:04 | Informe spam
Hola Fernando,

el siguiente ejemplo está sacado de una contribución a los foros en inglés.
Hay más métodos para solucionar lo que indicas. Este es uno de ellos.

Espero que te ayude.

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
If CountOfApplicationInstances() > 1 Then MessageBox.Show("Programa
ya en ejecución") : End
End Sub

' Return a count of the running instances of the
' current application. This can be useful if you want
' to control the number of instances that can run
' at a time.
Public Function CountOfApplicationInstances() As Integer
Dim counter As Integer
' Get a handle to the current proces
Dim currentProcess As Process = Process.GetCurrentProcess()
' Get an array of all instances of the application
Dim Instances() As Process =
Process.GetProcessesByName(currentProcess.ProcessName)
' Iterate all processes with the same name
Dim processTmp As Process
For Each processTmp In Instances
' Check the name to see that it is running from the same path
Dim strPath As String =
System.Reflection.Assembly.GetExecutingAssembly.Location
' Fixup paths
Dim strFixedPath As String = strPath.Replace("/", "\")
' See if we have a match
If strFixedPath = currentProcess.MainModule.FileName Then
counter += 1
End If
Next
Return counter
End Function

Un saludo.

Jorge Serrano Pérez
Microsoft MVP VB.NET
PortalVB.com
http://www.portalvb.com/
Weblog de Jorge Serrano
http://weblogs.golemproject.com/jorge/


"Fernando Alonso" wrote:

Me podrian decir como le hago para que un programa no se ejecute 2 o mas
veces ala vez, es decir que al querer abrirlo muestre un mensaje que ya esta
en ejecucion.

gracias...
Respuesta Responder a este mensaje
#2 Eduardo A. Morcillo [MS MVP VB]
19/02/2006 - 16:09 | Informe spam
Este metodo no es del todo seguro ya que con simplemente cambiar el nombre
al ejecutable puedes abrir la aplicacion mas de una vez. Mas seguro es usar
un mutex. Como el mutex solo lo puede tener un hilo a la vez, si el proceso
no puede ser su propietario significa que hay otra instancia. Aqui hay una
clase que hace todo:

http://www.mvps.org/emorcillo/es/co...inst.shtml

La usarias asi:

If PrevInstance.Exists() Then
' Existe instancia previa
End If

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C
Respuesta Responder a este mensaje
#3 WillyXoft
19/02/2006 - 22:11 | Informe spam
Si estas utilizando VB2005 sólo tienes que especificarlo en las
Propiedades del Proyecto al seleccionar el cuadro de verificación "Make
single instance application".

http://dotnetjunkies.com/weblog/VBp...34728.aspx

Saludos,
Willy Mejía
www.willyxoft.com.mx


"A menudo encontramos nuestro destino por los caminos que tomamos para
evitarlo."
- Jean de La Fontaine (1621-1695); poeta francés.


Fernando Alonso wrote:
Me podrian decir como le hago para que un programa no se ejecute 2 o
mas veces ala vez, es decir que al querer abrirlo muestre un mensaje
que ya esta en ejecucion.

gracias...
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida