How to eliminate console-window when calling external executables?
Here is a function you can use. This function should work with NT/2000/XP.
Code:
#include <windows.h>
#include <strsafe.h>
#if !defined(ARRAY_SIZE)
#define ARRAY_SIZE(arr) (sizeof(arr)/sizeof((arr)[0]))
#endif
BOOL RunCommand(LPCTSTR szCommand)
{
TCHAR szComSpec[MAX_PATH];
TCHAR szCmd[2048];
STARTUPINFO si = { sizeof(si) };
PROCESS_INFORMATION pi = { 0 };
if ( SUCCEEDED(StringCchPrintf(szCmd, ARRAY_SIZE(szCmd), TEXT("/c %s"), szCommand)) &&
GetEnvironmentVariable(TEXT("COMSPEC"), szComSpec, ARRAY_SIZE(szComSpec)) &&
CreateProcess(szComSpec, szCmd, NULL, NULL, FALSE, CREATE_NO_WINDOW, NULL, NULL, &si, &pi) )
{
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
return TRUE;
}
return FALSE;
}
int CALLBACK WinMain(HINSTANCE hInstance, HINSTANCE reserved, LPSTR lpCmdLine, int nCmdShow)
{
RunCommand("ECHO HelloWorld > test.txt");
return 0;
}