首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

怎么得到DOS程序运行显示的信息,添加到Memo控件中

2012-02-12 
如何得到DOS程序运行显示的信息,添加到Memo控件中?targetHandle:GetWinHandle( ConsoleWindowClass ,nil)

如何得到DOS程序运行显示的信息,添加到Memo控件中?
targetHandle   :=   GetWinHandle( 'ConsoleWindowClass ',nil);
SendMessage(targetHandle,   WM_GETTEXT,   SizeOf(s),   Integer(@s));

现在用此方法只能得到题目,可我想要DOS显示的信息内容。

help   me!


[解决办法]
绑架Windows控制台,嘎嘎~~
[解决办法]
SendMessage,postmessage
[解决办法]
你可以dos输出到文本文件,然后memo刷新文本文件.
如:
用api的shellexecute 执行dos命令 dir > c:\aa.txt;
memo1.SaveToFile( 'c:\aa.txt ')
就可以了
[解决办法]
//c++
bool RunCmd(String cmd,TStringList* stringlist)
{
TMemoryStream *memstream=new TMemoryStream();
PROCESS_INFORMATION proc;
STARTUPINFO start;
SECURITY_ATTRIBUTES sa;
long ret;
unsigned long lngBytesread;
HANDLE hReadPipe,hWritePipe;
char *strBuff= new char[256];
if(strBuff==NULL)
{
return false;
}
sa.nLength = sizeof(SECURITY_ATTRIBUTES);
sa.bInheritHandle=true;
sa.lpSecurityDescriptor=NULL;
ret=CreatePipe(&hReadPipe,&hWritePipe,&sa,0);
if(ret==0)
{
//创建管道失败
return false;
}
memset(&start,0x00,sizeof(STARTUPINFO));
start.cb=sizeof(STARTUPINFO);
start.dwFlags=STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW;
start.hStdOutput=hWritePipe;
start.hStdError=hWritePipe;
bool retc=CreateProcess(NULL,cmd.c_str(),NULL,NULL,true, 0, 0, NULL, &start, &proc);
if(!retc)
{
return false;
}
CloseHandle(hWritePipe);
unsigned long len;
memstream-> Position=0;
while(true)
{
memset(strBuff,0x00,256);
GetFileSize(hReadPipe,&len);
ret = ReadFile(hReadPipe, strBuff, 256, &lngBytesread,NULL);
if(ret==0)
{
break;
}
else
{
memstream-> Write(strBuff,lngBytesread);
}
}
CloseHandle(proc.hProcess);
CloseHandle(proc.hThread);
CloseHandle(hReadPipe);
memstream-> Position=0;
delete strBuff;
stringlist-> LoadFromStream(memstream);
memstream-> Clear();
delete memstream;
return true;
}
[解决办法]
使用管道。。。
[解决办法]
有免费的控件。StdIORedirect
[解决办法]
Pipe方法
有很多例子的
[解决办法]
盒子www.2ccc.com里以及超级猛料里,都有现成的代码可用,

楼主去查看一下

热点排行