社区
C++ Builder
帖子详情
批处理问题,急!!!!
zzw820626
2005-05-26 07:57:07
我先写了一个批处理文件,想把他的结果在一个窗口中显示,该如何做啊?
...全文
112
6
打赏
收藏
批处理问题,急!!!!
我先写了一个批处理文件,想把他的结果在一个窗口中显示,该如何做啊?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
「已注销」
2005-08-07
打赏
举报
回复
mark
kinglh
2005-05-27
打赏
举报
回复
好东西!先收藏!
kangji
2005-05-27
打赏
举报
回复
用管道是对的
weill
2005-05-26
打赏
举报
回复
完整代码示例:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
//---------------------
String ExecuteApp(String sCmdline,TMemo *MyMemo)
{
PROCESS_INFORMATION proc = {0};
long ret;//,k=1
bool bret;
STARTUPINFO start = {0};
SECURITY_ATTRIBUTES sa = {0};
HANDLE hReadPipe ;
HANDLE hWritePipe;
String sOutput;
String sBuffer;
unsigned long lngBytesRead;
char cBuffer[257];
sa.nLength = sizeof(sa);
sa.lpSecurityDescriptor=0;
sa.bInheritHandle = TRUE;
bret =::CreatePipe(&hReadPipe, &hWritePipe,&sa, 0);
if (!bret)
{
sOutput="CreatePipe failed. Error: " + String(GetLastError());
MyMemo->Lines->Add(sOutput);
return sOutput;
}
start.cb = sizeof(STARTUPINFOA);
start.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW;
start.hStdOutput = hWritePipe;
start.hStdError = hWritePipe;
start.wShowWindow = SW_HIDE;
sBuffer = sCmdline;
ret =::CreateProcess(0, sBuffer.c_str(), &sa, &sa, TRUE, NORMAL_PRIORITY_CLASS, 0, 0, &start, &proc);
if (ret == 0)
{
sOutput="Bad command or filename";
MyMemo->Lines->Add(sOutput);
return sOutput;
}
::CloseHandle(hWritePipe);
do
{
memset(cBuffer,'\0',sizeof(cBuffer));
ret = ::ReadFile(hReadPipe, &cBuffer, 256, &lngBytesRead, 0);
sBuffer=StrPas(cBuffer);
sOutput = sOutput + sBuffer;
MyMemo->Text=MyMemo->Text+sBuffer;
Application->ProcessMessages();
} while (ret != 0 );
::CloseHandle(proc.hProcess);
::CloseHandle(proc.hThread);
::CloseHandle(hReadPipe);
return sOutput;
}
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
//ExecuteApp("ping 127.0.0.1",Memo1);
ExecuteApp("DirCD.bat",Memo1);
}
//---------------------------------------------------------------------------
weill
2005-05-26
打赏
举报
回复
不久写的一个函数。
要求有一个Memo控件哦(或你自个再去改造吧)
//---------------------
String ExecuteApp(String sCmdline,TMemo *MyMemo)
{
PROCESS_INFORMATION proc = {0};
long ret;//,k=1
bool bret;
STARTUPINFO start = {0};
SECURITY_ATTRIBUTES sa = {0};
HANDLE hReadPipe ;
HANDLE hWritePipe;
String sOutput;
String sBuffer;
unsigned long lngBytesRead;
char cBuffer[257];
sa.nLength = sizeof(sa);
sa.lpSecurityDescriptor=0;
sa.bInheritHandle = TRUE;
bret =::CreatePipe(&hReadPipe, &hWritePipe,&sa, 0);
if (!bret)
{
sOutput="CreatePipe failed. Error: " + String(GetLastError());
MyMemo->Lines->Add(sOutput);
return sOutput;
}
start.cb = sizeof(STARTUPINFOA);
start.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW;
start.hStdOutput = hWritePipe;
start.hStdError = hWritePipe;
start.wShowWindow = SW_HIDE;
sBuffer = sCmdline;
ret =::CreateProcess(0, sBuffer.c_str(), &sa, &sa, TRUE, NORMAL_PRIORITY_CLASS, 0, 0, &start, &proc);
if (ret == 0)
{
sOutput="Bad command or filename";
MyMemo->Lines->Add(sOutput);
return sOutput;
}
::CloseHandle(hWritePipe);
do
{
memset(cBuffer,'\0',sizeof(cBuffer));
ret = ::ReadFile(hReadPipe, &cBuffer, 256, &lngBytesRead, 0);
sBuffer=StrPas(cBuffer);
sOutput = sOutput + sBuffer;
MyMemo->Text=MyMemo->Text+sBuffer;
Application->ProcessMessages();
} while (ret != 0 );
::CloseHandle(proc.hProcess);
::CloseHandle(proc.hThread);
::CloseHandle(hReadPipe);
return sOutput;
}
//-------调用显例-------
ExecuteApp("DirCD.bat",Memo1);
这个函数可是经典哦,分分给偶哦……不要打痞哦,呵呵……
铖邑
2005-05-26
打赏
举报
回复
可以将批处理程序执行的结果定向到一个文件中,然后打开这个文件读出结果。
比如:执行命令 sample.bat > result.txt 可以将结果存入result.txt
python+图片
批处理
.zip
资源说明:含操作文档+源码+开发环境说明+开发工具
疯狂模渲大师不限时间版
\> 3dmax在室内外效果图设计的场景维护、建模(单面、双面、彩平图)、常用技巧、编辑(二维和三维)、灯光(智能)、材质贴图、相机(标准、VR、CR)、工具、全屋定制、户外、渲染(
批处理
、自动关机、多样化渲染...
UML系统建模与分析设计课后习题答案
按软件的工作方式划分:实时处理软件、分时处理软件交互式软件和
批处理
软件 按软件服务对象的范围划分: 一次性使用软件和使用频度较高的软件 按软件失效的影响程度划分: 一般性软件和关键性软件 3、软件危机产生的...
从 7 分钟到 10 秒,Mybatis
批处理
太强了!
这个时候我兴高采烈的收工了,直到过了一两天,导师问我,考虑过这个业务的性能嘛,后续量大了可能每天有十多万笔数据,问我现在每天要多久,我才发现 0.0 两三万条数据插入居然要7分钟(不完全是这个
问题
导致这么慢...
从 7 分钟到 10 秒,Mybatis
批处理
真的很强!
从实现原理谈谈低代码这篇文章会一步一步带你从一个新手的角度慢慢揭开
批处理
的神秘面纱,对于初次写Mybatis
批处理
的同学可能会有很大的帮助,建议收藏点赞~处理
批处理
的方式有很多种,这里不分析各种方式的优劣,...
C++ Builder
13,825
社区成员
102,679
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章