CreateProcess执行一个控制台程序,隐藏DOS窗口

STARTUPINFO   StartupInfo;//创建进程所需的信息结构变量    
GetStartupInfo(&StartupInfo);    
StartupInfo.lpReserved=NULL;    
StartupInfo.lpDesktop=NULL;    
StartupInfo.lpTitle=NULL;    
StartupInfo.dwX=0;    
StartupInfo.dwY=0;    
StartupInfo.dwXSize=0;    
StartupInfo.dwYSize=0;    
StartupInfo.dwXCountChars=500;    
StartupInfo.dwYCountChars=500;    
StartupInfo.dwFlags=STARTF_USESHOWWINDOW;    
StartupInfo.wShowWindow=SW_HIDE;    
//说明进程将以隐藏的方式在后台执行    
StartupInfo.cbReserved2=0;    
StartupInfo.lpReserved2=NULL;    
StartupInfo.hStdInput=stdin;    
StartupInfo.hStdOutput=stdout;    
StartupInfo.hStdError=stderr;    
PROCESS_INFORMATION   piProcess;    
BOOL   bRet;    
bRet   =   CreateProcess(modName,NULL,NULL,NULL,TRUE,CREATE_NO_WINDOW ,NULL,NULL,&StartupInfo,&piProcess);   
if(bRet)    
CloseHandle(piProcess.hThread);        
CloseHandle(piProcess.hProcess); 
注意其中的StartupInfo.dwFlags=STARTF_USESHOWWINDOW;是必须的,要不然showwindow的参数将无效,详细的MSDN上写得清楚

时间: 2024-11-05 17:52:30

CreateProcess执行一个控制台程序,隐藏DOS窗口的相关文章

C#零基础入门-3-第一个控制台程序

打开VS2017 文件 新建 项目 模板选择Visual C# Windows 控制台应用程序 快速写入Console.WriteLine 输入cw,然后快速按tab键两次即可. 原文地址:https://www.cnblogs.com/mobilecard/p/9868549.html

centos 后台执行C#控制台程序

1. nohup nohup 无疑是我们首先想到的办法.顾名思义,nohup 的用途就是让提交的命令忽略 hangup 信号.让我们先来看一下 nohup 的帮助信息: NOHUP(1) User Commands NOHUP(1) NAME nohup - run a command immune to hangups, with output to a non-tty SYNOPSIS nohup COMMAND [ARG]... nohup OPTION DESCRIPTION Run C

一个控制台程序,模拟机器人对话

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; namespace RobotTest { class Program { static void Main(string[] args) { 机器人 robot = new 机器人(); r

重定向子进程控制台程序的输入输出

重定向子进程控制台程序的输入输出 重定向所做的工作都在父进程,但需要子进程遵守下面的规则: 子进程程序在输出代码后,等待输入之前需要调用fflush(stdout)函数,这样把输出的内容放入缓冲区,父进程才能及时的读到输出数据. 不遵守以上规则就没办法实现有效的交互了,cmd.exe是遵守这个规则的典范,大部分控制台程序都不遵守这个规则.今天我试图给Google的V8 Javascript 的Shell搞一个GUI,方便我输入Javascript程序,就遇到了v8_shell不遵守这个的问题.好

C、C++控制台程序、Windows API程序、MFC程序理解与比较

在编程语言中,函数是一个很重要的概念,其身影无处不在.在面向过程的编程方式中,函数更是程序的基本构建模块,在面向对象的编程方式中,函数演变为类或对象的成员(当然也可以使用与类无关的函数).函数由函数头和函数体组成.函数头包括域属性(如external.static或类域).返回值类型.函数名.及参数.域属性包括其在多文件编程中的可见范围,是否是属于某一个类的成员?返回值类型是指函数返回的值的具体数据类型(可以理解为函数输出的一部分).函数名是函数保存在内存代码区的首地址,用于函数的调用及函数指针

重温delphi之控制台程序:Hello World!

原文:重温delphi之控制台程序:Hello World! 这二天用c#开发ActiveX时,发现不管怎么弄,c#就是没办法生成ocx的纯正activeX控件,而且还要强迫用户安装巨大的.net framework(我只是想做一个简单截屏功能的activeX整合到silverlight聊天室中),于是想起了曾经用过一年的delphi,虽然时过境迁,现在早以是.net的天下,但是不可否认,delphi仍是win32原生程序最佳的开发工具之一. 关于Delphi的语法学习,可以参见这个chm文档,

你们信不信一句Console.WriteLine就能让你的控制台程序失去响应

好久没更新博客了,今天是扒衣见君节,难得闲下来就来说说一个最近有趣的发现吧. 首先废话不多说,直接上代码吧 1 class Program 2 { 3 static void Main(string[] args) 4 { 5 var bytes = new byte[4096]; 6 for (int i = 0; i < bytes.Length; i++) 7 { 8 bytes[i] = 7; 9 } 10 11 Console.WriteLine(Encoding.ASCII.GetS

跟我一起学WCF(4)——第一个WCF程序

一.引言 前面几篇文章分享了.NET 平台下其他几种分布式技术,然而前面几种分布式技术专注于某一特定的领域,并且具有不同编程接口,这使得开发人员需要掌握多个API的使用.基于这样的原因,微软在.NET 3.0时实现了WCF.WCF是.NET平台下各种分布式技术的集成,它将前面介绍的几种分布式技术完全整合在一起,并提供了一套统一的编程接口(API).对于,开发人员来来说只需要掌握WCF一套的API,就可以实现之前分布式技术所实现的所有功能. 二.WCF详细介绍 WCF(Windows Commun

VC6.0建立控制台程序

作者:iamlaosong 因为需要,又写起了文本界面的程序,以便PDA通过telnet连上执行.如果是Linux服务器的话,这是很简单的事,可是用户服务器是windows server 2003,所以就需要安装telnet服务,开发一个控制台程序.telnet服务器软件使用开源软件KpyM Telnet/SSH Server,控制台程序就用VC6.0来做了.网上搜了一下,通过下面链接操作即可: 怎么用VC6.0建立控制台程序 建议不要建立一个空程序,而是建立一个"Hello,World!&qu