关于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 ...
随机推荐
- 【LeetCode】2020-04 每日一题
8. 字符串转换整数 (atoi)(中等) [分类]:模拟.正则表达式 [题解]: 解法1:直接模拟,但是在判断INT_MAX和INT_MIN上需要注意,因为直接判断会超出范围,所以可以将式子转换一下 ...
- 5行代码!完成bat病毒制作!!!
这个病毒的功能是删除当前目录下.cpp类型的代码. copy %0 "%userprofile%\AppData\Roaming\Microsoft\Windows\Start Menu\P ...
- html+css写出响应式侧边导航栏
html部分:先写用div画好六个导航的卡片,再利用css添加响应效果 <div class='card-holder'> <div class='card-wrapper'> ...
- 详细了解 InnoDB 内存结构及其原理
最近发现,文章太长的话,包含的信息量较大, 并且需要更多的时间去阅读.而大家看文章,应该都是利用的一些碎片时间.所以我得出一个结论,文章太长不太利于大家的吸收和消化.所以我之后会减少文章的长度,2-3 ...
- 几十行代码实现ASP.NET Core自动依赖注入
在开发.NET Core web服务的时候,我们习惯使用自带的依赖注入容器来进行注入. 于是就会经常进行一个很频繁的的重复动作:定义一个接口->写实现类->注入 有时候会忘了写Add这一步 ...
- YARP实现Dapr服务调用的反向代理
楔子 公司即将新开项目,打算用点时髦的技术,需要探探路.之前没做过微服务项目,没有技术栈方面的积(负)累(债), 干脆就上微软的分布式运行时Dapr......嗯......用来服务发现,然后等测试用 ...
- Tensorflow Serving 参数
Flags: --port=8500 int32 Port to listen on for gRPC API --grpc_socket_path="" string If no ...
- JAVAEE_Servlet_10_HTTP协议
HTTP协议 * 什么是HTTP 协议? - HTTP协议(超文本传输协议HyperText Transfer Protocol),它是基于TCP协议的应用层传输协议,简单来说就是客户端和服务端进行数 ...
- 基本dos命令
Dos命令 打开cmd方法 开始---windows系统---命令提示符 win键 + R键 输入cmd --- 回车 按住Shift键---右击任意文件夹-----单击在此处打开PowerShell ...
- Day02_13_Javadoc_生成帮助文档
JavaDoc 命令:javadoc -encoding UTF-8 -charset UTF-8 Doc.java 执行该命令后,会在java目录生成index.html打开就可以看到生成的文档了 ...