Что нового

[Окна, Диалоги] TreeView Добратся до записей чужого приложения

Stos

Новичок
Сообщения
3
Репутация
0
Количество записей видет, а сами записи нет. :stars:
Код:
#include <GuiTreeView.au3>
	ShellExecute ("gpedit.msc")
	WinWait('Редактор локальной групповой политики',"",60)
	$THWnd=WinGetHandle("[CLASS:MMCMainFrame]");TITLE:Редактор локальной групповой политики]")
	$LTHWnd=WinGetClassList($THWnd)
	$LTHWnd=ControlGetHandle($THWnd,"","[CLASS:SysTreeView32]");TITLE:Редактор локальной групповой политики]")
	$LTCount=_GUICtrlTreeView_GetCount($LTHWnd)
	$ITHWnd=_GUICtrlTreeView_GetFirstItem($LTHWnd)
	MsgBox(1,"",$LTCount&"   "&String($ITHWnd))
	for $I=1 To $LTCount
		If _GUICtrlTreeView_GetChildren($LTHWnd, $ITHWnd) Then MsgBox(1,"",'+++')
		MsgBox(1,"",$I&" - "&_GUICtrlTreeView_GetText($LTHWnd, $ITHWnd))
		$ITHWnd= _GUICtrlTreeView_GetNext($LTHWnd, $ITHWnd)
	Next
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Предупреждение За нарушение правил форума (пункт В.11):
Любые отрывки AutoIt кода необходимо заключать в тег [autoit]
autoit.gif
(подробнее), а обычный код соответственно в тег [code]
code.gif
(подробнее). Также большие выдержки текста помещайте под тег [spoiler]
spoiler.gif
(подробнее), там где это поддерживается естественно. Как в случае с названием темы, также короткое и эргономичное сообщение привлекает больше внимания, и шансы на получение конкретного ответа увеличиваются.


С уважением, ваш Глобальный модератор.
 

AZJIO

Меценат
Меценат
Сообщения
2,874
Репутация
1,194
_TreeViewToText

Проверил, _GUICtrlTreeView_GetChildren на этом дереве наверно не будет работать, так как дерево ставит "плюсики" пунктам не содержащих вложенных. В итоге получается обманка для скрипта.
Наверно надо применить более сложный подход, запросить дочерний пункт. Но это тоже может не сработать, так как дерево строится во время открытия пунктов, а не сразу.
Значит третий вариант - имитировать клики или раскрытие пунктов, чтобы дерево строилось и одновременно его обсчитывать.
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Можно так :smile:
Код:
$objMMC = ObjCreate("MMC20.Application")
$objMMC.Load(@SystemDir & "\lusrmgr.msc")
$objMMC.UserControl = 1
If WinWait("[CLASS:MMCMainFrame]", '', 10) = 0 Then Exit
$objDoc = $objMMC.Document
$objSN = $objDoc.ScopeNamespace ;'Пространство имён
$objRoot = $objDoc.RootNode ;'Корневой узел
$objNode = $objSN.GetChild($objRoot) ;'Узел "Локальные пользователи и группы (локально)"
$objNode = $objSN.GetChild($objNode) ;'Узел "Пользователи"
$objView = $objDoc.ActiveView ;'Отображение
$objView.ActiveScopeNode = $objNode ;'Установка активного узла для отображения
$objList = $objView.ListItems
For $Obj In $objList
	$Name = $Obj.Name
	ConsoleWrite($Name & @LF)
Next

$objView.Select ($Obj)
$objView.ExecuteSelectionMenuItem("Свойства")
 
Автор
S

Stos

Новичок
Сообщения
3
Репутация
0
Проблемма относительно решина. :rofl:
_GUICtrlTreeView_GetText
у меня не работает
заменил на: ControlTreeView("Редактор локальной групповой политики","","SysTreeView321","GetSelected").
_GUICtrlTreeView_FindItem: Тоже не работает.
Так пониаю надо ковырять исходник.
Хто справился?
 
Верх