开发者技术变现资源聚集地

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的值的更多相关文章

  1. 如何获取listview里面的edittext或者RadioGroup的值,涉及到引发的混乱现象

    最近要实现从数据库读数据,该数据对应listview的item布局里面的RadioButton值,并且item布局里面还有EditText的控件. 如何将每一条对应的listview对应值获取出来呢? ...

  2. c# winform 获取listview 选中行某列的值

    给listview填充数据: for (int i = 0; i < 5; i++) { ListViewItem lvitem = new ListViewItem(); lvitem.Sub ...

  3. WPF 获取 ListView DataTemplate 中控件值

    原文:WPF 获取 ListView DataTemplate 中控件值 版权声明:本文为博主原创文章,未经博主允许可以随意转载 https://blog.csdn.net/songqingwei19 ...

  4. UWP 双向绑定,在ListView中有个TextBox,怎么获取Text的值

    要求:评论宝贝的时候一个订单里面包含多个产品,获取对产品的评论内容哦 1. xaml界面 <ListView x:Name="lvDetail"> <ListVi ...

  5. grails项目获取前后台的值

    grails项目中前台传值给后台: 加入我有a.gsp这个页面,a.gsp中有如下代码: 姓名:<input type="text" name="xing" ...

  6. C#获取存储过程返回值和输出参数值的方法

    //转自网络,先留个底 1.获取Return返回值 //存储过程 //Create PROCEDURE MYSQL // @a int, // @b int //AS // return @a + @ ...

  7. 在java中获取attr的值

    首先说如何获取已经在style里面定义好的attr的值,以colorPrimary为例: TypedValue value = new TypedValue(); mContext.getTheme( ...

  8. Python从线程获取函数返回值

    Python中利用强大的threading模块可以很容易的实现多线程开发,提高运行速度.这一般是对某个进行大量计算操作的的函数进行多线程处理,然后合并各线程的结果.获取函数返回值的方法可以如下: 1) ...

  9. RadGrid使用技巧:从RadGrid获取绑定的值

    本文主要介绍从RadGrid获取绑定的值,仅适用于Telerik RadControls for asp.net ajax. 获取方式 RadGrid把绑定的值存储在VIewState中,即使View ...

随机推荐

  1. pop() 删除掉数组的最后一个元素

    下面的代码首先创建了一个拥有四个元素的数组 myFish,然后删除掉它的最后一个元素. let myFish = ["angel", "clown", &quo ...

  2. query did not return a unique result: 2错误的发生

    org.springframework.dao.IncorrectResultSizeDataAccessException: query did not return a unique result ...

  3. python,ModuleNotFoundError,is not a package

    Traceback (most recent call last): File "/home/lll/zzz/work/video/zzz/generate.py", line 7 ...

  4. linux下面重启nfs报错:nfs-server.service:main process exited

    linux下面重启nfs报错:nfs-server.service:main process exited [root@dhcp-66-83-39 images]# service rpcbind s ...

  5. zip 格式解析

    1.格式 https://pkware.cachefly.net/webdocs/APPNOTE/APPNOTE-6.2.0.txt 官方文档 https://blog.csdn.net/hp9103 ...

  6. python——获取文件列表

    """-------------------------------------------------------- <<获取文件列表>> () ...

  7. css3-study-new

    不错的:http://c7sky.com/works/css3slides/#28

  8. 2019-04-28——Django学习

    1.Django: Python Web应用开发框架,Django是走大而全的方向,它最出名的是其全自动化的管理后台:只需要使用起ORM,做简单的对象定义,它就能自动生成数据库结构.以及全功能的管理后 ...

  9. go语言环境安装

    Go 是一个开源的编程语言,被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言. 1. 准备环境并安装依赖包 创建centos 7.6 64bit的虚拟机. 安装 ...

  10. Qt跨平台开发Wince5.0和Android程序

    所谓跨平台是指维护一份代码,可编译出多平台的应用程序.Qt这方面虽然已经做的不错,但性能还是体验,和原生开发工具开发的程序相比,差距还是不小的.但单从生产应用的角度来说,可以采用,不失为一种好的解决方 ...