Hello. I apologize in advance if I created the topic in the wrong place, because I think that my task is directly or indirectly related to WinApi. I will describe the task:
I am programming an imitation of manual work in applications for working on financial markets (Metatrader 4 and 5). I use AutoIt for this. I need to read the text of the SysListView32 items .I wrote the following code for this purpose .
Code:
#include <WinAPI.au3>
#include <Memory.au3>
#include <ListViewConstants.au3>
Local $pid=        ; here i write id of needed process
Local $hwnd=      ; here i write handle of SysListView32 
Local $maxtext=    ;here i write max number of chars 
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))
The problem is that the above code only gets text of items if the SysListView32 has either LVS_OWNERDATA or LVS_OWNERDRAWFIXED style. I have checked above code on different applications with SysListView32 that only had style LVS_OWNERDATA and checked above code on different applications with SysListView32 that only had style LVS_OWNERDRAWFIXED. In both cases i was able to get text from SysListView32 items. But above code is not getting text of SysListView32 items with combined LVS_OWNERDATA and LVS_OWNERDRAWFIXED styles . The SysListView32 of Metatrader application have combined styles LVS_OWNERDATA+LVS_OWNERDRAWFIXED.
Well here's the question:
How to get item text from SysListView32 from another application with both LVS_OWNERDATA and LVS_OWNERDRAWFIXED styles at the same time?
I would like to get some direction of action or example code (doesn't matter on AutoIt). Thank you.