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
'--------------------------------------------------------------------------------------- ' 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
'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