C# 如何使用文件关联执行已启动应用程序的事件?
在玩了一个新的Windows窗体项目之后,我发现当您将文件类型与Windows中的可执行文件相关联时,您可以使用C# 如何使用文件关联执行已启动应用程序的事件?,c#,.net,windows,file-extension,file-association,C#,.net,Windows,File Extension,File Association,在玩了一个新的Windows窗体项目之后,我发现当您将文件类型与Windows中的可执行文件相关联时,您可以使用args[0]从static void Main(string[]args) 如果应用程序已打开,双击文件时是否可以在应用程序上启动事件?(显然,Main(字符串[]args)不会被触发) 我尝试复制的应用程序行为示例: 用户打开GIMP(在Windows中) 用户打开资源管理器并右键单击.png文件 用户选择使用GIMP打开 GIMP没有创建新的GIMP应用程序实例,而是在已经打开的
args[0]
从static void Main(string[]args)
如果应用程序已打开,双击文件时是否可以在应用程序上启动事件?(显然,Main(字符串[]args)
不会被触发)
我尝试复制的应用程序行为示例:
我在这方面遇到了麻烦,因为我的大多数搜索倾向于引导我作为Windows用户进行文件关联(即“如何将.xls文件与excel关联”文章)。有多种选择,但没有一种是免费的
Main()
可以检测到另一个副本已在运行,并通过您确定的某种方式将文件名传递给已在运行的副本鉴于您的限制,选项(1)似乎是最佳选项。Microsoft为Visual Basic.Net创建了此功能,C#也可以使用此功能 请参阅下面的文章,了解C#中的一个简单示例:
雷蒙德当然是对的,但如果您正在寻求选项(1)实施方面的帮助,您可能应该查看和 您会注意到检测应用程序非常简单(使用互斥)。带上另一个应用程序并向其发送文件名可能更具挑战性 在对先前相关问题的回答中,有三种基本解决方案
HWND\u广播
,这可能会产生意想不到的后果同样值得注意的是,如果您希望现有的应用程序位于前端,您需要特别小心,因为设置前台只能被放弃,而不能被接受。请参见和此方法最适合我:。
特别是,它传递参数的解决方案也适用于仅通知图标的应用程序。尝试用谷歌搜索单实例应用程序