找回密码
 加入
搜索
查看: 2441|回复: 5

[AU3基础] [已解决] 如何获取windows窗口下progress的百分比

  [复制链接]
发表于 2013-3-25 12:09:32 | 显示全部楼层 |阅读模式
本帖最后由 gapkiller 于 2013-3-25 16:08 编辑

请问如何获取windows窗口下progress的百分比
没有找到相关函数...
请教一下.
发表于 2013-3-25 13:30:25 | 显示全部楼层
Const $PBM_GETPOS = 0x408

Local $hGUI = GUICreate("test", 400, 300)

GUICtrlCreateProgress(20, 40, 360, 20)
GUICtrlSetData(-1, 77)

GUISetState()

MsgBox(0, "Progress percent", GUICtrlSendMsg(-1, $PBM_GETPOS, 0, 0))

While GUIGetMsg() + 3
WEnd
 楼主| 发表于 2013-3-25 14:32:00 | 显示全部楼层
回复 2# pusofalse


    谢谢P大的回复, 不过好像理解有误, 我想得到的是别的程序窗口下的, 并非自己创建的GUI or Control, 所以GuiCtrl....可能行不通.. 不过你这个GUICtrlSendMsg确实相当牛逼...
    盼复.
发表于 2013-3-25 15:01:25 | 显示全部楼层
回复 3# gapkiller


    原来如此,刚发完2#的回复,我就想到可能会是第三方窗口创建的。假若那是一个标准的Progress控件,同样可以通过发送PBM_GETPOS消息获取其百分比,只是须调用SendMessage函数。

1.au3
Const $PBM_SETRANGE = 0x401

GUICreate("Progress test", 400, 300)
GUICtrlCreateProgress(20, 40, 360, 20)
GUICtrlSetData(-1, 100)

; 设置最大进度值为300。
GUICtrlSendMsg(-1, $PBM_SETRANGE, 0, 0x10000 * 300 + 0)

GUISetState()
While GUIGetMsg() + 3
WEnd


2.au3
#include <SendMessage.au3>

Const $PBM_GETRANGE = 0x407
Const $PBM_GETPOS = 0x408

; 获取进度条控件的句柄。
Local $hProgress = ControlGetHandle("Progress test", "", "msctls_progress321")

; 获取进度条当前位置。
Local $iPosition = _SendMessage($hProgress, $PBM_GETPOS, 0, 0, 0, "long", "long", "long")

; 获取最大进度值。
Local $iRange = _SendMessage($hProgress, $PBM_GETRANGE, 0, 0, 0, "long", "long", "long")

; 百分比。
Local $iPercent = $iPosition / $iRange * 100

MsgBox(0, "Current percent", StringFormat("%.2f%%", $iPercent))


先运行1.au3。

评分

参与人数 1金钱 +60 收起 理由
gapkiller + 60

查看全部评分

 楼主| 发表于 2013-3-25 16:05:41 | 显示全部楼层
回复 4# pusofalse


    正是这个, 测试了, pass!
    多谢P大!
发表于 2013-5-1 13:30:48 | 显示全部楼层
楼主做个有按钮执行就显示进度条然后有提示的,能个完整的更好
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-17 01:33 , Processed in 0.088227 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表