Si on veut être multi-plateforme, il faut déjà considérer la nécessité ou non d'avoir une identification externe d'instance.
Pour exécuter sous condition et créer ou gérer une ou plusieurs instances, ce n'est pas nécessaire de chercher des API. On a besoin de telles APIs quand on doit gérer plusieurs fichiers exécutables et pas forcément issus de PureBasic.
Là, ce n'est pas trop la demande. Alors on peut créer et contrôler soi-même des indentifications d'instance.
On peut par exemple utiliser l'adressage simple
Code : Tout sélectionner
Procedure ProcessGetId()
ProcedureReturn @ProcessGetId()
EndProcedure
Code : Tout sélectionner
Procedure ThreadedProcessGetId()
Define temporary.I
Mov [p.v_temporary], eax ; ou rax pour du x64
ProcedureReturn @ThreadedProcessGetId() ! temporary
EndProcedure
La 2ème fonction ThreadedProcessGetId() permet de gérer des instances sans la contrainte de temps (simultanées/threads).
Enfin, on peut protéger contre un contrôle verreux en cryptant chaque identification d'instance avec la librairie native de cryptage.
Tout ça dans un TXT. On peut enfin se contraindre à ce que chaque process contiennent une copie/image du TXT au cas où une suppression inopinée se produise.