API获取窗口滚动条位置

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

以前都是找内存读取滚动条位置,后来遇到一个游戏客户端的滚动条内存基址怎么也找不到,做了很多努力都失败了,因为这个内存基址已经不属于程序领空。最后感觉这个滚动条应该是系统直接控制的, 和程序本身关系不大,所以直接调用系统的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,意思是所有信息


登录后方可回帖

登 录
信息栏
 私人小站

本站域名

ChengXu.XYZ

投诉联系:  popdes@126.com



快速上位机开发学习,本站主要记录了学习过程中遇到的问题和解决办法及上位机代码分享

这里主要专注于学习交流和经验分享.
纯私人站,当笔记本用的,学到哪写到哪.
如果侵权,联系 Popdes@126.com

友情链接
Aardio官方
Aardio资源网


才仁机械


网站地图SiteMap

Loading...