好贷网好贷款

win32程序执行控制台命令并重定向输出到文件

发布时间:2016-12-5 22:33:41 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"win32程序执行控制台命令并重定向输出到文件",主要涉及到win32程序执行控制台命令并重定向输出到文件方面的内容,对于win32程序执行控制台命令并重定向输出到文件感兴趣的同学可以参考一下。

ShellExecute系列函数,可以执行控制台命令,但是无法实现输出重定向。 system函数,可以执行命令,并实现输出重定向,但是无法隐藏控制台窗口。 CreateProcess函数,则既可以执行命令,又可以实现输出重定向,同时不显示控制台窗口。 但是,CreateProcess函数的使用显得有些复杂。 我们可以将他包装一下,让他变得和ShellExecute或system一样好用。 下面的函数my_exec就实现了这种包装。 通过my_exec执行命令,并实现输出重定向非常方便。 例如,执行ping命令,将结果输出到c:\haha.txt中。则按如下方式调用即可。 my_exec(TEXT("ping www.csdn.net"), TEXT("c:\\haha.txt"), -1); 再如,执行dos命令dir,并将结果输出到c:\fff.txt中。则按如下方式调用即可。 my_exec(TEXT("cmd.exe  /c  dir d:") , TEXT("c:\\fff.txt"), -1);   好了,函数my_exec的代码实现如下。 int my_exec(TCHAR *cmd, TCHAR *output_file, int wait_time_sec) {     PROCESS_INFORMATION pi;     STARTUPINFO si;     BOOL ret = FALSE;     DWORD flags = CREATE_NO_WINDOW;     HANDLE h;         SECURITY_ATTRIBUTES sa;     sa.nLength = sizeof(sa);     sa.lpSecurityDescriptor = NULL;     sa.bInheritHandle = TRUE;           h = CreateFile(output_file,         FILE_APPEND_DATA,         FILE_SHARE_WRITE | FILE_SHARE_READ,         &sa,         CREATE_ALWAYS,         FILE_ATTRIBUTE_NORMAL,         NULL );       ZeroMemory( &pi, sizeof(PROCESS_INFORMATION) );     ZeroMemory( &si, sizeof(STARTUPINFO) );     si.cb = sizeof(STARTUPINFO);     si.dwFlags |= STARTF_USESTDHANDLES;     si.wShowWindow =SW_HIDE;     si.hStdInput = NULL;     si.hStdError = NULL;     si.hStdOutput = h;     ret = CreateProcess(NULL, cmd, NULL, NULL, TRUE, flags, NULL, NULL, &si, &pi);       WaitForSingleObject(pi.hProcess, -1==wait_time_sec?INFINITE:wait_time_sec*1000 );     CloseHandle(h);     CloseHandle(pi.hProcess);     CloseHandle(pi.hThread);     return ret; }  

上一篇:php的10个编程好习惯
下一篇:SQL开发利器SQL Prompt 5.1完全破解+使用教程

相关文章

相关评论