改成这样就可以了
WinExec('cmd /c devcon resources =ports > pResourcetxt', SW_SHOWNORMAL);//不是两个>
sleep(1000);//不要少了这行,不然可能还没输出文档就执行下一条语句了
Memo1LinesLoadFromFile('pResourcetxt');
我说的获取cmd窗口的内容, 而不是网上说的那个通过管道输入cmd命令后得到返回信息,
只是监视cmd窗体,
比如:
用个时钟来监视cmd窗体, 自己直接在cmd窗体中输入命令后, 时钟会获取cmd窗体内容
目前想到的办法是 通过发送消息个cmd窗体的系统菜单中全选 复制 ,然后通过剪切板读取,
但是很不稳定 经常出现 can什么的错误, 也就是 剪切板错误
------解决方案--------------------
好像这个比较难,我记得好像需要“管道”什么东西,DOS时代的。
和windows常规方法还是不同的。
------解决方案--------------------
你监测别人的就不一样了,有不确定因素,比如别人开了几个窗口,用findwindow只能得到最前的
另外隐藏窗口调的cmd你也检测不到, 还有我觉得复制内容要设置光标吧
我想最好的办法还是hook,这样所有命令都会经过,或者就直接遍历系统进程,有cmd就注入一个dll,来截取内容。
------解决方案--------------------
如果cmd窗口的命令行xxxexe是你自己发的,可以让它同时生成到一个文本文件
xxxexe &>> c:\xxxout
------解决方案--------------------
这种需求,建议使用Tdoscommand
和plink一起使用,可以控制linux。。。。。。。
{Unit pas}
通过这个单元的Button 调用另一个实例
procedure TForm Button Click(Sender: TObject); begin ShellExecute(Handle open project exe HelloWorld nil SW_SHOWNORMAL); end;{Unit pas}
接受参数的实例
procedure TForm FormCreate(Sender: TObject); begin Edit Text := ParamStr( ); end; lishixinzhi/Article/program/Delphi/201311/24848
还是用CMD,CALL命令就可以。
比如,你要截获"C:\123bat"输出结果。
你就这样写
CALL "C:\123bat">C:\123运行结果txt
截获的信息就保存在“C:\123运行结果txt”文件里面了。
以上就是关于delphi 中如何把控制台 输出到界面里的Demo控件中全部的内容,包括:delphi 中如何把控制台 输出到界面里的Demo控件中、delphi 判断是否有 cmd 窗口、Delphi exe实例之间传递cmd参数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)