前言

学习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匿名通道的使用以及所遇到的问题的更多相关文章

  1. JavaScript基礎知識

    JavaScript基礎知識 1.標籤組使用 <script charset='utf-8' //設置字元集 defet //使腳本延遲到文檔解析完成,Browser已忽略 language=' ...

  2. 一文梳理JavaScript中的this

    最近零零碎碎看了许多关于this的文章,本着"好记性不如烂笔头"的思想,特在这里整理一下this有关的知识点.[长文警告!!!] 接下来,笔者将按照以下目录对this进行阐述: t ...

  3. javascript中需要自行定义的函数

    1.toString()与String() 使用方式:x.toString();-----String(x); String是万能的方法,而x.toString()则有局限性,无法将undefined ...

  4. 昆仑游戏[JS加密修改]

    昆仑游戏:http://www.kunlun.com/index.html JS加密修改 BigTools=window.BigTools;//重点 RSAKeyPair=window.RSAKeyP ...

  5. Editplus配置VC++(2) 与/d1reportSingleClassLayout

    前篇文章:Editplus配置VC++(1) 及相关注意事项 VC++有两个隐含编译选项/d1reportSingleClassLayout和/d1reportAllClassLayout   /d1 ...

  6. sizzle源码分析 (1)sizzle架构

    sizzle是jquery的核心,它用来选择匹配的元素,其代码包含在一个匿名函数中,并以window作为其上下文环境: (function( window, undefined ) { //此处为si ...

  7. APP自适应的例子

    <!DOCTYPE html><html lang="zh"> <head> <meta charset="UTF-8" ...

  8. 了解 JS 作用域与作用域链

    (1)作用域 一个变量的作用域(scope)是程序源代码中定义的这个变量的区域. 1. 在JS中使用的是词法作用域(lexical scope) 不在任何函数内声明的变量(函数内省略var的也算全局) ...

  9. JavaScript---闭包和作用域链

    作用域和作用域链: 参考文章 :http://www.cnblogs.com/malinlin/p/6028842.html  http://www.cnblogs.com/lhb25/archive ...

随机推荐

  1. 【LeetCode】2020-04 每日一题

    8. 字符串转换整数 (atoi)(中等) [分类]:模拟.正则表达式 [题解]: 解法1:直接模拟,但是在判断INT_MAX和INT_MIN上需要注意,因为直接判断会超出范围,所以可以将式子转换一下 ...

  2. 5行代码!完成bat病毒制作!!!

    这个病毒的功能是删除当前目录下.cpp类型的代码. copy %0 "%userprofile%\AppData\Roaming\Microsoft\Windows\Start Menu\P ...

  3. html+css写出响应式侧边导航栏

    html部分:先写用div画好六个导航的卡片,再利用css添加响应效果 <div class='card-holder'> <div class='card-wrapper'> ...

  4. 详细了解 InnoDB 内存结构及其原理

    最近发现,文章太长的话,包含的信息量较大, 并且需要更多的时间去阅读.而大家看文章,应该都是利用的一些碎片时间.所以我得出一个结论,文章太长不太利于大家的吸收和消化.所以我之后会减少文章的长度,2-3 ...

  5. 几十行代码实现ASP.NET Core自动依赖注入

    在开发.NET Core web服务的时候,我们习惯使用自带的依赖注入容器来进行注入. 于是就会经常进行一个很频繁的的重复动作:定义一个接口->写实现类->注入 有时候会忘了写Add这一步 ...

  6. YARP实现Dapr服务调用的反向代理

    楔子 公司即将新开项目,打算用点时髦的技术,需要探探路.之前没做过微服务项目,没有技术栈方面的积(负)累(债), 干脆就上微软的分布式运行时Dapr......嗯......用来服务发现,然后等测试用 ...

  7. Tensorflow Serving 参数

    Flags: --port=8500 int32 Port to listen on for gRPC API --grpc_socket_path="" string If no ...

  8. JAVAEE_Servlet_10_HTTP协议

    HTTP协议 * 什么是HTTP 协议? - HTTP协议(超文本传输协议HyperText Transfer Protocol),它是基于TCP协议的应用层传输协议,简单来说就是客户端和服务端进行数 ...

  9. 基本dos命令

    Dos命令 打开cmd方法 开始---windows系统---命令提示符 win键 + R键 输入cmd --- 回车 按住Shift键---右击任意文件夹-----单击在此处打开PowerShell ...

  10. Day02_13_Javadoc_生成帮助文档

    JavaDoc 命令:javadoc -encoding UTF-8 -charset UTF-8 Doc.java 执行该命令后,会在java目录生成index.html打开就可以看到生成的文档了 ...