有没有一种方法可以使用 ProcessStartInfo 在 Windows 最近的项目跳转列表中创建快捷方式?

Is there a way to use ProcessStartInfo that will create a shortcut in the Windows recent items jump list?

我正在使用 ProcessStart 和 ProcessInfoStart 从 %username%\My Documents 文件夹位置下的目录打开一个 PDF 文件。如果我以编程方式打开文件,pdf 不会显示在 C:\Users\%username%\AppData\Roaming\Microsoft\Windows\Recent 项目位置下 - 但会显示在 Adob​​e Acrobat 的跳转列表中。如果我双击该文件,在文件资源管理器中,PDF 将显示在最近的项目位置。

我尝试将 PDF 保存并打开为 HTML 文档,但它们仍然不会显示在 "Recent Items" 下。尝试在启动 ProcessStartInfo 时直接调用 Acrobat。

var processStart = new ProcessStartInfo("AcroRd32.exe");

我试过直接打开文件资源管理器并传入“/select”和文件路径 - 它会在 Acrobat 中打开但不会显示在最近的项目中。

 var processStart = new ProcessStartInfo("AcroRd32.exe");
var savePath = @"C:\Users\%username%\My Documents\PDFs\MyPdf.pdf";
//processStart.Arguments = savePath;
processStart.WindowStyle = ProcessWindowStyle.Minimized;
var fileArgs = $"/select, ""{savePath}""";
processStart.Arguments = fileArgs;
processStart.UseShellExecute = false;
Process.Start(processStart);

有没有办法在使用 ProcessStart 打开文件位置时 refresh/update 最近的项目跳转列表?谢谢!

有一个选项可以通过 SHAddToRecentDocs API:

手动添加

这是 C# 示例:

public enum ShellAddToRecentDocsFlags
{
    Pidl = 0x001,
    Path = 0x002
}

[DllImport("shell32.dll", CharSet = CharSet.Ansi)]
private static extern void SHAddToRecentDocs(ShellAddToRecentDocsFlags flag, string path);

用法:

SHAddToRecentDocs(ShellAddToRecentDocsFlags.Path, @"C:\Users\%username%\My Documents\PDFs\MyPdf.pdf");