Windows URL方案调用正在运行的程序

时间:2017-07-28 11:50:40

标签: windows ipc url-scheme xojo

我希望在正在运行的应用程序中触发一个事件,并在Windows 10中调用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上实现这一点呢?我使用面向对象的BASIC在XOJO中编写了这个应用程序,但我对一般解决方案感到高兴。

1 个答案:

答案 0 :(得分:1)

好吧,在阅读了Alex的答案后,我搜索了如何通过代码实现这一点,并找到了一个用C#编写的布拉德史密斯解释和工作solution

上面的注册表项可以保持不变,但程序还需要:

  
      
  • 服务类(由应用程序实例公开)   通过.NET远程处理)
  •   
  • 修改后的入口点(将与服务通信然后终止,或正常启动应用程序)
  •   

阅读他的文章并查看他的代码以获得进一步的解释。