我编写了一个Windows软件,并且我已将此程序与文件扩展名相关联。当我双击数据文件然后我的程序启动并打开文件。到目前为止它的作用。但是当我选择多个文件然后在上下文菜单中单击“打开”时,我的程序的多个实例就会启动,一个实例就会出现一个文件。我希望Windows使用我的程序的单个实例打开所有文件。如果没有在我的程序中实现一个实例处理程序,这可能吗?
目前注册表中的MyFileType/shell/open/command
如下所示:
"C:\Program Files\MyApp\MyApp.exe" "%1"
也许有一些特殊的令牌/变量我必须使用而不是“%1”来使它工作?在Linux上,我必须将%f用于单个文件,将%F用于文件列表。 Windows上有类似的东西吗?
答案 0 :(得分:3)
最简单的方法是将您的应用与文件类型的默认shell谓词(例如“open”或“play”)相关联,并实现使用SHCreateShellItemArrayFromDataObject获取所选文件的放置目标。建议阅读:How the Shell Invokes Verbs
如果您不想接管默认动词,可以将动词添加到文件关联的open with list。
另一种方法是使您的应用程序成为单例,并通过进程间通信方法(如DDE或RPC)将文档的路径发送到第一个实例。这要求您保持主窗口的响应(例如,如果您正在显示对话框,则不起作用)
答案 1 :(得分:0)
%*可能就是你要找的东西。