如何用您的应用程序打开jpg文件

本文关键字:jpg 文件 应用程序 何用您 | 更新日期: 2023-09-27 18:04:38

我正在开发一个应用程序,我需要阅读JPG文件的EXIF详细信息。我能够这样做与一个OpenFileDialog按钮,但是,我希望它是这样的,用户可以打开一个JPG文件与我的应用程序(右键单击>打开),我可以得到JPG文件的路径字符串。

我只是想知道如何获得用户右键单击并选择打开"我的应用程序"的文件路径

如何用您的应用程序打开jpg文件

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

如果您已经知道如何获得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");
    }
}