如何从资源管理器中打开文件到不同的选项卡

时间:2009-02-03 09:34:38

标签: c# shell explorer

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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

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


看完你的评论后,我想我明白了一点。听起来您希望您的应用程序一次只允许一个实例。由于您在此帖子中标记了C#,我将假设您正在编写您的程序。

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

以下是他们网站的代码片段:

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

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

如果您能够提供有关您的计划正在做什么的详细信息,我们可能会帮助您了解一些细节。