Bonjour,
Je travail sur un programme qui doit tuer les autres instances de lui-même lorsqu’il se lance. Le programme doit être lancé en tâche planifiée. Et je veux que si jamais il se plante, le fait que la tâche planifiée le relance, cela provoque le tuage de l’ancienne instance.
Pour l’instant mode code ressemble à ça :
Mais je ne suis pas sûr que d’utiliser la méthode KillProcess de l’API Windows soit fiable. Si jamais mon programme est renommé, ou si un programme à le même nom…
Code Pascal : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 const WM_CLOSE = $0010; var HandleProg: HWND; iErreur: Integer; begin SetLastError(NO_ERROR); HandleProg := CreateMutex(nil, False, '{A3826744-3202-4602-9BA0-D722161D5C9D}'); iErreur := GetLastError(); // Si l'application est déjà lancée, on la ferme if iErreur in [ERROR_ALREADY_EXISTS, ERROR_ACCESS_DENIED] then KillProcess(ExtractFileName(Application.ExeName)); Application.Initialize; // ...
Quelqu’un aurait une autre idée ?
Partager