有些时候我们会在程序中使用dos命令执行一些操作,运行批处理文件之类的,但发现在使用cmd的时候,会显示一个黑色的控制台窗口,很不友好。最近研究发现可以使用CreateProcess来隐藏cmd窗口,该函数的参数相关设置如下:
BOOL CreateProcess(
LPCTSTR lpApplicationName, "C:/Windows/system32/cmd.exe"
LPTSTR lpCommandLine, "C:/windows/symtem32/cmd.exe /c xcopy d:/1 d:/2"
LPSECURITY_ATTRIBUTES lpProcessAttributes, NULL
LPSECURITY_ATTRIBUTES lpThreadAttributes, NULL
BOOL bInheritHandles, NULL
DWORD dwCreationFlags, 04000410
LPVOID lpEnvironment, 00000000
LPCTSTR lpCurrentDirectory, "c:/documents and settings/cwc"
LPSTARTUPINFO lpStartupInfo,
LPPROCESS_INFORMATION lpProcessInformation
);
STARTUPINFO 设置如下:
typedef struct _STARTUPINFO
{
DWORD cb; 44
LPTSTR lpReserved; 0
LPTSTR lpDesktop; 0
LPTSTR lpTitle; 0
DWORD dwX; 0
DWORD dwY; 0
DWORD dwXSize 0
DWORD dwYSize; 0
DWORD dwXCountChars; 0
DWORD dwYCountChars; 0
DWORD dwFillAttribute; 0
DWORD dwFlags; 401
WORD wShowWindow; 1
WORD cbReserved2; 0
LPBYTE lpReserved2; 0
HANDLE hStdInput; 10001
HANDLE hStdOutput; 0
HANDLE hStdError; 1
}STARTUPINFO, *LPSTARTUPINFO;