У меня проблема с моей основной программой, после которой все вызовы, которые я запускаю после запуска программы, она открывается, а затем закрывается. Он не находит ошибок в моем коде или что-то еще, поэтому я попытался создать новый проект, и он делает то же самое без ошибок.
Я даже попробовал пример кода:
int APIENTRY WinMain (HINSTANCE ...)
ShellExecute(NULL, (LPCWSTR)"open", (LPCWSTR)"cmd.exe", NULL, NULL, SW_SHOW);
и он все еще только открывается и закрывается. В чем проблема? Я могу предоставить выходной журнал, если это необходимо, но я понятия не имею.
Я не уверен, что понимаю, что вы имеете в виду при открытии и закрытии. Но этот код очень неправильный:
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
и обратите внимание на возвращаемое им значение.
const char*
кconst wchar_t*
не делает это так. Каждый раз, когда вы используете актерский состав, вы должны быть обеспокоены. Вам нужно использовать широкие литералы:L"open"
. Вы также утверждаете, что ошибок нет. Но я не вижу никаких доказательств того, что вы проверяли ошибки.