标题:请问:VB调用C写的.exe程序时,如何显示.exe运行进度?
只看楼主
fantasy_spz
Rank: 1
等 级:新手上路
帖 子:55
专家分:0
注 册:2006-8-21
结帖率:0
 问题点数:0 回复次数:9 
请问:VB调用C写的.exe程序时,如何显示.exe运行进度?
最近正在编写利用VB调用.exe的程序,来实现一个小软件,但我的VB调用C的可执行文件时,在点击VB的按钮之后,C语言的执行程序总是出现了DOS窗口后,然后一闪而过,运行完后,自动就关闭了,现在我想在C程序运行完之后,不关闭,而是等用户按完任意键之后,再关闭,请问如何实现?
我有一个别人编好的实现过程,VB调用程序运行完之后,出现如“附件截图”的窗口,我的目标就是要现实这个过程!
截图见附件!

[[it] 本帖最后由 fantasy_spz 于 2008-7-17 08:45 编辑 [/it]]

1.rar (8.86 KB)
搜索更多相关主题的帖子: exe 进度 运行 
2008-07-17 08:44
cbean
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2008-7-11
得分:0 
我不会用C的函数,但可以告诉你一定思路。

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

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

[[it] 本帖最后由 cbean 于 2008-7-17 14:59 编辑 [/it]]
2008-07-17 14:58
fantasy_spz
Rank: 1
等 级:新手上路
帖 子:55
专家分:0
注 册:2006-8-21
得分:0 
谢谢楼上,这是一个好主意,可以一用,如果没有其它办法,这个可以用上,但是我还想知道,怎么用VB实现的这个功能,因为我亲眼看见有人利用VB可以做到不关闭运行完的C程序的,呵呵!
还是很感激楼上!
2008-07-17 15:25
multiple1902
Rank: 8Rank: 8
等 级:贵宾
威 望:42
帖 子:4881
专家分:671
注 册:2007-2-9
得分:0 
一 你确定原来那个c程序是会关闭的而用vb开后不关闭了?

二 可以考虑在C程序里用SendMessage发送消息到VB程序窗体。
2008-07-17 17:34
水中无月
Rank: 1
等 级:新手上路
帖 子:190
专家分:9
注 册:2008-6-17
得分:0 
在程序结束处加上“system("pause");”即可

十里平湖霜满天,寸寸青丝愁华年,对月形单望相互,只羡鸳鸯不羡仙.
2008-07-17 19:43
fantasy_spz
Rank: 1
等 级:新手上路
帖 子:55
专家分:0
注 册:2006-8-21
得分:0 
感谢楼上的指点!!!
但是“楼上”是指在C中修改的代码,而我遇到的情况是,我的C程序本来就是运行之后,自动就会关闭的,然而我用C生成的.exe文件,在被VB的界面调用之后,就可以在执行后,处于等待状态,换个意思就是说,一定是在VB代码中填加了什么语句,使我的可执行文件,由原来的运行完自动关闭转变为运行完处于等待状态,请高人指点,谢过!
2008-07-23 10:17
bccnvip
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-7-12
得分:0 
用管道技术吧!~
创建管道,得到STDIO句柄,打开程序,读取流的数据。
2008-07-23 22:35
fantasy_spz
Rank: 1
等 级:新手上路
帖 子:55
专家分:0
注 册:2006-8-21
得分:0 
请问哪里能找到有关楼上提到的内容的参考书,推荐一下,楼上说的,小弟才疏学浅,搞得不太懂,谢过!
2008-09-10 08:43
三断笛
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:31
帖 子:1621
专家分:1617
注 册:2007-5-24
得分:0 
试试转用cmd /k 调用该程序
2008-09-10 12:54
BlueMouse
Rank: 1
来 自:贵州
等 级:新手上路
威 望:1
帖 子:52
专家分:0
注 册:2008-9-6
得分:0 
让他关掉吧!

你主要是在运行时把它的输出流读出来就行了!
还有就是不要把 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
2008-09-10 13:50



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-224129-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.121617 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved