1 //函数原型
 2 
 3 BOOL WINAPI CreateProcess(
 4   __in_opt     LPCTSTR lpApplicationName,
 5   __inout_opt  LPTSTR lpCommandLine,
 6   __in_opt     LPSECURITY_ATTRIBUTES lpProcessAttributes,
 7   __in_opt     LPSECURITY_ATTRIBUTES lpThreadAttributes,
 8   __in         BOOL bInheritHandles,
 9   __in         DWORD dwCreationFlags,
10   __in_opt     LPVOID lpEnvironment,
11   __in_opt     LPCTSTR lpCurrentDirectory,
12   __in         LPSTARTUPINFO lpStartupInfo,
13   __out        LPPROCESS_INFORMATION lpProcessInformation
14 );
15 
16 //
17 DWORD WINAPI WaitForInputIdle(
18   __in  HANDLE hProcess,
19   __in  DWORD dwMilliseconds
20 );
21 Return code/value Description 
22 0
23  The wait was satisfied successfully.
24  
25 WAIT_TIMEOUT
26  The wait was terminated because the time-out interval elapsed.
27  
28 WAIT_FAILED
29  An error occurred.
30  
31 
32 // 创建子进程
33         STARTUPINFO startup;
34         PROCESS_INFORMATION procinfo;
35         ::ZeroMemory(&startup, sizeof(startup));
36         startup.cb = sizeof(startup);
37         startup.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
38         startup.wShowWindow = SW_HIDE; // hidden console window
39         startup.hStdInput = NULL; // not used
40         startup.hStdOutput = hPipeOutW;
41         startup.hStdError = hPipeErrW;
42 
43         BOOL started = ::CreateProcess(NULL,        // command is part of input string
44                         _command,         // (writeable) command string
45                         NULL,        // process security
46                         NULL,        // thread security
47                         TRUE,        // inherit handles flag
48                         CREATE_SUSPENDED,           // flags
49                         NULL,        // inherit environment
50                         _curDir,        // inherit directory
51                         &startup,    // STARTUPINFO
52                         &procinfo);  // PROCESS_INFORMATION
53 if(!started)
54 {
55        error(TEXT("CreateProcess"), result, 1002);
56 }
57 else
58 {
59        if (WaitForInputIdle(pinfo.hProcess, 30000) == 0)  
60        {
61              // ......
62        }
63 }
64 
65              CloseHandle(procinfo.hThread);  
66              CloseHandle(procinfo.hProcess);

转载于:https://www.cnblogs.com/noselhq/archive/2012/11/08/2760374.html

利用WaitForInputIdle等待初始化完成CreateProcess相关推荐

  1. 利用反射判断初始化后的对象所有属性是否为空判断对象指定属性是否为空

    如果是初始化的对象是无法仅通过对象!=null来判断其是否为空的.     我认为有两个方法判断其是否为空:         一是,对其循环遍历,判断属性是否为空         二是,判断其某个必输 ...

  2. 利用Python延迟初始化提升性能

    所谓类属性的延迟计算就是将类的属性定义成一个property,只在访问的时候才会计算,而且一旦被访问后,结果将会被缓存起来,不用每次都计算.构造一个延迟计算属性的主要目的是为了提升性能 propert ...

  3. 自己动手写简单的web应用服务器(4)—利用socket实现文件的下载

    直接上源码: 服务器: 1 package download; 2 3 import java.io.BufferedInputStream; 4 import java.io.BufferedOut ...

  4. dell服务器630虚拟盘初始化,DELL服务器配置Raid的步骤

    磁盘阵列是由很多价格较便宜的磁盘,组合成一个容量巨大的磁盘组,利用个别磁盘提供数据所产生加成效果提升整个磁盘系统效能.下面是学习啦小编收集整理的DELL 服务器配置Raid的步骤,希望对大家有帮助~~ ...

  5. 安卓连接linux软件,利用 Telnet 无线控制安卓手机 无需 Root

    以往的文章里菲菲君一直在极力推荐 adb 来远程执行安卓 shell 命令,虽然 adb 也支持无线连接但需 Root 权限(现在的 Android 真的没有 Root 的必要了),连接数据线又很麻烦 ...

  6. 利用Adobe AIR本地扩展支持Android开发

    http://bbs.9ria.com/thread-180609-1-1.html 学前准备... 2 所需知识... 2 额外工具... 2 用户等级... 2 例子文件... 2 设置AIR S ...

  7. 利用Python探测附近WIFI密码的详细代码

    前言 本文将记录学习下如何通过 Python 脚本实现 WIFI 密码的暴力破解,从而实现免费蹭网. 无图形界面 先来看看没有图形界面版的爆破脚本. WIFI爆破 1 2 3 4 5 6 7 8 9 ...

  8. python利用多线程批量下载高清美女图片(350秒下载近3600张1.2个G的照片,地址可变)

    目录 第一章.前言 1.1.实现的效果: 1.2.需要用到的库: 第二章.代码分块讲解 2.1.对象的定义和初始化 2.2.方法1和2获取所有图集链接 2.2.1. 对应网站结构 2.2.2 .相应代 ...

  9. 为uThreadPool增加线程池等待功能

    unit uThreadPool; { aPool.AddRequest(TMyRequest.Create(RequestParam1, RequestParam2, ...)); } interf ...

  10. 互斥信号量的等待与通知

    文章目录 1 互斥信号量的等待与通知 1.1 设计原理 1.2 设计实现 1 互斥信号量的等待与通知 1.1 设计原理 等待互斥信号量: 信号量未被占有: 标记为已占有. 锁定次数+1. 信号量被自己 ...

最新文章

  1. 注入Attention,精度涨30%!谷歌发表最新多目标“动态抠图”模型
  2. 无线网络(5) 无线网络安全性
  3. 2016级算法第一次练习赛-E.AlvinZH的儿时回忆——蛙声一片
  4. QQ 相册后台存储架构重构与跨 IDC 容灾实践
  5. 使用Seata彻底解决Spring Cloud中的分布式事务问题!
  6. Docker自动补全容器名
  7. 提升不止一点点,Dubbo 3.0 预览版详细解读
  8. 机器博弈 (三) 虚拟遗憾最小化算法
  9. Oracle swap 100%案例分析
  10. opencv之透视变换cvWarpPerspective
  11. 总结的iOS、mac开源项目及库,持续更新。。。。 github排名 https://github.com/trending,github搜索:https://github.com/search
  12. 计算机网络最早出现在哪个年代
  13. excel复选框_使用复选框更改Excel公式结果
  14. linux系统属于操作系统吗,linux属于什么操作系统
  15. 联想小新300加固态_Lenovo 联想 小新310 硬盘移位加装SSD
  16. python:实现base64加密和base64解密算法(附完整源码)
  17. php获取汉字的首字母,PHP获取汉字的首字母
  18. 【微信小程序/云开发bug解决方案合集】持续更新中(最新22-11-21)
  19. nexus上传jar总是读条而上传不成功的问题
  20. ARM最强CPU/GPU来了!A75、G72首发:性能爆炸

热门文章

  1. Windows 8实用窍门系列:16.Windows 8的右键菜单
  2. SQL SERVER 2008的转置函数PIVOT
  3. 台企招聘一名PHP程序員
  4. ASP.NET(C#)常用数据加密和解密方法1
  5. FireMoneky 画图 Point 赋值
  6. 在java EE版本eclipse下如何查看tomcat部署的位置 。版权声明:本文为博主原创文章,未经博主允许不得转载。...
  7. 诺基亚入门级音乐手机售319元
  8. 一个很好的反选的例子
  9. java day30【数据库连接池 、Spring JDBC : JDBC Template】
  10. BUAA软工第0次作业