2
我想在我運行的應用程序觸發一個事件,並用URL方案在Windows 10 調用提供參數,我們做了如下注冊表項:的Windows URL方案調用運行的程序
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"
顯然,當調用'alert:arg1'時,它總是用一個參數啓動我的應用程序的新實例。但是我想讓Windows調用我已經運行的實例。
在Mac,這個URL方案的呼叫觸發一個事件,我能趕上。正好如我所願。爲此,我將以下部分添加到alert.app/Contents/Info.plist中:
<array>
<dict>
<key>CFBundleURLName</key>
<string>Alert</string>
<key>CFBundleURLSchemes</key>
<array>
<string>alert</string>
</array>
</dict>
</array>
那麼我如何在Windows上實現這一點?我在編程這個XOJO應用面向對象的基本的,但我會很高興的通用解決方案。
的Windows只是將重新啓動可執行所以你的問題實在是「如何做IPC在Windows」。我不知道你什麼堆支持,但是這通常是由具有EXE完成嘗試創建一個命名的互斥體在加載時,如果它不能它知道自己的另一個實例正在運行,此時它使用一個IPC機制,使例如通過發送命名管道來轉發其命令行。 –
讓您的應用程序單實例(事實上的方法是使用一個互斥)和新啓動的情況下將消息發送到已經運行的一個,然後退出。 – CodeCaster
感謝Alex和CodeCaster領導我的正確途徑。有了這些信息,我發現了一篇帶有工作代碼的好文章,並將其作爲答案發布。 –