我想知道是否有人可以指出我正确的方向。例如,您知道如何在大多数IDE中打开带有“打开方式”的源文件,它会运行程序并将其打开吗?然后如果你打开另一个,它会在同一个过程的新标签页中打开它?
我的问题不是如何将程序添加到shell命令,而是:
例如,C#应用程序如何“接收”PDF文件?
当用它运行另一个文件时,应用程序如何在同一进程中打开文件(不需要程序实例)?
答案 0 :(得分:5)
当第二个程序实例启动时,在加载任何接口组件之前,检查另一个程序实例是否已在运行。如果是这样,它以某种方式与它通信(特定于程序:这可以是套接字,进程间中断,共享内存等......)它应该打开这个新文件。
将此信息传达给第一个实例后,第二个程序实例将终止,因为不再需要它。
答案 1 :(得分:1)
你的程序必须能够与自己的其他实例交谈,并说“嘿,我已经开放了,你想做什么,让我为你做。”
答案 2 :(得分:1)
这是一篇非常详细的文章,解释了正确的实现:
http://www.iridescence.no/post/CreatingaSingleInstanceApplicationinC.aspx
此主题包含用于处理命令行参数的讨论和示例(这是文件“传递给”您的应用程序的方式):http://www.devnewsgroups.net/group/microsoft.public.dotnet.framework/topic62109.aspx
答案 3 :(得分:0)
Microsoft程序通常在shell配置中有一个ddeexec键;这将导致shell向已经运行的应用程序发送DDE命令(如果存在)。