
vb 获取资源文件内资源的大小
2楼的这位兄弟,为了以防万一我做了个测试的程序,我把IE8加入资源,做测试,但是一单击开始释放,整个程序成假死状态,进度条也是不互动的,标题栏显示XXXXX(没有响应)字...
2楼的这位兄弟,为了以防万一我做了个测试的程序,我把IE8加入资源,做测试,但是一单击开始释放,整个程序成假死状态,进度条也是不互动的,标题栏显示XXXXX(没有响应)字样,但是文件始终还是在释放的,这个是怎么回事???
要怎么办??? 展开
要怎么办??? 展开
2个回答
展开全部
释放的进度?我猜是写文件的进度吧。
Dim TotalLen As Long
Dim Cont() As Byte
Cont=LoadResData(101,"CUSTOM")
TotalLen=UBound(Cont())
Open FILENAME For Binary As #1
Dim Counter As Long
For Counter=1 To TotalLen
Put #1,Cont(Counter)
ProgressBar1.Value=ProgressBar1.Min+(ProgressBar1.Max-ProgressBar.Min+1)*Counter/TotalLen
Next Counter
Close #1
ProgressBar1.Value=ProgressBar1.Max '为了纠正一些错误,比如99.99%而显示不满,直接设成最大值
修改之后:
Option Explicit
Private Sub Command1_Click()
Dim TotalLen As Long
Dim Cont() As Byte
Cont = LoadResData(101, "CUSTOM")
TotalLen = UBound(Cont())
Open App.Path & "\AITOOL.DLL" For Binary As #1
Dim Counter As Long
Dim Prg As Single
For Counter = 1 To TotalLen
Put #1, , Cont(Counter)
Prg = ProgressBar1.Min + Format((ProgressBar1.Max - ProgressBar1.Min) * Counter / TotalLen, "0.0")
If ProgressBar1.Value <> Prg Then ProgressBar1.Value = Prg
DoEvents
Next Counter
Close #1
ProgressBar1.Value = ProgressBar1.Max
End Sub
这段代码有效地防止了闪屏(进度条狂闪)和无响应问题(DoEvents 语句),个人测试 AITOOL.DLL(112 KB)无问题。
不过注意,复制之后的文件似乎缺失了一些信息……复制一个 EXE 文件就知道了。记住要用 CMD 调用。
Dim TotalLen As Long
Dim Cont() As Byte
Cont=LoadResData(101,"CUSTOM")
TotalLen=UBound(Cont())
Open FILENAME For Binary As #1
Dim Counter As Long
For Counter=1 To TotalLen
Put #1,Cont(Counter)
ProgressBar1.Value=ProgressBar1.Min+(ProgressBar1.Max-ProgressBar.Min+1)*Counter/TotalLen
Next Counter
Close #1
ProgressBar1.Value=ProgressBar1.Max '为了纠正一些错误,比如99.99%而显示不满,直接设成最大值
修改之后:
Option Explicit
Private Sub Command1_Click()
Dim TotalLen As Long
Dim Cont() As Byte
Cont = LoadResData(101, "CUSTOM")
TotalLen = UBound(Cont())
Open App.Path & "\AITOOL.DLL" For Binary As #1
Dim Counter As Long
Dim Prg As Single
For Counter = 1 To TotalLen
Put #1, , Cont(Counter)
Prg = ProgressBar1.Min + Format((ProgressBar1.Max - ProgressBar1.Min) * Counter / TotalLen, "0.0")
If ProgressBar1.Value <> Prg Then ProgressBar1.Value = Prg
DoEvents
Next Counter
Close #1
ProgressBar1.Value = ProgressBar1.Max
End Sub
这段代码有效地防止了闪屏(进度条狂闪)和无响应问题(DoEvents 语句),个人测试 AITOOL.DLL(112 KB)无问题。
不过注意,复制之后的文件似乎缺失了一些信息……复制一个 EXE 文件就知道了。记住要用 CMD 调用。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询