找回密码
 加入
搜索
查看: 1845|回复: 4

[AU3基础] 下面的代码为何得不到记事本滚动条信息?

  [复制链接]
发表于 2011-7-9 11:55:26 | 显示全部楼层 |阅读模式

#include <GUIConstants.au3>

Const $SB_VERT   = 1, $SIF_RANGE = 0x0001
Local $hWin, $hCtrl, $tInfo, $aResult

Run("Notepad")
Sleep(200)
$hWin = WinGetHandle("[CLASS:Notepad]")

For $i = 1 To 30
        ControlSend($hWin, "", "Edit1", @CRLF)
Next

$hCtrl = ControlGetHandle("[CLASS:Notepad]", "", "Edit1")

$tInfo = DllStructCreate("uint Size;uint Mask;int Min;int Max;uint Page;int Pos;int TrackPos")
$tInfo_Size = DllStructGetSize($tInfo)
$tInfo_Mask = $SIF_RANGE
$tInfo_Min = DllStructGetData($tInfo, 3)
$tInfo_Max = DllStructGetData($tInfo, 4)
$aResult = DllCall("User32.dll", "int", "GetScrollInfo", "hwnd", $hCtrl, "int", $SB_VERT, "ptr", DllStructGetPtr($tInfo))

if $aResult[0] = 0 then
  ConsoleWrite("GetScrollInfo Error" & @CR)
else
  ConsoleWrite("Size: " & $tInfo_Size & @CRLF)
  ConsoleWrite("Min : " & $tInfo_Min & @CRLF)
  ConsoleWrite("Max : " & $tInfo_Max & @CRLF)
endif
发表于 2011-7-9 12:43:17 | 显示全部楼层
$tInfo_Size = DllStructGetSize($tInfo)
$tInfo_Min = DllStructGetData($tInfo, 3)
$tInfo_Max = DllStructGetData($tInfo, 4)
你这三句获取的是什么值
 楼主| 发表于 2011-7-9 12:45:52 | 显示全部楼层
$tInfo_Size = DllStructGetSize($tInfo)
$tInfo_Min = DllStructGetData($tInfo, 3)
$tInfo_Max = DllSt ...
netegg 发表于 2011-7-9 12:43


前面有定义呀

其实这三个不重要,根本没有用到,主要是为什么DLLCall返回值中为什么$aResult[0] = 0老是零呀
发表于 2011-7-9 12:47:36 | 显示全部楼层
看下GetScollInfo函数的帮助吧,MSDN中有说明。
 楼主| 发表于 2011-7-9 13:29:00 | 显示全部楼层
搞定了。贴代码:

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <StructureConstants.au3>
#include <GUIScrollBars.au3>
#include <ScrollBarConstants.au3>
#include <Array.au3>

Run("Notepad")
Sleep(200)
$hWin = WinGetHandle("[CLASS:Notepad]")

For $i = 1 To 40
        ControlSend($hWin, "", "Edit1", @CRLF)
Next

$hCtrl = ControlGetHandle("[CLASS:Notepad]", "", "Edit1")



Local $tSCROLLINFO = DllStructCreate($tagSCROLLINFO)
DllStructSetData($tSCROLLINFO, "cbSize", DllStructGetSize($tSCROLLINFO))
DllStructSetData($tSCROLLINFO, "fMask", $SIF_RANGE)
$Size = DllStructGetData($tSCROLLINFO, 2)


MsgBox(0,0, $Size)

Func _GetScrollInfo($hWnd, $fnBar, ByRef $tSCROLLINFO)
        If Not IsHWnd($hWnd) Then Return SetError(-2, -1, False)
        Local $aResult = DllCall("user32.dll", "bool", "GetScrollInfo", "hwnd", $hWnd, "int", $fnBar, "ptr", DllStructGetPtr($tSCROLLINFO))
        If @error Then Return SetError(@error, @extended, False)
        Return $aResult[0]
EndFunc
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-14 14:10 , Processed in 0.076284 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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