我想用一个RichEdit或Memo控件模拟一个控制台程序在Cmd窗口显示的结果,可以做到吗?[在线等待回复]

qiwei 2002-04-05 09:03:36
我想用一个RichEdit或Memo控件模拟一个控制台程序在Cmd窗口显示的结果,不是只收集最后的结果,而是在要动态显示其输出的数据。
比如:在Cmd窗口,这个程序每隔10秒会输出一个"10",总共运行1分钟,则共输出6个10,而我想让RichEdit或Memo也每隔10秒出现一个"10",最后有6个"10"。
我试过用管道技术,不行,只能最后一次性给我的是6个"10",而不是每10秒出现一个,真的很难,谁能帮我吗?谢谢!
...全文
87 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
laiyuehui 2002-05-04
  • 打赏
  • 举报
回复
我也要:lailailailaiyue@sina.com
hhmmdd 2002-04-05
  • 打赏
  • 举报
回复
错了,应该是ListBox1->Items->Add(OutStr);
hhmmdd 2002-04-05
  • 打赏
  • 举报
回复
用TListBox
程序输出部分改为:
ListBox1->ItemIndex = ListBox1->Add(OutStr);
kingcaiyao 2002-04-05
  • 打赏
  • 举报
回复
To qiwei:
如果你想真的做成那种结果,你可以在显示前延迟500ms或1秒钟也可以啊。
kingcaiyao 2002-04-05
  • 打赏
  • 举报
回复
To qiwei:
你将它改成10,表示10毫秒,你不可能看到它一个个显示,因为时间太短了。
gfh21cn 2002-04-05
  • 打赏
  • 举报
回复
具体用哪一种HOOK 我也不清楚,我只是提一个意见,看能不能抛砖引玉
qiwei 2002-04-05
  • 打赏
  • 举报
回复
可能是由于Timer的Interval并不真如此,它是好像与当前CPU的空闲与忙的状态有关!不知道再创建一个线程是否会好一点?
qiwei 2002-04-05
  • 打赏
  • 举报
回复
To : Kingcaiyao(AKing)

我试过你的程序,这种方法与 XXX.Exe > a.txt,最后再一次性Load真没有分别,最后我把MyTimer->Interval改为10了,还是一样,只是能收集到最终的结果,并不能像在Cmd窗口一样输出。
kingcaiyao 2002-04-05
  • 打赏
  • 举报
回复
如果你的贴子我没有理解错的话,你是要将MEMO模拟成命令窗口,对不对?
那你可以这样:
//程序片段
TTimer *MyTimer;
MyTimer=new TTimer(Memo1);
MyTimer->Interval=10000;
MyTimer->OnTimer=MyFunction;
MyTimer->Enabled=true;
...
//程序片段
void __fastcall MyFunction(TObject *Sender)
{
//TODO:add your code
}
qiwei 2002-04-05
  • 打赏
  • 举报
回复
To : gfh21cn(gfh)
用HOOK,你能给多一点详细地说法吗?
qiwei 2002-04-05
  • 打赏
  • 举报
回复
如果我把 第三行 的 Time1->Enabled = false去掉,它会执行Timer事件,但也是最后一次把它Load进来,根本就不会发生我们想要的那个模拟过程。
gfh21cn 2002-04-05
  • 打赏
  • 举报
回复
这个问题能不能用HOOK
qiwei 2002-04-05
  • 打赏
  • 举报
回复
不行的,我明白你的意思!
例如:
Timer1->Enabled = true;
WinExec("XXX.Exe > A.txt", SW_NORMAL);
Timer1->Enabled = false;

Timer事件中:
Memo1->Lines->LoadFromFile("a.txt");

可是它连Timer事件都不会发生,我试过用CreateProcess也是如此!

kingcaiyao 2002-04-05
  • 打赏
  • 举报
回复
不是,把它重定向到文件,而是直接写Memo
qiwei 2002-04-05
  • 打赏
  • 举报
回复
用定时器?你的意思是把它重定向到一个文件,然后利用定时器从文件中读数据吗,可以使用其它办法吗?
kingcaiyao 2002-04-05
  • 打赏
  • 举报
回复
你可以用定时器来实现你这个要求
kingcaiyao 2002-04-05
  • 打赏
  • 举报
回复
Thank you.I have recieved you e-mail,thank you!
qiwei 2002-04-05
  • 打赏
  • 举报
回复
To Kingcaiyao(AKing) :
我已经发E_mail给你了,不知收到没有!
kingcaiyao 2002-04-05
  • 打赏
  • 举报
回复
e-mail:chenbin790817@mail.china.com
kingcaiyao 2002-04-05
  • 打赏
  • 举报
回复
很对不起,我现在不能回答,你留下e-mail有消息我会通知你的,如果你有消息,你也通知我好不好?
加载更多回复(10)

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧