双击关联文件打开c ++程序。我如何获得文件名?

时间:2011-09-09 17:00:41

标签: windows file associations arguments

我有一个与.bin文件关联的c ++程序,因此无论何时打开.bin文件,都会使用myProgram.exe打开它。

如何获取打开程序的相关文件的文件名?

3 个答案:

答案 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。,