(转)createProcess时不显示或者不创建窗口

http://blog.163.com/zhucongdzkd@126/blog/static/1399971932010780309154/

createProcess时不显示或者不创建窗口  

使用WIN32 API CreateProcess()以无窗口方式创建DOS程序
要达到DOS程序运行时不显示窗口的效果,有两种可能:
一是创建该DOS进程时,指定不创建窗口;
二是隐藏该DOS进程有窗口。
根据MSDN,CreateProcess() API的原型如下:
BOOL CreateProcess(
  LPCTSTR lpApplicationName,
  LPTSTR lpCommandLine,
  LPSECURITY_ATTRIBUTES lpProcessAttributes,
  LPSECURITY_ATTRIBUTES lpThreadAttributes,
  BOOL bInheritHandles,
  DWORD dwCreationFlags,
  LPVOID lpEnvironment,
  LPCTSTR lpCurrentDirectory,
  LPSTARTUPINFO lpStartupInfo,
  LPPROCESS_INFORMATION lpProcessInformation
);

其中,dwCreationFlags指定为CREATE_NO_WINDOW,即以不创建窗口方式创建DOS进程。
LPSTARTUPINFO lpStartupInfo参数又为STARTUPINFO结构,如下:
typedef struct _STARTUPINFO {
  DWORD cb;
  LPTSTR lpReserved;
  LPTSTR lpDesktop;
  LPTSTR lpTitle;
  DWORD dwX;
  DWORD dwY;
  DWORD dwXSize;
  DWORD dwYSize;
  DWORD dwXCountChars;
  DWORD dwYCountChars;
  DWORD dwFillAttribute;
  DWORD dwFlags;
  WORD wShowWindow;
  WORD cbReserved2;
  LPBYTE lpReserved2;
  HANDLE hStdInput;
  HANDLE hStdOutput;
  HANDLE hStdError;
} STARTUPINFO,
*LPSTARTUPINFO;

其中,指定STARTUPINFO结构中WORD wShowWindow为SW_HIDE,即以不显示窗口方式创建DOS进程。
在Visusl Studio 2005中实测的结果是:创建[CMD /C] DOS进程,第一种方式可以无窗口方式创建DOS进程,而第二种方式没有正确的隐藏DOS窗口。

转载于:https://www.cnblogs.com/vc60er/archive/2012/12/25/2832591.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
createprocess隐藏命令行不生效可能是由于以下几个原因导致的。 首先,可能是CreateProcess函数的参数设置有误导致隐藏命令行不生效。CreateProcess函数有很多参数,其中一个是lpCommandLine,它指定要执行的命令行。如果lpCommandLine参数设置不正确,可能会导致命令行无法隐藏。需要确保参数正确设置为要执行的命令,并且需要特别注意参数的引号和义字符的使用。 其次,可能是操作系统设置或安全策略的限制导致隐藏命令行不生效。某些操作系统或安全策略可能会禁止或限制隐藏命令行,以防止恶意程序的执行。需要检查操作系统和安全策略的限制,确认是否允许隐藏命令行的操作,并进行相应的设置。 另外,可能是程序自身的代码逻辑或其他函数调用导致隐藏命令行不生效。需要仔细检查程序代码,确保没有其他函数调用或代码逻辑干扰了隐藏命令行的执行。有候,可能需要使用其他相关的函数或API来实现隐藏命令行的效果,比如使用ShellExecuteEx函数等。 综上所述,要解决createprocess隐藏命令行不生效的问题,需要仔细检查CreateProcess函数的参数设置、操作系统和安全策略限制,以及程序自身的代码逻辑或其他函数调用。如果以上方法都没有解决问题,可能需要查阅相关文档资料或寻求专业人士的帮助来进一步解决问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值