拖放.exe文件顶部的文件以获取fileinfo

时间:2010-07-12 17:46:39

标签: c# wpf fileinfo

正如标题所说。 我知道如何在C#中执行此操作,但是当尝试使用WPF执行此操作时,我无法找到在程序启动时读取文件名的位置或内容。

public static void Main(string[] args)
{
    if (Path.GetExtension(args[0]) == ".avi" || Path.GetExtension(args[0]) == ".mkv")
    {
        string pathOfFile = Path.GetFileNameWithoutExtension(args[0]);
        string fullPathOfFile = Path.GetFullPath(args[0]);
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new Form1(pathOfFile, fullPathOfFile));
    }
    else
    {
        MessageBox.Show("This is not a supported file, please try again..");
    }
}

6 个答案:

答案 0 :(得分:4)

找到解决方案。谢谢你的帮助:)

如果有人需要,我会发布我所做的事情。

在App.xaml中,我添加了Startup="Application_Startup

<Application
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    x:Class="WpfApplication1.App"
    StartupUri="MainWindow.xaml"
    Startup="Application_Startup">
    <Application.Resources>
    <!-- Resources scoped at the Application level should be defined here. -->
    </Application.Resources>
</Application>

在App.xaml.cs中,我添加了这些行:

    public static String[] mArgs;

    private void Application_Startup(object sender, StartupEventArgs e)
    {
        if (e.Args.Length > 0)
        {
            mArgs = e.Args;
        }
    }

最后我必须在MainWindow类中添加一些信息。

public MainWindow()
{
    this.InitializeComponent();
    String[] args = App.mArgs;
}

要获取所需数据,请使用System.IO.Path

注意Using语句。如果你只使用Ex。 Path.GetFileNameWithoutExtension您将收到引用错误。获取数据时使用System.IO.Path

答案 1 :(得分:1)

您需要找到一些入口点(例如主窗口的OnLoad事件),然后访问命令行参数,如下所示:

string[] args = Environment.GetCommandLineArgs();

答案 2 :(得分:1)

双击解决方案资源管理器中的App.xaml文件。您可以添加Startup事件。它的e.Args属性使您可以访问命令行参数。

答案 3 :(得分:1)

我知道这个话题很老但是对于搜索类似内容的人来说可能会有所帮助。我试图将这个功能添加到我的程序中(通过在EXE上放置一个文件来启动程序),解决方案非常简单,它来自这里。 我的程序只是搞乱了Excel文件中的几个单元格。因此很明显它应该运行并通过删除excel文件来执行这些操作。 所以我在组件初始化之后将它添加到Form构造函数中,它对我来说完美无缺:

public Form1()
    {
        InitializeComponent();
        string[] args = Environment.GetCommandLineArgs();
        filePathTextBox.Text = (args.Length > 1 && (Path.GetExtension(args[1]) == ".xlsx" || 
            Path.GetExtension(args[1]) == ".xls")) ? args[1] : "";
    }

我注意到args中的第一个参数是我的程序的路径,所以我进行了测试,显然第二个参数是文件的文件路径,我在exe上删除了这个&#39 ;为什么我使用args[1]。 如果我错了,我想纠正,但现在一切都正常,我的程序。

答案 4 :(得分:1)

您可以将此用于Mediaelement。

   public MainWindow()
    {
        this.InitializeComponent();    
        doubleclickevent();
    }

    private void doubleclickevent()
       {

       string[] args = Environment.GetCommandLineArgs();
       string[] arr = new string[]
                    {
                    ".MP4",
                    ".MKV",
                    ".AVI"
                    };

    foreach (string element in args)
            {
                foreach (string s in arr)
                {
                    if (element.EndsWith(s))
                    {
                    MediaElement.Source = new Uri(@element, UriKind.RelativeOrAbsolute);
                    MediaElement.LoadedBehavior = MediaState.Play;
                    }
                    else { return; }

                }
            }

      }

答案 5 :(得分:0)

当您将文件从Windows拖放到EXE上时,EXE会启动并提供文件名作为命令行参数。

public MainWindow()
{
    string[] args = Environment.GetCommandLineArgs();
    foreach (var s in args)
    {
        //do something with s (the file name)
    }
}