c++ - 有没有类似于UWP windows.protocol的桌面机制?

标签 c++ windows winapi

UWP 应用可以使用 Extension Category="windows.protocol" ( MSDN ) 注册自定义方案。我通过注册 URI 方案 ( MSDN ) 了解自定义协议(protocol)处理程序,但它们总是启动应用程序的新实例。我想要的是 UWP 应用程序的行为:如果当前有一个正在运行的实例,它将被激活。

我还查看了 URL Monikers 和异步可插入协议(protocol) (MSDN),但它们仅在调用进程中的协议(protocol)时有效,例如在使用 Web View 时。即使某些其他进程(例如 Web 浏览器)调用该协议(protocol),UWP 应用也会被激活。

这是针对 C++ Win32 桌面应用程序的; .NET 不是一个选项。

此外,正如我在对 Anders 的提案的评论中所说,我不想在某些其他进程(例如浏览器)调用我的协议(protocol)时必须创建一个单独的组件来激活我正在运行的应用程序。 UWP 应用没有这样的要求,我希望我的应用也有同样的要求。

最佳答案

你可以实现IExecuteCommand ,这就是 Internet Explorer 对其 HTTP 注册 (DelegateExecute) 所做的。您的实现可以简单地查找应用程序的现有实例(如果有)并与之通信,或者正常启动。

This blog post应该让你开始......

关于c++ - 有没有类似于UWP windows.protocol的桌面机制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46571032/

相关文章:

c++ - 如何从包含浮点值的字符数组中获取第一个元素?

c++ - 在 gcc 中提供函数别名?

.net - 如何安装同一个windows服务的多个实例

c - WM_SYSCOLORCHANGE 消息的含义

c++ - PostMessage() 成功但我的消息处理代码从未收到消息

windows - 获取文件系统目录条目的物理扇区

多个文件中的 C++ 全局变量

c++ - 如果 std::move 用作 && 参数的参数,它是否会调用复制运算符?

c - mkdir 函数在 C 中不起作用

windows - CopyFiles 在 INF 文件中不起作用