c#开始菜单样式列表框

c#开始菜单样式列表框,c#,listview,startmenu,installed-applications,C#,Listview,Startmenu,Installed Applications,大家好,我正在开发一个“开始”菜单样式的程序,我想知道如何获得固定程序和所有程序列表。我开始了一些研究,并将发布我的发现,这样你们都可以帮助填补空白 为了获取程序图标,我找到了这个 public static Icon IconFromFilePath(string filePath) { var result = (Icon)null; try { result = Icon.ExtractAssociatedIcon(filePath); }

大家好,我正在开发一个“开始”菜单样式的程序,我想知道如何获得固定程序和所有程序列表。我开始了一些研究,并将发布我的发现,这样你们都可以帮助填补空白

为了获取程序图标,我找到了这个

public static Icon IconFromFilePath(string filePath)
{
    var result = (Icon)null;

    try
    {
        result = Icon.ExtractAssociatedIcon(filePath);
    }
    catch (System.Exception)
    {
        // swallow and return nothing. You could supply a default Icon here as well
    }

    return result;
}
为了获取所有程序和固定程序,我找到以下路径

%USERPROFILE%\appdata\Roaming\Microsoft\Windows\Start Menu\Programs

C:\ProgramData\Microsoft\Windows\Start菜单\


这些位置是什么?startmenu如何使用这些位置?我如何使用它们?希望我不是要简短,但我想表明我真的在努力解决这个问题,并一直在寻找吨。谢谢

首先,您可以使用以下方法获取用户的固定程序列表:

%AppData%\Microsoft\Internet Explorer\Quick Launch\User 固定\开始菜单

归功于

该文件夹和您已经找到的文件夹都包含“开始”菜单的所有快捷方式。您可以使用
目录.EnumerateFiles
目录.GetFiles
获取文件。获得文件列表后,需要为每个文件创建ViewModel对象:

public class StartMenuItem
{
    public Image Icon {get; set;}
    public String LinkPath {get; set;}
}
创建这些内容的集合,并将列表视图
ItemSource
绑定到其中。最后,要启动应用程序,只需使用
Process.start

ProcessStartInfo info = new ProcessStartInfo ( "example.lnk" );
info.CreateNoWindow = true;
info.RedirectStandardError = true;
info.RedirectStandardOutput = true;
info.RedirectStandardInput = true;
Process whatever = Process.Start( info );

有关更多信息,请参阅。

您在这里问什么?“开始”菜单以特定方式显示这些文件夹的内容(在“所有程序”和“固定”列表上)。没有什么特别的事情发生。你能澄清一下你的问题吗?当然我会试试,简言之,我想知道我自己如何重新创建“固定”和“所有程序”列表。好的,听起来你已经有了你需要的信息。你遗漏了什么?你可以从这里得到固定列表:堆栈溢出不是用来编写整个程序的,你能更具体地说明你正在努力解决什么吗?这个问题仍然非常广泛。我会给你一个向上投票的机会,因为我在犹豫,但以后要尽量控制你的问题范围。注意,我没有发布
DataTemplate
,因为我的答案已经很长了。如果您有关于如何绑定到模板中的图像,或如何设置命令以运行
过程的问题,请启动
,我将询问有关该部分的另一个问题。谢谢!这正是我所需要的。如果我需要更多的过程帮助,我会制作一个线程。开始,但我想我理解它。