批处理文件,窗口中显示
来源:互联网 发布:经济学的书 知乎 编辑:程序博客网 时间:2024/04/28 05:17
完整代码示例:
//---------------------------------------------------------------------------
#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);
}
//---------------------------------------------------------------------------
- 批处理文件,窗口中显示
- ATL中显示窗口
- 在窗口中显示字符串
- 窗口中动态显示时间
- 在bat批处理文件中执行程序后不保留DOS窗口
- XP中怎样让批处理文件运行后,不关闭dos窗口
- 解决方案:cmd窗口pip显示不是内部或外部命令,也不是可运行的程序或批处理文件
- 批处理文件中%~dp0是什么意思?
- 批处理文件中输入换行
- windows中批处理文件
- 隐藏批处理文件运行窗口的方法
- 执行BAT 批处理文件 CMD窗口一闪而过
- 在一个窗口中显示多个视频子窗口
- winfrom 中关闭登陆窗口显示先窗口
- 在单个窗口中显示多个视频子窗口
- MFC中主窗口显示前启动窗口的实现
- Delphi中实现正常窗口的显示
- delphi中显示中文版的打开窗口
- 取得IP地址
- 小语
- 使用java.math.BigDecimal
- test
- 迷茫
- 批处理文件,窗口中显示
- 加密解密程序
- 浙大教授郑强对科技和教育的反思
- 揭密:美军超级黑客特种部队
- aspdotnet connection Sql server
- aspdotnet connection database compare
- bolg申请成功 发文庆贺
- python Database API Specification v2.0
- asp.net connection database compare bewteen ado.net Managed provider to ado.net sql managed provider