zoukankan      html  css  js  c++  java
  • (转)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窗口。

  • 相关阅读:
    [NOIP2013]华容道
    [随笔]冲NOIP一等奖。。
    [NOIP2015]联合权值
    [随笔]我回来啦!
    [考试]20151105
    [知识点]最近公共祖先LCA
    [BZOJ3751/NOIP2014]解方程
    [旧版][知识点]字符串Hash
    NOIP2016题解
    NOIP2016游记
  • 原文地址:https://www.cnblogs.com/vc60er/p/2832591.html
Copyright © 2011-2022 走看看