[已解决] 如何获取windows窗口下progress的百分比
本帖最后由 gapkiller 于 2013-3-25 16:08 编辑请问如何获取windows窗口下progress的百分比
没有找到相关函数...
请教一下. 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 回复 2# pusofalse
谢谢P大的回复, 不过好像理解有误, 我想得到的是别的程序窗口下的, 并非自己创建的GUI or Control, 所以GuiCtrl....可能行不通.. 不过你这个GUICtrlSendMsg确实相当牛逼...
盼复. 回复 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。 回复 4# pusofalse
正是这个, 测试了, pass!
多谢P大! 楼主做个有按钮执行就显示进度条然后有提示的,能个完整的更好
页:
[1]