windows 如果通过双击文件打开WinMain(),则WinMain()未接收到足够的参数

rm5edbpk  于 2022-11-18  发布在  Windows
关注(0)|答案(1)|浏览(141)

我曾经能够双击我的自定义扩展的文件,并通过我的C++ exe程序打开它(右键单击-〉打开-〉我的程序)。
它的WinMain()正在接收几个参数:第一个参数是exe的路径,第二个参数是单击的文件的路径。
然而,我似乎不再能够接收第二个参数,它总是用第一个参数启动我的程序:此程序的路径。
会不会是因为我今天做的Windows更新?使用Windows 10和Visual Studio(如果在调试或发布中编译,也会发生同样的情况)

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){

    int nArgs;
    LPWSTR *szArglist = CommandLineToArgvW(GetCommandLine(), &nArgs);  //GetCommandLine() is a #define located inside processenv.h
    
    //Now nArgs is your argc and szarglist is your argv
    //first arg is path to exe, second arg is path to clicked file.

    if(nArgs<=1){  LocalFree(szArglist);  return EXIT_FAILURE;  } //not enough args (1 or less)

    LocalFree(szArglist);
    return EXIT_SUCCESS;
}
pcww981p

pcww981p1#

这是因为我是如何获取的论点。
我使用的是CommandLineToArgvW(),但是当我开始使用__argv__argc时,它就开始工作了。Found this answer here

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){    

    if(__argc<=1){  return EXIT_FAILURE;  } //not enough args (1 or less)  

    /*use __argv[1] to fetch your second argument (in my case it's filepath) */    

    return EXIT_SUCCESS;
}

相关问题