Сага продолжается...
Я искал в Интернете, я искал в StackOverflow, я нашел много надежд, дающих ответы/решения, но почему-то все они потерпели неудачу (вверх) у меня (включая те, которые связаны с ShellExecute(Ex) ).
Как скрыть (мигающее) окно CMD (включая аргументы) с помощью CreateProcess??
В основном я хочу вызвать/выполнить набор условных/собственных команд cmd.exe
(т.е. FOR /F
и ||
), а также внешнюю команду FIND(STR).exe
. И это, без показа (мигающего) окна CMD.
Но даже скрыть такую простую вещь, как "cmd.exe /C ECHO ...flashing window is bad..."
, кажется невозможным.
Код, который я пробовал (включая множество вариантов, связанных с флагами dwFlags
и wShowWindow
#include <windows.h>
int main()
{
char cmdline[] = "cmd.exe /c ECHO ...flashing window is bad...";
PROCESS_INFORMATION pi;
STARTUPINFO si;
// memset(&si,0,sizeof(STARTUPINFO));
ZeroMemory(&si, sizeof(STARTUPINFO));
si.cb = sizeof(STARTUPINFO);
// si.dwFlags = STARTF_USESTDHANDLES;
// si.dwFlags = CREATE_NO_WINDOW;
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow = SW_HIDE;
// si.wShowWindow = CREATE_NO_WINDOW;
CreateProcess(NULL, (LPSTR) cmdline, NULL, NULL, 0, 0, NULL, NULL, &si, &pi);
WaitForSingleObject(pi.hProcess, INFINITE);
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
// ExitProcess;
return 0;
}
Я не хочу полагаться на внешние программы, такие как .vbs (Windows Scripting Host) или трюки с ярлыками, а просто на автономный скомпилированный .exe.
Это (действительно) слишком много, чтобы просить, или я делаю это (совершенно) неправильно?
Спасибо...
main
по умолчанию создает консольное приложение. Вы переопределяете значения по умолчанию компоновщика? - person Eryk Sun   schedule 04.10.2017