隐藏控制台窗口
BOOL MByteToWChar(LPCSTR lpcszStr, LPWSTR lpwszStr, DWORD dwSize)
{
// Get the required size of the buffer that receives the Unicode
// 获取接收Unicode的缓冲区的所需大小
// string.
DWORD dwMinSize;
dwMinSize = MultiByteToWideChar(CP_ACP, 0, lpcszStr, -1, NULL, 0);
if (dwSize < dwMinSize)
{
return FALSE;
}
// Convert headers from ASCII to Unicode.
MultiByteToWideChar(CP_ACP, 0, lpcszStr, -1, lpwszStr, dwMinSize);
return TRUE;
}
int nb_system(char* cmd)
{
wchar_t cmd_w[2048] = { 0 };
MByteToWChar(cmd, cmd_w, sizeof(cmd_w) / sizeof(cmd_w[0]));
STARTUPINFO si;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof STARTUPINFO;
DWORD pExitCode = 0;
PROCESS_INFORMATION pi = { 0 };
if (CreateProcess(NULL, cmd_w, NULL, NULL, TRUE, NORMAL_PRIORITY_CLASS | CREATE_NO_WINDOW, NULL, NULL, &si, &pi))
{
//等待进程执行完毕
WaitForSingleObject(pi.hProcess, INFINITE);
GetExitCodeProcess(pi.hProcess, &pExitCode);
//释放资源
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
}
else
{
//运行失败
return -1;
}
return pExitCode;
}
将调用控制台运行的函数system替换为nb_system(char* cmd)
即可。
此代码为公司前辈给的。。。具体出处不知,如有侵权请联系我。