Je veux déclencher un événement dans mon application en cours d'exécution et de fournir des arguments à l'appel d'un schéma d'URL dans Windows 10. J'ai fait l'entrée de Registre suivante:système de Windows URL appel à programme en cours d'exécution
HKEY_CLASSES_ROOT
alert
(Default) = "URL:Alert Protocol"
URL Protocol = ""
DefaultIcon
(Default) = "alert.exe,1"
shell
open
command
(Default) = "C:\Program Files\Alert\alert.exe" "%1"
Il est évident que , cela démarre toujours une nouvelle instance de mon application avec un argument, en appelant 'alert: arg1'. Mais je veux que Windows appelle mon instance déjà en cours d'exécution.
Avec Mac, l'appel de ce schéma d'URL déclenche un événement, je peux attraper. Exactement, comme je le veux. Pour ce faire, j'ai ajouté la partie suivante à alert.app/Contents/Info.plist:
<array>
<dict>
<key>CFBundleURLName</key>
<string>Alert</string>
<key>CFBundleURLSchemes</key>
<array>
<string>alert</string>
</array>
</dict>
</array>
Alors, comment puis-je réaliser cela sur Windows? Je programme cette application dans XOJO avec BASIC orienté objet, mais je serai content d'une solution générale.
Windows relance simplement l'exécutable afin que votre question soit vraiment "comment faire IPC sous Windows". Je ne sais pas ce que vous empilez mais cela est généralement accompli en demandant à l'exe de créer un mutex nommé quand il se charge, s'il ne peut pas savoir qu'une autre instance de lui-même est en cours d'exécution à quel point il utilise un mécanisme IPC transmettre sa ligne de commande, en envoyant par-dessus un tuyau nommé par exemple. –
Faites de votre application une instance unique (de facto, utilisez un Mutex) et envoyez un message de l'instance nouvellement démarrée à l'instance déjà en cours, puis quittez. – CodeCaster
Merci à Alex et CodeCaster de m'avoir conduit de la bonne façon. Avec cette information j'ai trouvé un bon article avec le code de travail et l'ai posté comme réponse. –