我有一个与.bin文件关联的c ++程序,因此无论何时打开.bin文件,都会使用myProgram.exe打开它。
如何获取打开程序的相关文件的文件名?
答案 0 :(得分:1)
通过其扩展名打开文件的过程由系统注册表中的一组条目控制。最后一步之一指定了应该执行的命令,通常文件名包含在命令中。检查命令行参数以查看是否给出了文件名。
此处描述了此过程:http://msdn.microsoft.com/en-us/library/cc144175(v=vs.85).aspx
答案 1 :(得分:1)
IIRC,它将是传递到您的应用程序的第二个命令行参数。第一个参数是实际程序的名称(可执行文件)。
答案 2 :(得分:1)
在纯C ++中,您可以使用main
:
#include <iostream>
int main( int argc, char* argv[] )
{
using namespace std;
cout << argc << " arguments:" << endl;
for( int i = 0; i < argc; ++i )
{
cout << "[" << argv[i] << "]" << endl;
}
}
但是存在的问题,即C和C ++ main
是为* nix设计的,而不是Windows。 Holy C ++标准建议运行时应提供UTF-8编码的main
参数,但是,传统的Windows C ++编译器不会发生这种情况。因此,在Windows中,此方法可能不适用于带有例如文件名的文件名。挪威语,希腊语或俄语字符。
在Windows中,对于打算供他人使用的程序,您可以改为使用Windows API函数GetCommandLine
的(Unicode版本)及其解析器cousin CommandLineToArgvW
来拆分命令划分为个别论点。
或者,使用Microsoft的C和C ++语言实现,您可以使用非标准启动函数wmain
。但是,我不建议这样做。我认为尽可能多地遵守C和C ++的国际标准是个好主意,使用wmain
肯定没有迫切的理由,即使它对小玩具程序来说也很方便。 / p>
干杯&amp;第h。,