对于创建Windows上下文菜单,我们需要:Computer\HKEY_CURRENT_USER\Software\Classes\Directory\Background\shell\myapp\command默认值将设置为"c: \path\to\myapp.exe"quot;%1〃;。
如果myapp正在运行,我不想再运行一个实例,我只想将数据传递给现有实例。
如何防止打开新实例并将数据发送到现有实例?
您需要与正在运行的应用程序的其他实例进行通信。在过去,您可以使用DDE,但现在已不再推荐使用了。最好的方法可能是COM服务器方法,您可以在这里找到它的示例实现。这使用IDropTarget
,并一直工作到XP。IExecuteCommand
也可以在Windows7及更高版本上使用和工作。
一个更简单的方法是使用FindWindow
并在WinMain
中向自己发送WM_COPYDATA
消息,但这里存在一个小的竞争条件,可能会导致多个打开的应用程序。您可以使用一个命名的互斥体来解决这个问题。