vb 检测鼠标是否按下,如果按下则停止程序

[复制链接]
查看11 | 回复10 | 2011-6-17 06:30:56 | 显示全部楼层 |阅读模式
VB检测鼠标是否按下,如果按下则停止程序
这个程序是从文件读数据,文件中有1900000个数据,然后读125个发数据并画图。
Foriu=0To1900000Step3
X=X1
C1=X/125
IfC1=Int(C1)Then\'取所要取得的字节的倍数。
Forxx=0To24
DispData=b2(xx)
CallAdVance
Nextxx
CallSenddata
Forxx=25To124
DispData=b2(xx)
CallAdVance
Nextxx
《\'Call检测鼠标是否按下,如果按下则停止程序。》
EndIf
Nextiu
现在是程序一直跑直到文件读完,中间想操作让她停下来,无法操作。
就是鼠标在程序上操作不了,查了下资料说用Hook.DLL可以解决,但是不会用。不知道怎么样把《\'Call检测鼠标是否按下,如果按下则停止程序。》写出来.
高手们指点.
回复

使用道具 举报

千问 | 2011-6-17 06:30:56 | 显示全部楼层
可以在你需要的地方加入doevent,以将控制权交还用户,此时可以响应mousedown,或点击“停止按钮”









<h4class=\"ask\">追问


能给点代码提示不?不会用那个doevent,在网上找的doevent,用在程序里边不起作用。
回复

使用道具 举报

千问 | 2011-6-17 06:30:56 | 显示全部楼层
复制粘贴vb的帮助给你吧,代码我验证过了!

使用DoEvents

尽管Timer事件是后台处理的最好工具,对耗时极多的任务,情况更是如此,但是,DoEvents函数还是提供了一种取消任务的简便方法。例如,下列代码将显示一个\"Process\"按钮,单击这个按钮时,它将变成\"Cancel\"按钮。再次单击按钮又将中断正在执行的任务。

\'此按钮最初的标题是\"Process\"。
PrivateSubCommand1_Click()
\'过程的所有实例都
\'共享静态变量。
StaticblnProcessingAsBoolean
DimlngCtAsLong
DimintYieldCtAsInteger
DimdblDummyAsDouble
\'按下按钮时,检测是否
\'已经在处理。
IfblnProcessingThen
\'如果正在处理,则取消处理。
blnProcessing=False
Else
Command1.Caption=\"Cancel\"
blnProcessing=True
lngCt=0
\'执行一百万次浮点
\'乘法计算。每一千次后,
\'检测是否要取消。
DoWhileblnProcessingAnd(lngCt100000000)
ForintYieldCt=1To1000
lngCt=lngCt1
dblDummy=lngCt*3.14159
NextintYieldCt
\'DoEvents语句允许其它事件
\'发生,包括第二次
\'按此按钮。
DoEvents
Loop
blnProcessing=False
Command1.Caption=\"Process\"
MsgBoxlngCtdefds123\"multiplicationswereperformed\"
EndIf
EndSub
回复

使用道具 举报

千问 | 2011-6-17 06:30:56 | 显示全部楼层
哈哈,终于搞出来了。太感谢了。改了改就用DoEvents
能控制到鼠标了哈
回复

使用道具 举报

千问 | 2011-6-17 06:30:56 | 显示全部楼层
多少银子?QQ:519811010.郁闷真不知道怎么整了.
回复

使用道具 举报

千问 | 2011-6-17 06:30:56 | 显示全部楼层
可怜的人,我给你说个API函数,想你会用这些吧,
GetAsyncKeyState
用它可以取得键盘和鼠标的按键情况,好好用吧,超有用的,
我的QQ390539311
不过你要说明你是什么人,为什么加我,不然会被踢的,而且我不一定有时间帮你噢,哈哈
回复

使用道具 举报

千问 | 2011-6-17 06:30:56 | 显示全部楼层
啥时候从牛C升级的牛B了..
回复

使用道具 举报

千问 | 2011-6-17 06:30:56 | 显示全部楼层
VB多线程?哈哈哈,好难实现啊,要多线程调试时可以通过,编译后你就会哭,
DoEvents函数,你的电脑够快就不会有引响,若是老P4,你会发现他的存在有多明显。
GetAsyncKeyState还是至尊,不信就算了
回复

使用道具 举报

千问 | 2011-6-17 06:30:56 | 显示全部楼层
程序一直在运行,控件的mousedown事件根本不起作用。
回复

使用道具 举报

千问 | 2011-6-17 06:30:56 | 显示全部楼层
在循环当中,加上对系统消息的判断即可。实际上一个Doevent就可以了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行