Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour,
je souhaiterais lorsque je lance mon application pb qu'elle vérifie si la même application est lancée sur une autre session windows du même poste et si c'est le cas l'arrêter(pour garantir l'unicité de l'instance sur le poste) ou simplement arrêter les autres exe sans vérifier.
J'ai pensé à faire un .bat que je lancerai à partir de pb mais quelqu'un a une autre idée?
Merci pour votre aide
Hors ligne
Hello,
si c'est sur des windows récents tu récupères le PID de ton EXE (via un API) et tu lances la commande TASKKILL /F /IM notepad.exe /FI "PID ne 8652"
Ensuite il y aura peut-être un soucis de droits windows pour killer un processus d'une autre session.
Hors ligne
Suivant ce qui veut être fait (empêcher un second démarrage ou tuer une instance précédente), en utilisant un mutex (API Win32) il est possible de faire qu'une application qui démarre détecte qu'une autre instance d'elle-même tourne déjà et du coup elle stoppe son démarrage pour ne garder que la précédente.
Ça évite de tuer une instance qui est en train de travailler.
Exemple avec variantes kivonbien dispo sur StackO.
Hors ligne
oui en effet, j'ai des problèmes de droits d'accès aux applications ouvertes par une autre session. Je ne peux pas killer le process.
Merci pour vos réponse
Hors ligne
Je pensais faire un exemple à partir du code StackO, mais ce cher Roland Smith a déjà une version pour PowerBuilder : mutex in PB
Hors ligne