vb6如何运行代码时不死机
比如我写这样一个程序,点击按钮打开百度之后、按钮变成灰色的请稍候。PrivateSubCommand1_Click()Command1.Caption="请稍候"Comm...
比如我写这样一个程序,点击按钮打开百度之后、按钮变成灰色的请稍候。
Private Sub Command1_Click()
Command1.Caption = "请稍候"
Command1.Enabled = False
Shell "C:\Progra~1\Intern~1\iexplore.exe http://zhidao.baidu.com/"
End Sub
但是在实际运行中,虽然我把请稍候写在了前面,但是点击按钮,程序还是会进入假死状态,按钮没有变成灰色的请稍候,直到IE浏览器窗口显示出来,程序才有反应。
这只是一个例子,帮忙理解我的问题的。
PS一个问题,会就答:
我的程序中用到一个INET部件,如何让这个源码在没有INET的精简版VB电脑上正常编辑?试过把MSINET.OCX文件复制到目标电脑的system32并注册,会报错(不复制提示缺少)
还有,客户电脑系统没有这个文件貌似也会报错啊,怎么办,现在考虑换成隐藏的webbrowser了,是不是效率会低啊。
这么说吧,我这么做是因为程序后台有个循环,循环会使程序假死,而前台用户又需要操作程序,这样后台的循环就影响前台的操作了,经常出现“没有响应”的状况。 展开
Private Sub Command1_Click()
Command1.Caption = "请稍候"
Command1.Enabled = False
Shell "C:\Progra~1\Intern~1\iexplore.exe http://zhidao.baidu.com/"
End Sub
但是在实际运行中,虽然我把请稍候写在了前面,但是点击按钮,程序还是会进入假死状态,按钮没有变成灰色的请稍候,直到IE浏览器窗口显示出来,程序才有反应。
这只是一个例子,帮忙理解我的问题的。
PS一个问题,会就答:
我的程序中用到一个INET部件,如何让这个源码在没有INET的精简版VB电脑上正常编辑?试过把MSINET.OCX文件复制到目标电脑的system32并注册,会报错(不复制提示缺少)
还有,客户电脑系统没有这个文件貌似也会报错啊,怎么办,现在考虑换成隐藏的webbrowser了,是不是效率会低啊。
这么说吧,我这么做是因为程序后台有个循环,循环会使程序假死,而前台用户又需要操作程序,这样后台的循环就影响前台的操作了,经常出现“没有响应”的状况。 展开
3个回答
展开全部
循环中插入doevents语句。如果是VB.net,要写成 application.doevents()。
Command1.Caption = "请稍候"
Command1.Enabled = False
这两句后也插入doevents语句。
还有shell语句好像有个 "等待" 什么的,就是要等到shell的那个程序关闭,shell后的语句才能继续。
看看shell的参数是否可以设置不要等待。
那个inet控件问题,精简版的VB就不知道怎么搞了。但是客户端的问题应该很简单,在你那个非精简版的VB上打包安装包给客户端安装就可以了
Command1.Caption = "请稍候"
Command1.Enabled = False
这两句后也插入doevents语句。
还有shell语句好像有个 "等待" 什么的,就是要等到shell的那个程序关闭,shell后的语句才能继续。
看看shell的参数是否可以设置不要等待。
那个inet控件问题,精简版的VB就不知道怎么搞了。但是客户端的问题应该很简单,在你那个非精简版的VB上打包安装包给客户端安装就可以了
追问
shell我试过了,只会在目标程序窗体创建前造成原程序死机。
我也学过一点vc,知道线程的概念,今天查了一些资料,说是vb默认单线程,遇到复杂运算甚至Msgbox就会挂起,我就考虑把后台循环放在第二线程里,正在研究呢。
INET控件的问题今天彻底测试了一遍,客户机没有INET的系统文件生成安装包也没用的,貌似还是缺少某些文件,我现在暂时用webbrowser呢。
追答
在shell语句前用doevent应该可以让按钮的状态正常表现出来吧?如果不行,启动个时钟控件,让时钟去shell试试。
多线程编程在VB上肯定离不开API函数,比较麻烦,VB.net好像就不用。
VB程序打包过程有个选择,可以把相关的dll文件全部选上,留意那个文件是否选上了。如果选上还不行,说明那个dll又去调用其他什么东西,那个东西VB无法帮你关联到。就像针对word或excel之类的com编程,如果客户不装word,你的VB打死也不可能把word一起打包去给客户端吧。所以,只能把inet的程序让客户安装了。
微测检测5.10
2023-05-10 广告
2023-05-10 广告
您好!建议咨 深圳市微测检测有限公司,已建立起十余个专业实验室,企业通过微测检测就可以获得一站式的测试与认 证解决方案;(EMC、RF、MFi、BQB、QI、USB、安全、锂电池、快充、汽车电子EMC、汽车手机互 联、语音通话质量),认证遇...
点击进入详情页
本回答由微测检测5.10提供
展开全部
在循环中插入DoEvents,比如:
For i = 0 To 10000
'......
DoEvents
'......
Next
For i = 0 To 10000
'......
DoEvents
'......
Next
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没有用的。
VB6是为单进程设计的,当遇到外部调用时就会将自身挂起,写什么代码都没用。
要想完美解决只能通过创建独立线程的方法,而VB6要操作多线程不但危险还麻烦。
VB6是为单进程设计的,当遇到外部调用时就会将自身挂起,写什么代码都没用。
要想完美解决只能通过创建独立线程的方法,而VB6要操作多线程不但危险还麻烦。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询