程序没有运行 - 它打开和关闭

时间:2014-03-12 23:02:05

标签: c++ c visual-studio winapi

我的主程序出现问题,在运行程序后我打开的所有调用之后它才打开然后关闭。它在我的代码或任何东西中都没有发现任何错误,所以我尝试创建一个新项目并且它做同样的事情而没有错误。

我甚至尝试了示例代码:

int APIENTRY WinMain (HINSTANCE ...)
    ShellExecute(NULL, (LPCWSTR)"open", (LPCWSTR)"cmd.exe", NULL, NULL, SW_SHOW);

它仍然只是打开和关闭。这是什么问题?如有必要,我可以提供输出日志,但我不知道。

1 个答案:

答案 0 :(得分:5)

我不确定我理解你打开和关闭的意思。但是这段代码非常错误:

ShellExecute(NULL, (LPCWSTR)"open", (LPCWSTR)"cmd.exe", 
    NULL, NULL, SW_SHOW);

演员阵容不好。这两个字符串文字指向char数组的指针,将它们转换为const wchar_t*并不会改变它们的含义。它只是要求编译器相信你比它更了解。你没有。他们真的不是const wchar_t*。您的所有演员表现都是为了让您打破类型安全并将信息丰富的编译时错误转换为神秘的运行时故障。在你对语言有深刻理解之前,你应该避免施法。

您需要使用宽文字:

ShellExecute(NULL, L"open", L"cmd.exe", NULL, NULL, SW_SHOW);

您似乎也没有进行错误检查。对ShellExecute来说这很难。请尝试ShellExecuteEx,并注意它返回的值。