Что нового

получить текст SysListView32(LVS_OWNERDATA+LVS_OWNERDRAWFIXED) из других приложений

ilqar200

Новичок
Сообщения
1
Репутация
0
Здравствуйте. Нужно получить текст элементов из SysListView32 из нужного мне приложение с помощью AutoIt. Написал вот такой код для этой цели.
Код:
#include <WinAPI.au3>
#include <Memory.au3>
#include <ListViewConstants.au3>
Local $pid=        ; тут надо написать идентификатор процесса нужного приложение
Local $hwnd=      ;тут надо написать хендл SysListView32 (берем из AutoIt WIndow Info Tool)
Local $maxtext=    ; тут надо написать максимальное количество символов
Local $hprocess=_WinAPI_OpenProcess($PROCESS_ALL_ACCESS,False,$pid)
Local $plv=_MemVirtualAllocEx($hprocess,Null,$maxtext+60,$MEM_COMMIT,$PAGE_READWRITE)
Local $rectext=DllStructCreate("char ["&$maxtext&"]")
Local $lv=DllStructCreate($tagLVITEM)
$lv.Mask=$LVIF_TEXT
$lv.Item=0
$lv.SubItem=0
$lv.Text=$plv+60
$lv.TextMax=$maxtext
_WinAPI_WriteProcessMemory($hprocess,$plv,DllStructGetPtr($lv),60,Null)
_SendMessageA($hwnd,$LVM_GETITEMA,0,$plv)
_WinAPI_ReadProcessMemory($hprocess,$lv.Text,DllStructGetPtr($rectext),$maxtext,Null)
_MemVirtualFreeEx($hprocess,$plv,0,$MEM_RELEASE)
ConsoleWrite(DllStructGetData($rectext,1))

Проблема в том что выше код получает текст только если SysListView32 имеет стиль или LVS_OWNERDATA или LVS_OWNERDRAWFIXED. Но этот код не получает текст
элементов SysListView32 с комбинированными стилями LVS_OWNERDATA и LVS_OWNERDRAWFIXED.
Ну вот вопрос :
Как получить текст элементов из SysListView32 из другого приложение с стилями и LVS_OWNERDATA и LVS_OWNERDRAWFIXED одновременно?
 
Последнее редактирование:
Верх