如何将程序作为默认程序在Visual Studio C ++中打开特定文件

时间:2012-12-31 12:11:12

标签: c++ c visual-studio-2010 visual-studio visual-c++

实际上,我不知道我的问题的标题是什么,所以我无法在Google上搜索,首先我需要知道对这个问题说些什么。

好吧,我在Visual Studio C ++ 2010中开发了一个应用程序,其中可以处理3D对象,因此有一个名为Import Model的函数可以帮助导入模型。

我想要的是,用户只需右键单击该对象并按[打开[应用程序名称]或双击它,应用程序应该获取该文件的路径并调用导入功能。与我们对任何MS字* .doc文件一样,我们双击它并打开它。

我希望将我的软件作为默认程序来打开一些特定的文件扩展名。当用户双击模型时,它应该在我的应用程序中打开。

实际上,我读过一些关于参数解析器的内容,我对此并不了解。这是我需要寻找的吗?

感谢。

更新1:

Benjamin Lindley和其他人正在工作,但在启动应用程序之前我收到以下错误。该参数只通过FLTK窗口。我不知道这个窗口来自哪里?甚至没有这些图像选项..请看下面的图片...

enter image description here

2 个答案:

答案 0 :(得分:2)

您需要文件关联,例如,在.bat文件中:

@ASSOC .3D=3DObject.File
@FTYPE 3DObject.File="C:\MyProjects\Release\myprog.exe" "%%1" %%*

这使用了注册表配置单元HKEY_CLASSES_ROOT,您可能需要对它的写访问权限,因此“以管理员身份运行”。

编辑:作为程序员,您可以使用注册表API(RegCreateKeyExRegSetValueEx等)自行添加与HKEY_CLASSES_ROOT的关联,但可能不值得努力,因为它可能只需要一次。

答案 1 :(得分:1)

“评论和答案”中提到的“文件关联”是主题(在我看来),可能属于Super User。但作为程序员,你需要做什么?好吧,当有人双击与您的程序关联的文件时,文件名作为主函数的参数出现,您可以按照自己喜欢的方式处理:

int main(int argc, char** argv)
{
    // the name file that was used to open your program is stored in argv[1]
    if (argc == 2)
        DoSomethingWithFile(argv[1])
}