【问题标题】:How to open a jpg file with your application?如何使用您的应用程序打开 jpg 文件?
【发布时间】:2015-07-26 10:13:50
【问题描述】:

我正在开发一个应用程序,我需要阅读 JPG 文件的 EXIF 详细信息。 我可以使用 OpenFileDialog 按钮来执行此操作,但是我希望它是这样的,以便用户可以使用我的应用程序打开 JPG 文件(右键单击>打开方式),并且我可以在字符串中获取 JPG 文件的路径。

我只想知道如何获取用户右键单击广告的文件的路径,并使用“我的应用程序”打开该文件

【问题讨论】:

  • 我已经按照给定的链接并已经能够获取exif数据,现在我想通过使用右键菜单中的打开按钮打开一个jpg。
  • @Bjørn-RogerKringsjå,这不是 OP 的要求

标签: c# windows registry mouseclick-event


【解决方案1】:

您需要在注册表中为 JPG 文件扩展名注册您的应用程序,如下所述:https://msdn.microsoft.com/en-us/library/windows/desktop/cc144175(v=vs.85).aspx

【讨论】:

    【解决方案2】:

    如果您已经知道如何获取 EXIF 数据并且只是希望用户能够右键单击 JPG 文件 > 打开方式 > 选择您的应用程序,然后获取他们尝试打开的文件名,您可以这样做:

    private void testButton_Click(object sender, EventArgs e)
    {
        string[] cmdLineArgs = Environment.GetCommandLineArgs();
        string jpgFilenameToOpen = "None";
    
        if (cmdLineArgs.Length > 1)
        {
           jpgFilenameToOpen = cmdLineArgs[1];
        }
    
        YourGetEXIFDetailsMethod(jpgFilenameToOpen);
    }
    

    Environment.GetCommandLineArgs() 返回一个数组,其中包含在加载时传递给您的应用程序的所有命令行参数。通常,如果他们只是传递一个文件名,它应该是数组中的第二项。

    如果需要,您还可以通过以下方式遍历参数:

    foreach (var arg in cmdLineArgs)
    {
        MessageBox.Show(arg.ToString());
    }
    

    编辑:

    我刚刚意识到我不确定您是否需要一次只接受一个 JPG 文件名,或者您是否需要一次接受多个 JPG 文件。如果是后者,这里有一些更新的代码,可以遍历所有命令行参数并仅对 JPG/JPEG 文件执行某些操作:

    private void Form1_Load(object sender, EventArgs e)
    {
        string[] cmdLineArgs = Environment.GetCommandLineArgs();
        List<string> jpgFilenamesToAnalyze = new List<string>();
    
        foreach (var arg in cmdLineArgs)
        {
            if (arg.Contains(".jpg") || arg.Contains(".jpeg"))
            {
                jpgFilenamesToAnalyze.Add(arg);
            }
        }
    
        if (jpgFilenamesToAnalyze.Count > 0)
        {
            StringBuilder sbJPGFiles = new StringBuilder();
            sbJPGFiles.AppendLine("Found " + jpgFilenamesToAnalyze.Count + " images to analyze:\n\nFiles:");
    
            foreach (var jpgFilename in jpgFilenamesToAnalyze)
            {
                // YourGetEXIFDataMethod(jpgFilename)
                sbJPGFiles.AppendLine(jpgFilename);
            }
    
            MessageBox.Show(sbJPGFiles.ToString());
        }
        else
        {
            MessageBox.Show("No images found to analyze");
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2018-02-20
      • 2016-08-03
      • 1970-01-01
      • 2021-04-06
      • 1970-01-01
      • 2020-04-24
      • 2010-12-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多