簡體   English   中英

通過雙擊關聯文件打開c ++程序。 如何獲得文件名?

[英]Opening c++ program by double clicking associated file. How do I get the file name?

我有一個與.bin文件相關聯的c ++程序,因此無論何時打開.bin文件,都將使用myProgram.exe打開它。

如何獲取打開程序的關聯文件的文件名?

通過文件擴展名打開文件的過程由系統注冊表中的一組條目控制。 最后一個步驟之一是指定應執行的命令,通常文件名包含在命令中。 檢查您的命令行參數以查看是否提供了文件名。

此處描述了該過程: http : //msdn.microsoft.com/zh-cn/library/cc144175(v=vs.85).aspx

IIRC,它將是傳遞到您的應用程序中的第二個命令行參數。 第一個參數將是您實際程序的名稱(可執行文件)。

在普通的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版本)及其解析器表親CommandLineToArgvW ,以便將命令行拆分為單獨的參數。

另外,通過Microsoft的C和C ++語言實現,您可以使用非標准啟動功能wmain 但是,我不建議這樣做。 我認為在實踐中盡可能地保持C和C ++的國際標准是一個好主意,即使使用小型玩具程序也很方便,使用wmain肯定沒有緊迫的理由。

干杯&hth。,

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM