开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 32554|回复: 130
打印 上一主题 下一主题
收起左侧

[易语言纯源码] 匿名管道->cmd.控制台(Console)

[复制链接]
结帖率:33% (3/9)
跳转到指定楼层
楼主
发表于 2015-2-15 14:32:35 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式   日本
分享源码
界面截图:
是否带模块: 纯源码
备注说明: -
本帖最后由 Modify 于 2015-2-15 14:37 编辑

示例代码(Console).rar (4.76 KB, 下载次数: 2086)
匿名管道.rar (6.12 KB, 下载次数: 1866)

注:转载著名出处->
    作者: [email protected]

c++
header:
  
#pragma once
#include "stdafx.h"
struct PIPE_INFO
{
HANDLE hReadHandle;
HANDLE hWriteHandle;
SECURITY_ATTRIBUTES sa;
};
class HX_Pipe
{
private:
PIPE_INFO* _in_pipe;
PIPE_INFO* _out_pipe;
LPPROCESS_INFORMATION _p_info;
protected:
BOOL CreatePipe (PIPE_INFO* p_info);
LPSTARTUPINFOA GetStartupInfo ();
public:
BOOL CreateProcess (LPSTR cmd);
DWORD GetFileSize ();
LPSTR ReadAllText ();
LPBYTE ReadAllBytes (DWORD& size);
BOOL TerminateProcess ();
DWORD WriteAllBytes (LPBYTE buffer, DWORD size);
};


// cpp source
  
#include "HX_Pipe.h"
BOOL HX_Pipe::CreatePipe (PIPE_INFO* p_info)
{
LPSECURITY_ATTRIBUTES s_attr = &p_info->sa;
s_attr->nLength = 12;
s_attr->bInheritHandle = TRUE;
s_attr->lpSecurityDescriptor = NULL;
return ::CreatePipe (&p_info->hWriteHandle, &p_info->hReadHandle, s_attr, NULL);
}
LPSTARTUPINFOA HX_Pipe::GetStartupInfo ()
{
LPSTARTUPINFOA s_infos = new STARTUPINFOA;
::GetStartupInfoA (s_infos);

s_infos->dwFlags = 257;
s_infos->wShowWindow = SW_HIDE;
s_infos->hStdInput = this->_in_pipe->hWriteHandle;
s_infos->hStdOutput = this->_out_pipe->hReadHandle;
s_infos->hStdError = this->_out_pipe->hReadHandle;
return s_infos;
}
BOOL HX_Pipe::CreateProcess (LPSTR cmd)
{
this->_in_pipe = new PIPE_INFO;
this->_out_pipe = new PIPE_INFO;
this->_p_info = new PROCESS_INFORMATION;
this->CreatePipe (this->_in_pipe);
this->CreatePipe (this->_out_pipe);
LPSTARTUPINFOA s_infos = this->GetStartupInfo ();
return CreateProcessA (NULL, cmd, NULL, NULL, TRUE, NULL, NULL, NULL, s_infos, this->_p_info);
}
DWORD HX_Pipe::GetFileSize ()
{
return ::GetFileSize (this->_out_pipe->hWriteHandle, NULL);
}
LPBYTE HX_Pipe::ReadAllBytes (DWORD& size)
{
size = this->GetFileSize ();
if (size > 0)
{
LPBYTE buffer = new BYTE[size];
BOOL retVal = ReadFile (this->_out_pipe->hWriteHandle, buffer, size, &size, NULL);
if (retVal && size > 0)
return buffer;
}
return NULL;
}
LPSTR HX_Pipe::ReadAllText ()
{
DWORD size;
LPSTR str = (LPSTR)this->ReadAllBytes (size);
str[size] = ' \0';
return str;
}
BOOL HX_Pipe::TerminateProcess ()
{
CloseHandle (this->_in_pipe->hReadHandle);
CloseHandle (this->_in_pipe->hWriteHandle);
CloseHandle (this->_out_pipe->hReadHandle);
CloseHandle (this->_out_pipe->hWriteHandle);
return ::TerminateProcess (this->_p_info->hProcess, NULL);
}
DWORD HX_Pipe::WriteAllBytes (LPBYTE buffer, DWORD size)
{
BOOL writed = WriteFile (this->_in_pipe->hReadHandle, buffer, size, &size, NULL);
return writed && size > 0;
}



本帖被以下淘专辑推荐:

结帖率:50% (1/2)

签到天数: 3 天

131
发表于 2025-5-28 00:04:06 | 只看该作者   广东省深圳市
感谢分享
回复 支持 反对

使用道具 举报

结帖率:83% (39/47)

签到天数: 2 天

130
发表于 2024-10-1 10:46:03 | 只看该作者   湖北省荆州市
        小小心意,意思一下
回复 支持 反对

使用道具 举报

结帖率:67% (2/3)

签到天数: 6 天

129
发表于 2024-9-20 08:17:35 | 只看该作者   江苏省淮安市
感谢分享
回复 支持 反对

使用道具 举报

128
发表于 2024-8-29 13:17:07 | 只看该作者   陕西省西安市
多谢楼主分享@@~~
回复 支持 反对

使用道具 举报

127
发表于 2024-6-22 21:43:19 | 只看该作者   黑龙江省齐齐哈尔市
12323123123232322323
回复 支持 反对

使用道具 举报

126
发表于 2024-5-22 21:02:36 | 只看该作者   上海市上海市

感谢分享感谢分享感谢分享感谢分享
回复 支持 反对

使用道具 举报

125
发表于 2024-5-11 13:30:17 | 只看该作者   北京市北京市
好好学习学习
回复 支持 反对

使用道具 举报

124
发表于 2024-4-19 18:08:39 | 只看该作者   广西壮族自治区河池市
下载下载下载下载下载下载下载
回复 支持 反对

使用道具 举报

123
发表于 2024-4-19 18:06:24 | 只看该作者   广西壮族自治区河池市
感谢感谢感谢感谢感谢感谢感谢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报QQ: 793400750,邮箱:[email protected]
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表