如何用你的应用程序打开一个JPG文件?

我正在开发一个应用程序,我需要读取JPG文件的EXIF细节。 我可以用OpenFileDialogbutton来实现,但是我希望它能让用户用我的应用程序打开一个JPG文件(右键单击>打开),然后我就可以得到JPG文件的stringpath。

我只是想知道如何获得用户右键单击广告select打开的文件的path与“我的应用程序”

您需要在注册表中注册您的应用程序的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"); } }