获取其它进程WINDOWSLISTVIEW类控件文本内容(VFP)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
获取其它进程WINDOWSLISTVIEW类控件⽂本内容(VFP)
获取其它进程WINDOWS LISTVIEW类控件⽂本内容(VFP)这⾥以任务管理器为例:
DECLARE Long GetWindowThreadProcessId IN WIN32API ;
Long hWnd,;
Long @lpdwProcessId
Declare Long FindWindowEx In WIN32API ;
Long hwndParent,;
Long hwndChildAfter,;
String @lpszClass,;
String @lpszWindow
DECLARE INTEGER SendMessage IN user32 ;
INTEGER hWnd,;
INTEGER Msg,;
INTEGER wParam,;
INTEGER lParam
DECLARE Long VirtualAllocEx IN WIN32API ;
Long hProcess,;
Long @ lpAddress,;
Long dwSize,;
Long flAllocationType,;
Long flProtect
DECLARE Long VirtualFreeEx IN WIN32API ;
Long hProcess,;
Long lpAddress,;
Long dwSize,;
Long dwFreeType
DECLARE Long WriteProcessMemory IN WIN32API ;
Long hProcess,;
Long lpBaseAddress,;
string @lpBuffer, ;
Long nSize,;
Long @ lpNumberOfBytesWritten
DECLARE Long ReadProcessMemory IN WIN32API ;
Long hProcess,;
Long lpBaseAddress,;
String @lpBuffer, ;
Long nSize,;
Long lpNumberOfBytesWritten
DECLARE Long CloseHandle IN kernel32;
Long hObject
DECLARE Long OpenProcess IN kernel32;
Long dwDesiredAccessas,;
Long bInheritHandle,;
Long dwProcId
LVM_FIRST = 0x1000
LVM_GETHEADER = LVM_FIRST + 31
LVM_GETITEMCOUNT = (LVM_FIRST + 4)
LVM_GETITEMTEXT = (LVM_FIRST + 45)
HDM_GETITEMCOUNT = 0x1200
MEM_COMMIT =0x1000
MEM_RELEASE = 0x8000
PAGE_READWRITE = 0x4
MAX_LVMSTRING=255
PROCESS_ALL_ACCESS=0x1F0FFF
myItem=REPLICATE(CHR(0),40)
strBuffer=REPLICATE(CHR(0),MAX_LVMSTRING)
******************************************************
*** VFP应⽤程式算法群 QQ群号:12787940 ***
******************************************************
wHwnd= FindWindowEx(0, 0, "#32770", "Windows任务管理器") wHwnd=FindWindowEx(wHwnd, 0, "#32770",null)
wHwnd= FindWindowEx(wHwnd, 0, "SysListView32", "进程")
wh= SendMessage(wHwnd, LVM_GETHEADER, 0,0) pColumn = SendMessage(wh, HDM_GETITEMCOUNT, 0,0)&&列pRow= SendMessage(wHwnd, LVM_GETITEMCOUNT,1,0)&&⾏lngPId=0
GetWindowThreadProcessId(wHwnd,@lngPId)
pHandle = OpenProcess(PROCESS_ALL_ACCESS,0, lngPId)
pMyItemMemory = VirtualAllocEx(pHandle, 0, Len(myItem)+MAX_LVMSTRING, MEM_COMMIT, PAGE_READWRITE)&&把两块内存⼀起申请掉
DIMENSION listitemvalue[pColumn,pRow]&&把数据存⼊数组
FOR i=0 TO pColumn-1&&列循环
FOR j=0 TO pRow-1&&⾏循环
myItem=BINTOC(1,'4rs')+;
BINTOC(0,'4rs')+;
BINTOC(i,'4rs')+;
BINTOC(0,'4rs')+;
BINTOC(0,'4rs')+;
BINTOC(pMyItemMemory+40,'4rs')+;
BINTOC(MAX_LVMSTRING,'4rs')+;
BINTOC(0,'4rs')+;
BINTOC(0,'4rs')+;
BINTOC(0,'4rs')
WriteProcessMemory(pHandle,pMyItemMemory, myItem, Len(myItem), 0)&&写⼊ITEM
SendMessage(wHwnd,LVM_GETITEMTEXT,j,pMyItemMemory)
ReadProcessMemory(pHandle,pMyItemMemory+40,@strBuffer,MAX_LVMSTRING,0)
listitemvalue[i+1,j+1]=SUBSTR(strBuffer,1,AT(CHR(0),strBuffer)-1) ENDF
ENDF
Result = VirtualFreeEx(pHandle,pMyItemMemory, 0, MEM_RELEASE)
Result = CloseHandle(pHandle)
listitemvalue[1,3]&&显⽰第1列第3⾏数据。