使 C++ 应用程序“以...打开”
Posted
技术标签:
【中文标题】使 C++ 应用程序“以...打开”【英文标题】:Making a C++ application "Opened with..." 【发布时间】:2015-04-14 18:20:29 【问题描述】:我正在开发一个或多或少围绕重命名文件的 (C++) 程序。我想这样做,以便您可以选择一个文件,右键单击它并选择“打开方式”,然后选择我的应用程序。 我弄明白了上下文菜单部分,我只是不知道如何做 C++ 部分。
换句话说,如何制作一个可以与文件一起打开的程序(在C++中)(通过上下文菜单或直接打开)并处理这个文件?
示例: 在我的 Windows 中,我将“.roberto”扩展名与“C:\Program Files\MyProgram\MyProgram.exe”相关联。所以如果我打开一个“.roberto”文件,会弹出一个命令提示符,只显示所选文件的名称。
我希望这很清楚,我不知道如何解释。我在搜索这个问题时也遇到了一些麻烦,所以如果之前有人问过这个问题,请原谅我。 谢谢。
【问题讨论】:
c++ 的标准中没有任何处理此操作系统特定功能的内容。你用的是什么框架? winapi、MFC、Qt ...? 如果我没记错的话,选择是在argv
中传递的。不过,我已经很久没有做过类似的事情了。
对不起,我不知道我在使用什么框架...我怎么知道这个?我在 Visual Studio Express 2013 中编写并尝试保持设置不变。 :P
我试了一下argv
。我制作了一个新程序,并保留了默认的int main(int argc, _TCHAR* argv[])
,并打印了所有argv
元素。直接打开时我得到一个论点,使用“打开方式...”对话框打开时我得到两个论点。但是,这些argv
项目的内容只是随机的字母和数字,就像一个指针。
哦,解决了。将 _TCHAR*
更改为 char*
解决了它。
【参考方案1】:
在基于 MFC 的应用程序中的 Windows 平台上,这是由应用程序类的 InitInstance()
方法中的框架自动完成的:
EnableShellOpen();
RegisterShellFileTypes(TRUE);
重要提示:一般而言,此功能取决于框架和操作系统。
【讨论】:
我不太明白这个。我将如何使用它?我如何获得我正在寻找的文件路径?【参考方案2】:我想通了!
使用给 main 的参数是线索。下面的程序如果直接打开会打印一行,这一行是程序本身的路径,如果用“Open with...”选项打开也会显示选中的文件。
#include "stdafx.h"
#include <iostream>
using namespace std;
int main(int argc, char* argv[])
cout << "Argument count: " << argc << endl << endl;
for (int i = 0; i < argc; i++)
cout << argv[i] << endl;
cout << endl << endl << endl << endl;
system("pause");
return 0;
【讨论】:
以上是关于使 C++ 应用程序“以...打开”的主要内容,如果未能解决你的问题,请参考以下文章