API获取窗口滚动条位置

By admin at 2017-12-10 • 0人收藏 • 635人看过

以前都是找内存读取滚动条位置,后来遇到一个游戏客户端的滚动条内存基址怎么也找不到,做了很多努力都失败了,因为这个内存基址已经不属于程序领空。最后感觉这个滚动条应该是系统直接控制的, 和程序本身关系不大,所以直接调用系统的API应该可以获得。本人小白, API了解的不多,网上查了查资料才会用这个API了,现在回想起来,以前真是走了很多弯路,能直接用API获取的数据,我居然那么多次都去找内存、找基址。好在这次老办法遇到困难,才知道了这个简单办法。

下面是AAU(AARDIO)中获取窗口滚动条位置的API用法:

GetScrollPos= User32.api(“GetScrollPos”,”int(int hWnd,int bar)”);

pos=GetScrollPos(hwnd,0);

第一个参数是窗口句柄,第二个参数是滚动条方向。0:横向 1:竖向


忘了转载自哪里了,emao?

1 个回复 | 最后更新于 2017-12-10
2017-12-10   #1

滚动条信息获取和设置

import console;
console.open();
//滚动条信息集
class INFO {
          INT cbSize = 28;
          INT fMask = 23;
          int min;
          int max;
          INT page;
          int pos;
          int trackPos;
    } 
var info = INFO();
//获取滚动条信息集合
 ::User32.GetScrollInfo(winform.listview.hwnd,0x1/*_SB_VERT*/,info )
console.dump(info);
//import win.ui.scrollbar;
//var scrollbar = win.ui.scrollbar(winform.listview.hwnd,true);
//scrollbar.ShowScrollBar(false);
//scrollbar.hide = true;
//::User32.ShowScrollBar(winform.listview.hwnd,0x1/*_SB_VERT*/,0)
//利用获取到的信息设置滚动条的最大最小和分页
scrollbar.setRange(1,info.max*60,info.page*60);



class INFO {
          INT cbSize = 28;
          INT fMask = 23;
          int min;
          int max;
          INT page;
          int pos;
          int trackPos;
 
    } 
var info = INFO();

以上代码中的cbsize = 28

为什么呢? 因为这个class里面有7个INT , 一个INT占4个字节,总共28个字节....

fmask这个呢?

这个是滚动条信息类,0x17就是23,意思是所有信息


登录后方可回帖

登 录
信息栏
本站永久域名:HtmLayout.Cn
纯私人站,当笔记本用的,学到哪写到哪,目前在学aardio+halcon机器视觉.
Htmlayout界面在线学习文档
Sciter中文在线文档Sciter在线学习文档
本 站 主 站:Stm32cube中文网
Aardio 官方站:Aardio官方
Aardio最新功能:Aardio官方更新日志
aardio在线手册Aardio在线手册
C大Aardio论坛:Aar爱好者论坛
简码教程网:简码编程
AARDIO语言QQ群:70517368
赞助商:才仁机械
下载站:非凡软件站
Loading...