如何用您的应用程序打开jpg文件
本文关键字:jpg 文件 应用程序 何用您 | 更新日期: 2023-09-27 18:04:38
我正在开发一个应用程序,我需要阅读JPG文件的EXIF详细信息。我能够这样做与一个OpenFileDialog按钮,但是,我希望它是这样的,用户可以打开一个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");
}
}