| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 950 人关注过本帖
标题:求教VB的控制台程式执行时显示进度条?
只看楼主 加入收藏
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1820
专家分:3681
注 册:2011-3-24
结帖率:97.66%
收藏
 问题点数:0 回复次数:9 
求教VB的控制台程式执行时显示进度条?
VB的控制台程式执行时的Dos视窗,如何做出像VC执行时显示进度条?如图...
图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: 控制台 如何 
2015-03-18 09:55
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
这个真不会,以前Qbasic时,有定位命令,

VB6,你输出退格键试试。

授人于鱼,不如授人于渔
早已停用QQ了
2015-03-18 21:37
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1820
专家分:3681
注 册:2011-3-24
收藏
得分:0 
以前有人教過用VC做這個,所以反過來想,如果把VC用的指令拿到VB來當API去搞,也許。。。
不過據我問人的結果,前幾行好搞,就用VB產生BAT檔,並去執行它就行了。有echo on
但是進度條就比較麻煩了,雖說可以用API取取得視窗句柄,但是要在定點重複寫字,就不會了,
用SHELL COMMAND也是會返回視窗句柄。

網路上是回說是能做但是很麻煩,還不如改用別種語言來做。

不要選我當版主
2015-03-18 21:55
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
c下如此(一种模拟状态)  vb下还没弄过控制台

程序代码:
#include <stdio.h>
#include <windows.h>

int main(void)
{ 
    int i,j;
    for(i=1;i<=100;i++)
    {
        printf("当前运行了%6.2lf%% .",(double)i/100.0*100);
        for(j=0;j<20;j++) printf("\b");
        Sleep(200);
    }
    printf("\n");
    return 0;

}

DO IT YOURSELF !
2015-03-19 08:30
lianyicq
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:26
帖 子:737
专家分:3488
注 册:2013-1-26
收藏
得分:0 
看看这个http://visualbasic.有没有帮助.
收到的鲜花
  • wube2015-03-19 15:16 送鲜花  10朵   附言:我连要找都不知道要用什么关键字去找

大开眼界
2015-03-19 15:10
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1820
专家分:3681
注 册:2011-3-24
收藏
得分:0 
以下是引用lianyicq在2015-3-19 15:10:16的发言:

看看这个http://visualbasic.有没有帮助.


感觉有戏....等我把C调试完再来试试看...

不要選我當版主
2015-03-19 15:15
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1820
专家分:3681
注 册:2011-3-24
收藏
得分:0 
先跟着范例做,基本上可以做出来,但是要进度条那功能,就还要再研究研究.

不要選我當版主
2015-03-19 16:08
lianyicq
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:26
帖 子:737
专家分:3488
注 册:2013-1-26
收藏
得分:0 
只要知道如何对窗口输入输出就好办了,进度条试试
...
ConsolePrint 后面跟字符串,得到的进度百分比要转换为字符。另外还有一个光标位置问题,只能在固定位置显示百分比,只有把百分比格式化为固定位数,下次显示前用退格字符清掉。

[ 本帖最后由 lianyicq 于 2015-3-19 16:29 编辑 ]

大开眼界
2015-03-19 16:14
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1820
专家分:3681
注 册:2011-3-24
收藏
得分:0 
这有中文的资料...
http://shikhsnu.

偷懒做出来,但是数字部分还是要想怎退格.
图片附件: 游客没有浏览图片的权限,请 登录注册

不要選我當版主
2015-03-19 19:13
wxyu247
Rank: 2
等 级:论坛游民
帖 子:4
专家分:10
注 册:2015-1-23
收藏
得分:0 
程序代码:
Option Explicit

Const STD_INPUT_HANDLE = -10&
Const STD_OUTPUT_HANDLE = -11&
Const STD_ERROR_HANDLE = -12&

Private Declare Function AllocConsole Lib "kernel32" () As Long
Private Declare Function FreeConsole Lib "kernel32" () As Long
Private Declare Function GetStdHandle Lib "kernel32" (ByVal nStdHandle As Long) As Long
Private Declare Function WriteConsole Lib "kernel32" Alias "WriteConsoleW" (ByVal hConsoleOutput As Long, ByVal lpBuffer As Long, ByVal nNumberOfCharsToWrite As Long, ByVal lpNumberOfCharsWritten As Long, ByVal lpReserved As Long) As Long
Private Declare Function ReadConsole Lib "kernel32" Alias "ReadConsoleW" (ByVal hConsoleInput As Long, ByVal lpBufferas As Long, ByVal nNumberOfCharsToRead As Long, lpNumberOfCharsRead As Long, ByVal pInputControl As Long) As Long
Private Declare Function FlushFileBuffers Lib "kernel32" (ByVal hFile As Long) As Long

Dim hin As Long
Dim hout As Long
Dim herr As Long

Sub Cout(s As String)
    WriteConsole hout, StrPtr(s), Len(s), 0, 0
End Sub

Function Cin() As String
Dim buf As String
Dim n As Long
Dim f As Long
    buf = Space(1024)
    f = ReadConsole(hin, StrPtr(buf), 1024, n, 0)
    Cin = Left(buf, n)
End Function

Private Sub Command1_Click()
Dim s As String
Dim n As Long
    Cout "请输入定时器速度,单位毫秒:"
    FlushFileBuffers hin
    s = Cin
    Cout s
    Timer1.Interval = CInt(s)
    Timer1.Enabled = True
End Sub

Private Sub Form_Load()
    AllocConsole
    hin = GetStdHandle(STD_INPUT_HANDLE)
    hout = GetStdHandle(STD_OUTPUT_HANDLE)
    herr = GetStdHandle(STD_ERROR_HANDLE)
End Sub

Private Sub Form_Unload(Cancel As Integer)
    FreeConsole
End Sub

Private Sub Timer1_Timer()
Static n As Long
    n = n + 1
    Cout vbCr & "进度:" & n & "%  "
    If n >= 100 Then
        Timer1.Enabled = False
        n = 0
    End If
End Sub

2015-03-21 20:10
快速回复:求教VB的控制台程式执行时显示进度条?
数据加载中...
 
   



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

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