如何在C#中实现Windows11记事本多标签打开多个文件
在Windows 11中用同一记事本窗口多标签打开多个文件
要实现Windows 11记事本的多标签打开需求,你需要调整调用方式,避免每次启动新的记事本进程,以下是两种可行方案:
方案1:一次性打开所有文件
将所有需要打开的文件路径作为单个参数列表传给notepad.exe(注意带空格的路径要包裹双引号),记事本会自动在同一窗口的不同标签页加载这些文件:
using System.Linq; using System.Diagnostics; // 定义要打开的文件路径数组 string[] targetFiles = { @"C:\Notes\daily.txt", @"D:\Work Report\Q3 summary.docx", // 带空格的路径 @"E:\Logs\system.log" }; // 处理路径:给每个路径添加双引号,避免空格导致参数解析错误 string args = string.Join(" ", targetFiles.Select(path => $"\"{path}\"")); // 启动记事本并传入所有文件路径 Process.Start("notepad.exe", args);
方案2:向已有记事本窗口添加新标签
如果需要分批打开文件(比如先打开一个,后续再添加其他文件),可以通过系统文件关联打开文件,而不是直接启动notepad.exe,这样Windows会自动复用已打开的记事本窗口:
using System.Diagnostics; // 打开第一个文件,启动记事本进程 Process.Start(new ProcessStartInfo(@"C:\Notes\daily.txt") { UseShellExecute = true }); // 后续打开的文件会自动在已有窗口的新标签中打开 Process.Start(new ProcessStartInfo(@"D:\Work Report\Q3 summary.docx") { UseShellExecute = true });
为什么原代码会打开多个窗口?
你之前的代码Process.Start("notepad.exe", path)每次都会启动一个全新的记事本进程,Windows 11的记事本默认不会自动合并独立进程的窗口,因此会出现多个独立窗口。通过上述两种方式,要么一次性让单个记事本进程加载所有文件,要么通过系统关联复用已有进程,就能实现多标签效果。
内容的提问来源于stack exchange,提问作者Keshav Pratap K
相关产品推荐
相关产品推荐

