[SRC][mAltMutex.bas] Alternativa a CreateMutex

Iniciado por Karcrack, 1 Febrero 2009, 13:07 PM

0 Miembros y 1 Visitante están viendo este tema.

Karcrack

Bueno, he aqui una alternativa al CreateMutex...

Como todos sabemos el Mutex sirve para que no haya dos instancias de nuestra app corriendo simultaneamente...

He aqui el codigo del modulo, los creditos estan en los comentarios ;):
Código (vb) [Seleccionar]
'---------------------------------------------------------------------------------------
' Modulo    : mAltMutex
' Autor     : Karcrack
' Fecha-Hora: 01/02/2009  12:27
' Finalidad : Comprobar si hay otra instacia de nuestra APP ejecutandose
' Referencia: http://hackhound.org/forum/index.php?topic=8967.0;topicseen
' Agradec.  : steve10120 por codearlo en Delphi, yo solo lo traduci. Y agrege un API xD
'---------------------------------------------------------------------------------------

Option Explicit
Private Declare Function GlobalAddAtom Lib "kernel32.dll" Alias "GlobalAddAtomA" (ByVal lpString As String) As Integer
Private Declare Function GlobalFindAtom Lib "kernel32.dll" Alias "GlobalFindAtomA" (ByVal lpString As String) As Integer
Public Declare Function GlobalDeleteAtom Lib "kernel32.dll" (ByVal nAtom As Integer) As Integer

Public Function CheckIfRunning(ByVal sStr As String, Optional ByRef lID As Long) As Boolean
   If GlobalFindAtom(sStr) Then
       CheckIfRunning = True 'Estamos siendo ejecutados
   Else
       lID = GlobalAddAtom(sStr) 'No estamos siendo ejecutados
       'Devolvemos el ID, para que despues pueda ser eliminado el Atom
   End If
End Function


Y aqui un ejemplo de uso:
Código (vb) [Seleccionar]

'En un Formulario
Option Explicit

Public lID      As Long

Private Sub Form_Load()
   If CheckIfRunning("Karcrack_Probando", lID) = True Then
       MsgBox "Ya hay otra instacia abierta...", , "ADIOS"
       End
   End If
End Sub

Private Sub Form_Unload(Cancel As Integer)
   'Eliminamos el Atom antes de cerrarnos
   Call GlobalDeleteAtom(lID)
End Sub


Saludos ;D

invisible_hack

Bueno hombre, ya que nadie se anima a postear una respuesta dejame que sea el primero en felicitarte por crear éste modulito, por lo que veo te has aficionado a crear funcioncillas en VB porque hace unas semanas recuerdo haber visto otra tuya...

Creo que no estaría mal que hicieras un post aparte a modo de recopilación con todas las funciones que lleves hechas, y que le ponga Seba chincheta, quedaria bien, yo creo  ;)

Saludos
"Si no visitas mi blog, Chuck te dará una patada giratoria"


Karcrack

Gracias por las respuestas, me alegro que os haya agradado, pero recordar que no son mios todos los meritos, sino tambien de Steve de HH, yo solo lo porte a VB ;):
http://hackhound.org/forum/index.php?topic=8967.0;topicseen

No creo que haga falta que cree mi propia recopilacion de funciones o codigos, ya que E0N y Seba123Neo actualizan la lista de este subforo con bastante regularidad ;D

Saludos ;D

Fr4NN^

buenas.. ante que nada buen code ;)

Te hago una pregunta.. si el nombre de la aplicación es cambiado...
esto seguiría funcionando ?

Saludos
Leyendo se aprende


seba123neo

La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson