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 ...
随机推荐
- 使用==操作符比较命令行参数args[0]和字符串返回“Invalid type"
运行程序接收一个来自命令行的字符串参数(取值1,2,3,4),根据参数执行对应语句块. 由于未能判断字符串内容是否相同导致代码if语句块代码失效,怎么也看不到schedule方法的效果, 以下是错误代 ...
- react-redux的使用
在react-redux 框架中,给我提供了两个常用的API来配合Redux框架的使用,其实在我们的实际项目开发中,我们完全可以不用react-redux框架,但是如果使用此框架,就如虎添翼了. 我们 ...
- windows yii2 配置redis
1 安装redis https://blog.csdn.net/gaotanpan3666/article/details/83047081 安装redis 2 yii安装redis扩展 compo ...
- Go语言编程读书笔记:Go channel(2)
单向channel 概念 单向channel是只能用于发送或者接收数据,channel本身必然是同时支持读写,否则根本没法用.假如一个channel只能读,那么肯定只会是空的,因为你没有机会向里面写数 ...
- 了解一下SQL映射文件
1:SQL映射文件 MyBatis真正强大之处就在于SQL映射语句,相对于强大的功能,SQL映射文件的配置非常简单,与JDBC相比减少了50%的代码.下面是关于SQL映射文件的几个顶级元素配置 map ...
- AttributeError: 'LoginForm' object has no attribute 'is_bound' , object has no attribute 'is_bound'
'LoginForm' object has no attribute 'is_bound' 可能原因: 啥子问题?? 都是 jquery.js 文件.....
- Add `gem 'sqlite3'` to your Gemfile
错误:Specified 'sqlite3' for database adapter, but the gem is not loaded. Add `gem 'sqlite3'` to your ...
- mysql学习笔记--数据库索引
一.索引的优点:查询速度快 二.索引的缺点: 1. 增.删.改(数据操作语句)效率低了 2. 索引占用空间 三.索引类型: 1. 普通索引 2. 唯一索引(唯一键) 3. 主键索引:只要主键就自动创建 ...
- 用python计算圆周率Π
一.要求: 1.计算到圆周率后面越多位越好. 2.用进度条显示计算的进度. 3.要求给出圆周率Π的具体计算方法和解释. 二.算法: 1.拉马努金公式: 2.高斯-勒让德公式: 设置初始值: 反复执行以 ...
- CentOS7+CDH5.14.0安装全流程记录,图文详解全程实测-4配置NTP服务
配置NTP服务.标准的做法是配置NTP服务器,但是这里为了方便就用简化的方式配置了. 这个在安装初期,不是必须的,只要保证各机器的时间同步就行,使用如下命令可以查看时间是否同步: [root@cdh1 ...