程序如何处理“打开...”文件?

时间:2010-04-13 21:38:08

标签: c# windows winapi

我想知道是否有人可以指出我正确的方向。例如,您知道如何在大多数IDE中打开带有“打开方式”的源文件,它会运行程序并将其打开吗?然后如果你打开另一个,它会在同一个过程的新标签页中打开它?

我的问题不是如何将程序添加到shell命令,而是:

  1. 例如,C#应用程序如何“接收”PDF文件?

  2. 当用它运行另一个文件时,应用程序如何在同一进程中打开文件(不需要程序实例)?

4 个答案:

答案 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命令(如果存在)。