Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   получить текст SysListView32(LVS_OWNERDATA+LVS_OWNERDRAWFIXED) из других приложений (http://forum.oszone.net/showthread.php?t=353359)

ilqar200 03-04-2023 14:37 3006642

получить текст SysListView32(LVS_OWNERDATA+LVS_OWNERDRAWFIXED) из других приложений
 
Здравствуйте. Нужно получить текст элементов из 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 одновременно?


Время: 22:37.

Время: 22:37.
© OSzone.net 2001-