la idea es que el proceso no se pueda ejecutar dos veces
Código
/* nota para que funcione correctamente se debe ejecutar desde fuera de un ide */ #include <windows.h> #include <stdio.h> void instalar() { /* aca se supone copia el programa en directorio fijo asi programa.exe siempre sera el mismo y no cambiara el nombre*/ } bool bloquear() { HANDLE hFile = CreateFileA("programa.exe", GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0); // se abre el archivo en modo lectura OVERLAPPED overlapped; const int lockSize = 10; if (!LockFileEx(hFile, LOCKFILE_EXCLUSIVE_LOCK|LOCKFILE_FAIL_IMMEDIATELY, 0, lockSize, 0, &overlapped))//lo que hace es bloquear un archivo para que solo un programa pueda abrirlo; se bloquea el mismo programa en ejecucion en caso de que ya esta bloqueado se asume que ya esta en ejecucion { return true; } else { return false; } } int main() { if(!bloquear()) // si lo logra bloquear entonces se ejecuta { while(true) { Sleep(1000); } } else // si no cierra el proceso { Sleep(2000); return 0; } return 0; }