【问题标题】:How to make a program as a default program to open specific files in Visual Studio C++如何将程序设为默认程序以在 Visual Studio C++ 中打开特定文件
【发布时间】:2012-12-31 12:11:11
【问题描述】:

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

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

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

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

实际上,我读过一些关于参数解析器的东西,我不太了解。这是我需要寻找的吗?

谢谢。

更新 1:

本杰明林德利和其他人正在工作,但在启动应用程序之前我收到以下错误。该参数仅通过 FLTK 窗口。我不知道这个窗口是从哪里来的?甚至没有关于这些图像选项.. 请看下图...

【问题讨论】:

  • “文件关联”可能是一个很好的搜索词

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


【解决方案1】:

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

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

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

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

【讨论】:

  • 很酷的提示,我只是通过直接注册表写入来完成它,并且从不知道它可以这样做,但足以让怀疑者确认以上确实有效。
  • 如何创建一个按钮来帮助用户将文件与我的软件相关联。那么,我是否需要调用这个子程序来添加注册表,并将它在运行时。因为在运行时用户将单击按钮并且应该添加和更新注册表。或者在MSI文件的部署设置中是否有任何选项可以在设置期间添加注册表?
  • @furqan:我个人会将其添加到安装过程中。
  • 能否请您稍微解释一下如何在安装过程中添加? @cdarke
  • @furqan:对不起,不是我的区域。
【解决方案2】:

“文件关联”,正如 cmets 和答案中提到的,是题外话(在我看来),可能属于 Super User。但是作为程序员,你需要做什么?好吧,当有人双击与您的程序关联的文件时,文件名会作为 main 函数的参数出现,您可以随意处理它:

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])
}

【讨论】:

  • 谢谢,这可行,但我遇到一个错误,请您告诉我刚刚在我的问题中添加的这个窗口来自哪里。
  • @furqan:这可能会有所帮助; mail-archive.com/fltk@easysw.com/msg10715.html
  • 你太棒了,太棒了;) .. 我正要在 fltk 论坛上问这个问题,我正在用你的答案编译我的代码,它就像魅力一样。非常感谢。我会用答案更新我的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多