vb.net WIN32API 获取listview的值
开发者技术变现资源聚集地
https://www.baiydu.com
Public Class Form1
Public Const LVM_FIRST As Short = &H1000S
Public Const LVM_GETITEMCOUNT As Integer = (LVM_FIRST + 4)
Public Const LVM_GETITEM As Integer = (LVM_FIRST + 5)
Public Const LVM_GETSTRINGWIDTH As Integer = (LVM_FIRST + 17)
Public Const LVM_GETCOLUMN As Integer = (LVM_FIRST + 25)
Public Const LVM_GETITEMTEXT As Integer = (LVM_FIRST + 45)
Public Const LVM_GETHEADER As Integer = LVM_FIRST + 31
Public Const WC_HEADERA As String = "SysHeader32"
Public Const WC_HEADER As String = WC_HEADERA
Public Const HDM_FIRST As Short = &H1200S '// Header messages
Public Const HDM_GETITEMCOUNT As Integer = (HDM_FIRST + 0)
Public Const HDM_ORDERTOINDEX As Integer = (HDM_FIRST + 15)
Public Const PROCESS_QUERY_INFORMATION As Short = 1024
Public Const PROCESS_VM_OPERATION As Short = &H8S
Public Const PROCESS_VM_READ As Short = &H10S
Public Const PROCESS_VM_WRITE As Short = &H20S
Public Const STANDARD_RIGHTS_REQUIRED As Integer = &HF0000
Public Const MAX_LVMSTRING As Integer = 255 '可根椐读取数据长度设置适当的数值
Public Const MEM_COMMIT As Short = &H1000S
Public Const MEM_RELEASE As Short = &H8000S
Public Const PAGE_READWRITE As Short = &H4S
Public Const LVIF_TEXT As Integer = &H1S
Public Structure LV_ITEMA
Dim mask As Integer
Dim iItem As Integer
Dim iSubItem As Integer
Dim state As Integer
Dim stateMask As Integer
Dim pszText As Integer
Dim cchTextMax As Integer
Dim iImage As Integer
Dim lParam As Integer
Dim iIndent As Integer
End Structure Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Integer, ByVal bInheritHandle As Integer, ByVal dwProcId As Integer) As Integer
Private Declare Function VirtualAllocEx Lib "kernel32" (ByVal hProcess As Integer, ByVal lpAddress As Integer, ByVal dwSize As Integer, ByVal flAllocationType As Integer, ByVal flProtect As Integer) As Integer
Private Declare Function VirtualFreeEx Lib "kernel32" (ByVal hProcess As Integer, ByVal lpAddress As Integer, ByVal dwSize As Integer, ByVal dwFreeType As Integer) As Integer Private Declare Function WriteProcessMemory Lib "kernel32" (ByVal hProcess As Integer, ByVal lpBaseAddress As Integer, ByRef lpBuffer As LV_ITEMA, ByVal nSize As Integer, ByVal lpNumberOfBytesWritten As Integer) As Integer Private Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Integer, ByVal lpBaseAddress As Object, ByRef lpBuffer As Object, ByVal nSize As Integer, ByVal lpNumberOfBytesWritten As Integer) As Integer Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Integer) As Integer
Private Declare Function GetCurrentProcessId Lib "kernel32" () As Integer
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Integer
Public Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Integer, ByVal hWnd2 As Integer, ByVal lpsz1 As String, ByVal lpsz2 As String) As Integer
Public Declare Function GetWindowThreadProcessId Lib "user32" Alias "GetWindowThreadProcessId" (ByVal hwnd As Integer, ByRef lpdwProcessId As Integer) As Integer Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim lngHwnd As Integer
Dim lngHwnd0 As Integer
Dim lngHwnd1 As Integer
Dim lngHeaderHwnd As Integer
Dim lngPId As Integer
Dim lngRows As Integer
Dim lngCols As Integer
Dim lngRow As Integer
Dim lngCol As Integer
Dim strItem As String lngHwnd = FindWindow("#32770", "Windows 任务管理器")
lngHwnd0 = FindWindowEx(lngHwnd, 0, "#32770", "Applications") '获取任务管理器窗口句柄 lngHwnd1 = FindWindowEx(lngHwnd0, 0, "SysListView32", "任务") '获取进程列表框句柄 'lngHwnd0 = FindWindowEx(lngHwnd, 0, "WTWindow", "巅峰批量卡iPhone新版 V1.8")
'lngHwnd1 = FindWindowEx(lngHwnd0, 0, "SysListView32", "")
'第二个参数是 LVM_GETHEADER,获得LISTVIEW的HEADER句柄
lngHeaderHwnd = SendMessage(lngHwnd1, LVM_GETHEADER, 0, 0) lngRows = SendMessage(lngHwnd1, LVM_GETITEMCOUNT, 0, 0) '获取ListView项目数
Debug.Print("总行数是:" & lngRows) If lngHeaderHwnd > 0 Then
lngCols = SendMessage(lngHeaderHwnd, HDM_GETITEMCOUNT, 0, 0) '获取ListView表头项目数
Debug.Print("总列数是:" & lngCols) Else
lngCols = 1
End If GetWindowThreadProcessId(lngHwnd, lngPId) '获取与指定窗口关联在一起的一个进程和线程标识符ID Dim count As Integer Dim strBuffer() As Byte, pHandle As Integer, myItem() As LV_ITEMA, i As Integer, j As Integer
Dim pStrBufferMemory As Integer, pMyItemMemory As Integer, result As Integer, tmpString As String
Dim strLength As Integer ReDim strBuffer(MAX_LVMSTRING) pHandle = OpenProcess(PROCESS_VM_OPERATION Or PROCESS_VM_READ Or PROCESS_VM_WRITE, False, lngPId) ReDim myItem(lngCols) For i = 0 To lngRows - 1
For j = 0 To lngCols
pStrBufferMemory = VirtualAllocEx(pHandle, 0, MAX_LVMSTRING, MEM_COMMIT, PAGE_READWRITE)
myItem(j).mask = LVIF_TEXT
myItem(j).iSubItem = j
myItem(j).pszText = pStrBufferMemory
myItem(j).cchTextMax = MAX_LVMSTRING
pMyItemMemory = VirtualAllocEx(pHandle, 0, Len(myItem(j)), MEM_COMMIT, PAGE_READWRITE)
result = WriteProcessMemory(pHandle, pMyItemMemory, myItem(j), Len(myItem(j)), 0&) strLength = SendMessage(lngHwnd1, LVM_GETITEMTEXT, i, pMyItemMemory)
If result = 0 Then
result = VirtualFreeEx(pHandle, pStrBufferMemory, 0, MEM_RELEASE)
result = VirtualFreeEx(pHandle, pMyItemMemory, 0, MEM_RELEASE)
Exit For
End If
result = ReadProcessMemory(pHandle, pStrBufferMemory, strBuffer(0), MAX_LVMSTRING, 0)
result = ReadProcessMemory(pHandle, pMyItemMemory, myItem(j), Len(myItem(j)), 0)
tmpString = StrConv(System.Text.Encoding.Default.GetString(strBuffer), 0) result = VirtualFreeEx(pHandle, pStrBufferMemory, 0, MEM_RELEASE)
result = VirtualFreeEx(pHandle, pMyItemMemory, 0, MEM_RELEASE) Next Next result = CloseHandle(pHandle) End Sub End Class
vb.net WIN32API 获取listview的值的更多相关文章
- 如何获取listview里面的edittext或者RadioGroup的值,涉及到引发的混乱现象
最近要实现从数据库读数据,该数据对应listview的item布局里面的RadioButton值,并且item布局里面还有EditText的控件. 如何将每一条对应的listview对应值获取出来呢? ...
- c# winform 获取listview 选中行某列的值
给listview填充数据: for (int i = 0; i < 5; i++) { ListViewItem lvitem = new ListViewItem(); lvitem.Sub ...
- WPF 获取 ListView DataTemplate 中控件值
原文:WPF 获取 ListView DataTemplate 中控件值 版权声明:本文为博主原创文章,未经博主允许可以随意转载 https://blog.csdn.net/songqingwei19 ...
- UWP 双向绑定,在ListView中有个TextBox,怎么获取Text的值
要求:评论宝贝的时候一个订单里面包含多个产品,获取对产品的评论内容哦 1. xaml界面 <ListView x:Name="lvDetail"> <ListVi ...
- grails项目获取前后台的值
grails项目中前台传值给后台: 加入我有a.gsp这个页面,a.gsp中有如下代码: 姓名:<input type="text" name="xing" ...
- C#获取存储过程返回值和输出参数值的方法
//转自网络,先留个底 1.获取Return返回值 //存储过程 //Create PROCEDURE MYSQL // @a int, // @b int //AS // return @a + @ ...
- 在java中获取attr的值
首先说如何获取已经在style里面定义好的attr的值,以colorPrimary为例: TypedValue value = new TypedValue(); mContext.getTheme( ...
- Python从线程获取函数返回值
Python中利用强大的threading模块可以很容易的实现多线程开发,提高运行速度.这一般是对某个进行大量计算操作的的函数进行多线程处理,然后合并各线程的结果.获取函数返回值的方法可以如下: 1) ...
- RadGrid使用技巧:从RadGrid获取绑定的值
本文主要介绍从RadGrid获取绑定的值,仅适用于Telerik RadControls for asp.net ajax. 获取方式 RadGrid把绑定的值存储在VIewState中,即使View ...
随机推荐
- docker使用flannel网络
基础环境我们使用了两台centos 7系统 基础配置为: 两台机器IP为 172.17.3.10 172.17.3.62 hosts文件配置为 172.17.3.10 node1 172.17.3.6 ...
- CPU二则
CPU二则 CPU二则 aligned load & unaligned load non-temporal store(streaming store) 参考文献 aligned load ...
- 吴裕雄 python 数据可视化
import pandas as pd df = pd.read_csv("F:\\python3_pachongAndDatareduce\\data\\pandas data\\taob ...
- ES6你不知道的let关键字及变量的提升
一.JavaScript变量创建到访问赋值的过程 创建 create/declare 初始化 initialize 赋值 assign 1.函数的提升 // 函数这种变量声明,首先会创建变量,再初始化 ...
- 使用autohotkey修改方向键、回车和启动程序
具体步骤 下载并安装autohotkey. 在你觉得合适的地方鼠标右键-新建-autohotkey script(脚本):或者创建一个别的文件,再把后缀改成ahk也可以 一个新建的ahk文档里面会有这 ...
- Jmeter之集合点(Synchronizing timer 同步定时器)
1.集合点介绍 LR中集合点可以设置多个虚拟用户等待到一个点,同时触发一个事务,以达到模拟真实环境下多个用户同时操作,实现性能测试的最终目的.jmeter中使用Synchronizing Timer实 ...
- python—列表生成式
#原始写法 l=[] for i in range(1,11): l.append(str(i).zfill(2)) print(l) #结果:['01', '02', '03', '04', '05 ...
- 记录一次程序输出和DB查询不匹配的问题
今天发生一件很神奇的事情,我用TP读取DB数据,然后打印出来的数据,和直接通过sequal pro查询出来的数据(某一列),怎么对都对不起来,我尝试 清空TP缓存 MYSQL服务重启 mac重启 都无 ...
- 阅读:JAVA 3& 4
随机数: Random rand = new Random(47); // 产生随机算子.47 is seed. for incovating predicatable random numberin ...
- pycrypto 安装 Crypto 报错 error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": http://landinghub.visualstudio.com/visual-cpp-build-tools
error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools&quo ...