gpt4 book ai didi

c# - 在我的程序的当前运行实例中打开文件?

转载 作者:太空狗 更新时间:2023-10-29 20:30:31 26 4
gpt4 key购买 nike

一个例子:

如果您打开并运行 Visual Studio ( 2010 ),然后双击 PC 桌面上的一个 misc *.cs 文件,该文件将在当前运行的 Visual Studio 实例中打开,而不是打开另一个 VS 实例.

如何让我自己的 C# 程序模仿这种行为?

换句话说,如果我有一个文件类型,如 *.myfile 与我的程序相关联,并且用户在 Windows 资源管理器中双击 *.myfile,并且...... 我的程序已经在运行..... 它应该在 Windows 不启动我的程序的另一个实例的情况下打开文件。如果程序没有运行,Windows 可以正常启动实例。

请注意,我的程序的多个实例是允许的 - 与 Visual Studio 相同。

如有任何建议,我们将不胜感激!!

最佳答案

如果您查看注册表中为 .cs 文件注册的内容,您会发现它不是 Visual Studio。对于 Express 版本,例如注册的应用程序是“VCSExpress.exe”,工作室在“WDExpress.exe”中运行。在高级版本中,我认为工作室以“devenv.exe”运行。有趣的一点是有两个应用程序:您的 UI 应用程序和一种启动器应用程序。我不知道 VS 是如何做到的,但我可以这样想象:启动器通过任何类型的进程间通信与 UI 通信,例如命名管道。 (See here)也许试试这个:

  • 启动器应用程序(您的文件扩展名已在其中注册)尝试作为客户端打开到 UI 应用程序的管道。
  • 如果失败,它会启动一个新的 UI 应用程序实例并将文件名作为参数传递。命名管道的 UI 应用程序启动服务器端
  • 如果管道打开成功,即已经有一个 UI 实例在运行,启动器会通过管道将文件名发送到现有的 UI 进程。
  • Lau​​ncher 在将作业传递给 UI 后退出

关于c# - 在我的程序的当前运行实例中打开文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26938984/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com