关于window匿名通道的使用以及所遇到的问题
前言
学习windows通道时,用他去完成自己的cmd小工具时遇到了一些问题总结一下。
①
关于STARTUPINFO结构:因为为了在cmd程序中通过通道与我们的程序交互,我们需要把cmd的输入输出变为匿名通道的输入输出。这就需要改变STARTUPINFO结构。
注意在把输入输出句柄改变时不要忘记改变STARTUPINFO.dwFlags = START_USESTDHANDLES,意思是使输入输出句柄能被更改。

②关于匿名管道的输入输出句柄
因为为了让cmd.exe能过使用管道,所以需要使在程序中建立的管道句柄能够被子进程继承,除了在CreateProcess使让继承句柄表开关打开外,还需在创建管道时设置参数使其句柄能够继承。并且注意SECURITY_ATTRIBUTES结构要要进行初始化(我这里设置的是static所以其会自动进行初始化)


③关于管道缓冲区
因为在往 “自己的程序 -> cmd” 这条管道通过WriteFile写数据,让cmd通过ReadFile接受数据当作输入的中间需要一定的时间,所以在WriteFile往管道入口输入数据后需要Sleep()等待一会,否则数据将会丢失。

④关于ReadFile()函数的返回
对于管道而言用ReadFile()读数据,如果没有读到数据则会处于阻塞状态。ReadFile()不返回一直等到有数据可读才返回。
⑤关于Edit控件文本编辑(追加写)
以前在对Edit控件编辑框中的文本进行追加写都是先将原文本读出保存起来,在与新文本连接之后在重新写到文本编辑框中。(这样做效率太低了)
在网上搜以一下,发现可以用设置文本编辑光标到文本末,然后进行文本替换的方法。

关于window匿名通道的使用以及所遇到的问题的更多相关文章
- JavaScript基礎知識
JavaScript基礎知識 1.標籤組使用 <script charset='utf-8' //設置字元集 defet //使腳本延遲到文檔解析完成,Browser已忽略 language=' ...
- 一文梳理JavaScript中的this
最近零零碎碎看了许多关于this的文章,本着"好记性不如烂笔头"的思想,特在这里整理一下this有关的知识点.[长文警告!!!] 接下来,笔者将按照以下目录对this进行阐述: t ...
- javascript中需要自行定义的函数
1.toString()与String() 使用方式:x.toString();-----String(x); String是万能的方法,而x.toString()则有局限性,无法将undefined ...
- 昆仑游戏[JS加密修改]
昆仑游戏:http://www.kunlun.com/index.html JS加密修改 BigTools=window.BigTools;//重点 RSAKeyPair=window.RSAKeyP ...
- Editplus配置VC++(2) 与/d1reportSingleClassLayout
前篇文章:Editplus配置VC++(1) 及相关注意事项 VC++有两个隐含编译选项/d1reportSingleClassLayout和/d1reportAllClassLayout /d1 ...
- sizzle源码分析 (1)sizzle架构
sizzle是jquery的核心,它用来选择匹配的元素,其代码包含在一个匿名函数中,并以window作为其上下文环境: (function( window, undefined ) { //此处为si ...
- APP自适应的例子
<!DOCTYPE html><html lang="zh"> <head> <meta charset="UTF-8" ...
- 了解 JS 作用域与作用域链
(1)作用域 一个变量的作用域(scope)是程序源代码中定义的这个变量的区域. 1. 在JS中使用的是词法作用域(lexical scope) 不在任何函数内声明的变量(函数内省略var的也算全局) ...
- JavaScript---闭包和作用域链
作用域和作用域链: 参考文章 :http://www.cnblogs.com/malinlin/p/6028842.html http://www.cnblogs.com/lhb25/archive ...
随机推荐
- C语言之漫谈指针(上)
C语言之漫谈指针(上) 在C语言学习的途中,我们永远有一个绕不了的坑,那就是--指针. 在这篇文章中我们就谈一谈指针的一些基础知识. 纲要: 零.谈指针之前的小知识 一.指针与指针变量 二.指针变量的 ...
- python网络编程TCP服务多客户端的服务端开发
#服务多客户端TCP服务端开发 2 #方法说明 3 """ 4 bind(host,port)表示绑定端口号,host是ip地址,ip地址一般不进 行绑定,表示本机的任何 ...
- 走进docker-初识
什么是Docker容器? 容器是打包代码及其所有依赖项的软件的标准单元,因此应用程序可以从一个计算环境快速可靠地运行到另一个计算环境.Docker容器映像是一个轻量级的,独立的,可执行的软件软件包,其 ...
- IaaS, PaaS和SaaS的区别
从小型企业到全球企业,云都是一个非常热门的话题,它是一个非常广泛的概念,涵盖了很多在线领域. 无论是应用程序还是基础架构部署,当您开始考虑将业务转移到云时,了解各种云服务的差异和优势比以往任何时候都更 ...
- ARFoundation - 实现物体旋转, 平移,缩放
ARFoundation - 实现物体旋转, 平移,缩放 本文目的是为了确定在移动端怎样通过单指滑动实现物体的旋转,双指实现平移和缩放. 前提知识: ARFoundation - touch poin ...
- java例题_36 移动数组中数据位置(用到数组的合并操作)
1 /*36 [程序 36 移动位置] 2 题目:有 n 个整数,使其前面各数顺序向后移 m 个位置,最后 m 个数变成最前面的 m 个数,比如输入数字 3 为 1 2 3 4 5 6 7 8 9 0 ...
- istio服务条目(ServiceEntry)介绍
使用服务条目资源(ServiceEntry)可以将条目添加到 Istio 内部维护的服务注册表中.添加服务条目后,Envoy 代理可以将流量发送到该服务,就好像该服务条目是网格中的服务一样.通过配置服 ...
- 【1.0 Regular Expressions 正则表达式】
[概念] RegEx 正则表达式是一种特殊的字符序列,可帮助您使用专门的模板语法,来匹配对应的匹配方法或字符串组 它们可用于搜索,编辑或操纵文本和数据 正则表达式通常用于验证输入和检索信息 比如我们要 ...
- BUAAOO第一单元代码分析
1.HomeWork1 思路 一个主类用于字符串得操作, 一个Poly类用于对一个多项式进行抽象,用Arraylist来对term进行封装.内部含有求导方法,添加并合并同类项的方法,toString方 ...
- Day09_43_Set集合_HashSet_02(HashCode方法 与 equals方法 )
HashSet - 向Hash表中添加元素的过程? 1. 先调用将要被存储的值key的HashCode方法得出Hash值,如果该Hash值在现有Hash表中不存在,那么直接加入元素. 2. 如果该Ha ...