1

如何从资源管理器打开文件到不同的选项卡。我可以将打开菜单与文件类型相关联,现在当我已经让程序工作时,如何将新文件打开到另一个选项卡,而不是新程序。如何准确地找到已经运行的进程,而不是使用名称并将文件名发送给它。

让我说清楚:我希望我的应用程序是单实例,这样当用户选择 10 个文本文件并按回车键时,我的应用程序会将所有 10 个文本文件打开到 10 个选项卡中,而不是创建 10 个进程。怎么做?如何在同一进程的各个实例之间进行通信。

编辑已解决:使用 C# 中的 WM_COPYDATA 和 codeproject 中的 SingleApplication 类实现了该功能。

4

1 回答 1

1

我不太确定你在这个问题中的意思。您是否尝试将 Windows 资源管理器窗口打开到一个带有选项卡的窗口中?如果是这种情况,那么我建议您查看QT TabBar,它扩展了 Windows Explorer 以允许这种行为。

或者,您可能正试图在 Web 浏览器中打开一个指向新选项卡的链接。如果是这种情况,则此行为由 Web 浏览器本身定义。对于 Internet Explorer 7,您可以在工具> Internet 选项下设置此行为。

在“常规”选项卡中,单击“选项卡”部分旁边的“设置”按钮。您将需要设置“打开来自其他程序的链接:”选项以打开一个新选项卡。

请记住,此行为是由每个用户定义的,您无法保证他们将拥有与您相同的浏览器设置。


看了你的评论,我想我明白了一点。听起来您希望您的应用程序一次只允许一个实例。由于您标记了这篇文章 C#,我会假设这就是您正在编写程序的内容。

Codeproject.com 有一个很棒的教程,教你如何让你的程序只允许一个实例。

这是他们网站上的一段代码:

static void Main() 
{
   if(SingleInstance.SingleApplication.Run() == false)
   {
      return;
   }
   //Write your program logic here
}

您可能希望在 return 语句之前编写代码,以使现有实例在新选项卡中打开文件。

如果您能够提供有关您的程序正在做什么的详细信息,我们可能会在一些细节方面为您提供帮助。

于 2009-02-03T15:23:08.703 回答