Доброе время суток.
Задача: Пробежаться по все элементам SysTreeView32 и названия записать в файл.
Проблема: Не удается получить текст элемента. с помощью функции
. Возвращается пустая строка.
Код:
Данный код успешно бежит по списку, и $sItem получает значения вида #0|#2. Но сообщения, в которых выводится $toFile - пустые.
снимки программы:
http://autoit-script.ru/index.php?action=downloads;sa=downfile&id=132
Как мне кажется, что каждый элемент SysTreeView является SysListView, соответственно необходимо как то обратиться с начала к нему, и уже потом выдергивать текст. Но это только предположение. Но в любом случае, как это сделать я не знаю. Программа из которой хочу вытащить данные очень специфичная и глючная.
спасибо большое за помощь.
Задача: Пробежаться по все элементам SysTreeView32 и названия записать в файл.
Проблема: Не удается получить текст элемента. с помощью функции
Код:
ControlTreeView($WinTitle, "", "[CLASS:SysTreeView32; INSTANCE:44]", "GetText",$sItem,1)
Код:
Код:
#include <GuiTreeView.au3>
$WinTitle="Transact SM Design Studio - sb - [Transact map - ""2741 - ToUpdateMainApplicantArrayIntegr""]"
WinActivate($WinTitle)
$hWnd = ControlGetHandle($WinTitle, "", "SysTreeView3244")
$nCoutItems=0
$hStart = _GUICtrlTreeView_GetFirstChild($hWnd, 0)
if $hStart = 0 Then
MsgBox(64,"Не нашел окно",":(")
endif
;MsgBox(64,"Не нашел окно",$hStart)
$file = FileOpen("d:\test.txt", 1)
_GUICtrlTreeView_SelectItem($hWnd, $hStart)
$flag=True
While $hStart <> 0x00000000
$nCoutItems+=1
_GUICtrlTreeView_SelectItem($hWnd, $hStart)
$sItem = ControlTreeView($WinTitle, "", "[CLASS:SysTreeView32; INSTANCE:44]", "GetSelected",1)
;$lol=_GUICtrlTreeView_GetFocused($hWnd,2)
$toFile=ControlTreeView($WinTitle, "", "[CLASS:SysTreeView32; INSTANCE:44]", "GetText",$sItem,1)
MsgBox(64,"Look",$toFile)
;
if $flag then
FileWriteLine($file,$toFile)
endif
$hStart = _GUICtrlTreeView_GetNext($hWnd, $hStart)
$flag= Not $flag
WEnd
FileClose($file)
MsgBox(64,"Скрипт завершен", "lol")
Данный код успешно бежит по списку, и $sItem получает значения вида #0|#2. Но сообщения, в которых выводится $toFile - пустые.
снимки программы:
http://autoit-script.ru/index.php?action=downloads;sa=downfile&id=132
Как мне кажется, что каждый элемент SysTreeView является SysListView, соответственно необходимо как то обратиться с начала к нему, и уже потом выдергивать текст. Но это только предположение. Но в любом случае, как это сделать я не знаю. Программа из которой хочу вытащить данные очень специфичная и глючная.
начал эксперименты. и выяснил, что интересующий меня текст можно вытащить из RichEdit'а. Если выделить нужный элемент и нажать Enter, то появляется RichEdit (не могу пока понять как это все организованно программно, то ли он скрыт и при получении соответствующего сообщения выноситься на первый план, то ли он создается каждый раз при получении сообщения). Удалось вытащить значение одного элемента (уже думал, что проблема решена). В цикл вставить:
и тогда в $toFile лежит значение. Но оно всегда одно и то же. И всегда это первый элемент или же любой другой, на который я тыкнул мышков во время исполнения скрипта.
Код:
ControlSend($WinTitle, "", $hWnd,"{Enter}")
$Focus=ControlGetFocus($WinTitle)
$toFile=ControlGetText("","",$Focus)
ControlSend($WinTitle, "", $hWnd,"{Enter}")
и тогда в $toFile лежит значение. Но оно всегда одно и то же. И всегда это первый элемент или же любой другой, на который я тыкнул мышков во время исполнения скрипта.
спасибо большое за помощь.