如何通过句柄获取外部程序的窗口的内容

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

如何通过句柄获取外部程序的窗口的内容

Option Explicit'常数申明Public Const LVM_FIRST As Long = &H1000Public Const LVM_GETHEADER As Long = LVM_FIRST + 31Public Const

LVM_GETITEMCOUNT As Long = LVM_FIRST + 4Public Const LVM_GETITEMTEXT As Long = LVM_FIRST +

45Public Const HDM_FIRST As Long =

&H1200Public Const HDM_GETITEMCOUNT As Long = (HDM_FIRST + 0)Public Const

PROCESS_VM_OPERATION As Long = &H8Public Const PROCESS_VM_READ As Long = &H10Public Const PROCESS_VM_WRITE As Long = &H20Public Const MAX_LVMSTRING As Long = 255Public Const MEM_COMMIT As Long = &H1000Public Const MEM_RELEASE As Long = &H8000&Public Const PAGE_READWRITE As Long = &H4Public Const LVIF_TEXT As Long = &H1'类型申明Public Type LV_ITEMA mask As Long iItem

As Long iSubItem As Long State As Long stateMask As Long pszText As Long cchTextMax As LongEnd Type'API申明Public

Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcId As Long) As Long '打开进程Public Declare Function VirtualAllocEx Lib "kernel32" (ByVal hProcess As Long, ByVal lpAddress As Long, ByVal dwSize As Long, ByVal flAllocationType As Long, _

ByVal flProtect As Long) As Long '获取内存空间Public Declare Function VirtualFreeEx Lib "kernel32" (ByVal hProcess As Long, ByVal lpAddress As Long, ByVal dwSize As Long, ByVal dwFreeType As Long) As Long '释放内存空间Public Declare Function WriteProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAddress As Long, ByRef lpBuffer As LV_ITEMA, ByVal nSize As Long, _

lpNumberOfBytesWritten As Long) As Long '向内存写数据Public Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAddress As Long, ByRef lpBuffer As Any, ByVal nSize As Long, _

lpNumberOfBytesWritten As Long) As Long '向内存读数据Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As

Long, ByVal wParam As Long, ByRef lParam As Any) As Long '发送消息Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long '关闭进程Public Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long '获得进程IDPublic Function GetListViewTextArray(ByVal hWindow As Long) As String() Dim myItem() As LV_ITEMA Dim PHandle

As Long Dim ProcessId As Long Dim PStrBufferMemory As Long Dim PMyItemMemory

As Long Dim StrBuffer(MAX_LVMSTRING) As Byte

Dim TmpString As String Dim Ih As Long, J As Long, HCount As Long Dim StrArr() As String, ItemString As String Dim Ji As Long, MyItemLength() As Long GetWindowThreadProcessId hWindow, ProcessId HCount = SendMessage(hWindow, LVM_GETHEADER, 0, 0) '获取列数If HCount > 0 Then HCount = SendMessage(HCount, HDM_GETITEMCOUNT, 0, 0) - 1 Else 'NOT HCOUNT... HCount = 0 End If PHandle = OpenProcess(PROCESS_VM_OPERATION Or PROCESS_VM_READ Or PROCESS_VM_WRITE, 0, ProcessId) ReDim myItem(HCount) ReDim

相关文档
最新文档