Red de conocimiento informático - Aprendizaje de código fuente - ¿Cómo deshabilitar la ejecución repetida y abrir la ventana del programa en ejecución en la bandeja si se ejecuta repetidamente?

¿Cómo deshabilitar la ejecución repetida y abrir la ventana del programa en ejecución en la bandeja si se ejecuta repetidamente?

Cree un mutex, todos los demás juicios no son óptimos, crear un mutex es solo una cuestión de varias API

'La siguiente es la declaración de API y el tipo de datos

. Versión 2

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

Parámetros Estructura Mutex, SECURITY_ATTRIBUTES

. , tipo lógico

.DLL comando WaitForSingleObject, entero, "WaitForSingleObject"

.Parámetro hHandle, entero

. Parámetro dwMillisegundos, entero

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

.Parámetro hMutex, entero

.DLL comando CloseHandle , lógico, "CloseHandle", público

.DLL comando CloseHandle, tipo lógico, , "CloseHandle", público

.Versión 2

.Tipo de datos SECURITY_ATTRIBUTES , , estructura de seguridad;

.Member nLength, entero

. Miembro lpSecurityDescriptor, entero

. Miembro bInheritHandle, entero

'El siguiente es el código de subrutina

Versión 2

Subrutina System_DisableRepeatRun, lógico, público, devuelve verdadero si se ha ejecutado. , de lo contrario devuelve falso

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

Manejador de variable local, tipo entero

Estructura de seguridad de variable local, SECURITY_ATTRIBUTES

Handle = CreateMutex (estructura de seguridad, verdadero). cadena característica) 'La cadena característica 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).