windows下C/C++调用命令行不显示执行窗口的方法
来源:互联网 发布:在线视频播放器 mac 编辑:程序博客网 时间:2024/05/16 17:28
1. 问题背景 : 使用dos 命令嵌入在C/C++代码中 ,执行时会显示DOS窗口。
2. 嵌入在C/C++代码中的命令行一般有以下几种方式:
SellExcute()
----//调用计算器
----ShellExecute(NULL,"open","calc.exe",NULL,NULL,SW_SHOWNORMAL);
----//调用记事本
----ShellExecute(NULL,"open","NOTEPAD.EXE",NULL,NULL,SW_SHOWNORMAL)
system()
-----system("dir");
WinExec()
使用方法往下看。
CreateProcess()
使用方法往下看。
参数省略....................................................
3. 解决方案:
3.1 使用WinExec()
此种方式比较简单易用。
格式:
WinExec(cmd,SW_HIDE);
3.2 使用CreateProcess()
#pragma comment( linker, "/subsystem:/"windows/" /entry:/"mainCRTStartup/"" ) // 设置入口地址#include <windows.h> #include <stdio.h> #define COMMENDLINE "ping 127.0.0.1"//调用命令行命令而不显示命令行窗口BOOL system_hide(char* CommandLine) { SECURITY_ATTRIBUTES sa; HANDLE hRead,hWrite; sa.nLength = sizeof(SECURITY_ATTRIBUTES); sa.lpSecurityDescriptor = NULL; sa.bInheritHandle = TRUE; if (!CreatePipe(&hRead,&hWrite,&sa,0)) { return FALSE; } STARTUPINFO si; PROCESS_INFORMATION pi; si.cb = sizeof(STARTUPINFO); GetStartupInfo(&si); si.hStdError = hWrite; si.hStdOutput = hWrite; si.wShowWindow = SW_HIDE; si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES; //关键步骤,CreateProcess函数参数意义请查阅MSDN if (!CreateProcess(NULL, CommandLine, NULL,NULL,TRUE,NULL,NULL,NULL,&si,&pi)) { return FALSE; } CloseHandle(hWrite); char buffer[4096] = {0}; DWORD bytesRead; while(true) { memset(buffer,0,strlen(buffer));if(ReadFile(hRead,buffer,4095,&bytesRead,NULL)==NULL) break; //buffer中就是执行的结果,可以保存到文本,也可以直接输出 //printf(buffer);//这行注释掉就可以了 Sleep(100); } return TRUE; } int main(int argc, char* argv[]) { system_hide(COMMENDLINE);//不显示命令窗口//system(COMMENDLINE);//显示命令行窗口return 0; }
- windows下C/C++调用命令行不显示执行窗口的方法
- Windows计划任务执行时不显示窗口的问题
- 《C++Primer》读书笔记之---Windows下通过命令行窗口编译运行C++程序的尝试
- system调用命令行命令而不显示命令行窗口
- system调用命令行命令而不显示命令行窗口
- 转:windows 下 java 调用本地C DLL 的方法
- C#form不显示工具头,移动窗口方法
- 程序中调用命令行命令,不显示那个黑黑的DOS窗口
- 不显示命令行窗口和在程序中加载lib文件的方法
- Windows下C语言命令行编译器的环境变量设置
- vb下调用C++dll的方法
- windows下PHP调用执行桌面程序的方法
- windows下命令行编译c/c++源码
- Windows下命令行改变路径 如C:\>
- windows命令行下编译、运行c程序
- C#/winform 指定窗口显示位置的方法
- MFC窗口程序显示命令行输出窗口的方法
- MFC窗口程序显示命令行输出窗口的方法
- 邮箱验证
- Twitter API 使用
- C++中的虚函数
- MongoDB基本类型
- vs2013 RC 简单体验记
- windows下C/C++调用命令行不显示执行窗口的方法
- java环境变量配置
- KMP字符串匹配关键算法
- 通过小项目学Android教程6 - 亲手做一个便签本(2)
- Edittext文本框添加键盘search事件:
- 全排列算法与全组合算法
- IPv6地址前缀
- 自定义Title 背景问题
- c++沉思录笔记(20章代码)迭代器配接器