Red de conocimiento informático - Aprendizaje de código fuente - Lenguaje simple Si se da cuenta de que solo se puede ejecutar un programa, ¡la ventana principal aparecerá automáticamente cuando lo ejecute nuevamente!

Lenguaje simple Si se da cuenta de que solo se puede ejecutar un programa, ¡la ventana principal aparecerá automáticamente cuando lo ejecute nuevamente!

Crear un mutex es la única forma de lograr esto, simplemente detectar el nombre del proceso es inútil, aún se ejecutará después de cambiar el nombre.

Comando dll utilizado

.Versión 2

Comando .DLL CreateMutex, entero, "kernel32.dll", "CreateMutexA"

.Parameter Estructura Mutex, SECURITY_ATTRIBUTES

.El parámetro tiene elementos estáticos, tipo lógico

.DLL comando WaitForSingleObject, entero, "WaitForSingleObject"

.Parameter hHandle , entero

.Parámetro dwMillisegundos, entero

.DLL comando ReleaseMutex, entero, "kernel32.dll", "ReleaseMutex"

.Parámetro hMutex, entero< / p>

.Comando DLL CloseHandle, lógica, "CloseHandle"

.Parámetro hObject, tipo entero

'Tipo de datos utilizado

.Versión 2

. Tipo de datos SECURITY_ATTRIBUTES, estructura de seguridad

.Member nLength, entero

. Miembro lpSecurityDescriptor, entero

. Miembro bInheritHandle, Integer

'Determina si la subrutina se ha ejecutado repetidamente, donde el argumento es la cadena de función que desea crear, como "Mi programa".

.Versión 2

.Subrutina system_disable_repeat_run, lógica, devuelve verdadero si se ha ejecutado, en caso contrario devuelve falso

. Parámetro Cadena de característica, tipo de texto

. Identificador de variable local, entero

Variable local security_structure, SECURITY_ATTRIBUTES

Handle = CreateMutex (security_structure, true, feature_string) '. feature_string se utiliza para determinar si existe un mutex

. Si es verdadero (WaitForSingleObject (identificador, 100) = 258)

ReleaseMutex (identificador)

CloseHandle (identificador)

Devolución (verdadero)

. Si es verdadero, finaliza

Devuelve (falso).