【问题标题】:Add a specific function of a program to Windows Context Menu将程序的特定功能添加到 Windows 上下文菜单
【发布时间】:2015-06-09 23:31:05
【问题描述】:

我编写了一个简单的 C# WPF 应用程序,它可以帮助以我公司需要的特定方式重命名文件批次(在几种不同的可选模式中 - 添加前缀、删除前缀、替换某些字符等)。

这一切都很好,但我并不总是想实际启动应用程序,导航到文件夹等,所以我想添加程序的一个特定功能(删除前缀)作为 Windows 上下文的快捷方式菜单。

基本上,我想要实现的是能够在资源管理器中选择多个文件,右键单击它们,选择“删除前缀”并将它们重命名 - 如果不是,我不希望应用程序窗口出现必要的(尽管我可以忍受它被最小化到托盘中)。

我或多或少知道将上下文菜单项添加到注册表(使用命令行参数),但我不确定它是否适合我,因为我只需要一个特定的功能,而不是整个应用程序。

任何想法我应该怎么做?

【问题讨论】:

    标签: c# wpf contextmenu


    【解决方案1】:

    将命令行选项添加到只运行该功能的程序中。

    覆盖 App.xaml.cs 中的 OnStartup 并使用 StartupEventArgs.Args 获取命令行参数。

    或者,如果您的函数不需要 ui 来运行,您可以替换 Main,添加 Program.cs 并添加

    class Program
    {
        [STAThread]
        public static void Main(string[] args)
        {
            if (runNormally(args))
            {
                MainWindow mainWindow = new MainWindow();
                var app = new Application();
                app.Run(mainWindow);
            }
            else
            {
                MyFunction(args);
            }
        }
    }
    

    注册上下文菜单,以便它传递命令行参数以运行正确的功能。

    【讨论】:

    • 非常感谢 - 我已经设法让它工作,但是与您的代码指定的有点不同。我确实按照您的建议覆盖了 OnStartup,然后在给定的一组参数上我想使用我的函数。但是,它从那个“级别”不可用(可能不会在那个时候启动?),我不得不将它全部写在 App.xaml.cs 中。幸运的是它很短:)
    猜你喜欢
    • 2011-01-08
    • 1970-01-01
    • 2016-03-05
    • 2016-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多