编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛  
全能 ASP / PHP / ASP.NET 主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
发新话题
打印

请问:VB调用C写的.exe程序时,如何显示.exe运行进度?

请问:VB调用C写的.exe程序时,如何显示.exe运行进度?

最近正在编写利用VB调用.exe的程序,来实现一个小软件,但我的VB调用C的可执行文件时,在点击VB的按钮之后,C语言的执行程序总是出现了DOS窗口后,然后一闪而过,运行完后,自动就关闭了,现在我想在C程序运行完之后,不关闭,而是等用户按完任意键之后,再关闭,请问如何实现?
我有一个别人编好的实现过程,VB调用程序运行完之后,出现如“附件截图”的窗口,我的目标就是要现实这个过程!
截图见附件!

[ 本帖最后由 fantasy_spz 于 2008-7-17 08:45 编辑 ]
附件: 只有本站会员才能下载或查看附件,请您 登录注册

TOP

我不会用C的函数,但可以告诉你一定思路。

就是在C程序结束处(即“}”前)加上一个读取任意字符的语句,类似于QBasic里的"A$=Inkey$()"(好像是这个,很久没用QB,快忘了)

这样,C写的程序运行后会定格在最后的画面,你输入按下任意键就关闭C写的程序。

[ 本帖最后由 cbean 于 2008-7-17 14:59 编辑 ]

TOP

谢谢楼上,这是一个好主意,可以一用,如果没有其它办法,这个可以用上,但是我还想知道,怎么用VB实现的这个功能,因为我亲眼看见有人利用VB可以做到不关闭运行完的C程序的,呵呵!
还是很感激楼上!

TOP

一 你确定原来那个c程序是会关闭的而用vb开后不关闭了?

二 可以考虑在C程序里用SendMessage发送消息到VB程序窗体。
个人Blog http://www.multiple1902.cn
个人网站 http://www.tcdongli.com
天才动力程序设计视频 http://www.tcdonglirecords.cn [under construction]

TOP

在程序结束处加上“system("pause");”即可
十里平湖霜满天,寸寸青丝愁华年,对月形单望相互,只羡鸳鸯不羡仙.

TOP

感谢楼上的指点!!!
但是“楼上”是指在C中修改的代码,而我遇到的情况是,我的C程序本来就是运行之后,自动就会关闭的,然而我用C生成的.exe文件,在被VB的界面调用之后,就可以在执行后,处于等待状态,换个意思就是说,一定是在VB代码中填加了什么语句,使我的可执行文件,由原来的运行完自动关闭转变为运行完处于等待状态,请高人指点,谢过!

TOP

用管道技术吧!~
创建管道,得到STDIO句柄,打开程序,读取流的数据。

TOP

请问哪里能找到有关楼上提到的内容的参考书,推荐一下,楼上说的,小弟才疏学浅,搞得不太懂,谢过!

TOP

试试转用cmd /k 调用该程序
滚滚红尘中的白痴..........

TOP

让他关掉吧!

你主要是在运行时把它的输出流读出来就行了!
还有就是不要把 Console 程序总是说成 C 程序!
C可以写 Console程序 也能写 Windows 程序!

使用 WScript.Shell 对象运行你所说的C程序之后,就可以用 StdOut 在读取他的输出流内容,StdIn 输入流, StdErr 错误流!

下面是个例子

Set WshShell = CreateObject("WScript.Shell")
Set oExec    = WshShell.Exec("test.bat")
input = ""

Do While True

     If Not oExec.StdOut.AtEndOfStream Then
          input = input & oExec.StdOut.Read(1)
          If InStr(input, "Press any key") <> 0 Then Exit Do
     End If
     WScript.Sleep 100
Loop

oExec.StdIn.Write VbCrLf

Do While oExec.Status <> 1
     WScript.Sleep 100
Loop

TOP

发新话题