Guten Morgen,
ich bin bisschen am verzweifeln. ich versuche aus einem externen Programm die Treeview Items zu suchen und dann je nach Variable eines davon anzuklicken.
Vor einiger Zeit hatte ich das ganze schon mal für ein anderes Programm erstellt, also hab ich einfach den Code genommen und die handels angepasst.
Leider funktioniert es aber nicht.
Hier mal der Codeschnipsel(Handels von Prog1)
hWnd = WinGetHandle("[CLASS:MPTMainFrameWindow]", "")
Global $iCountY, $iCountX, $iCol = 0, $iRow = 0
Global $hItem = _GUICtrlTreeView_GetFirstItem($hTreeview)
ConsoleWrite(_GUICtrlTreeView_GetText($hTreeview, $hItem) & @CRLF)
While 1
$hItem = _GUICtrlTreeView_GetNext($hTreeview, $hItem)
If $hItem = 0 Then ExitLoop
ConsoleWrite(_GUICtrlTreeView_GetText($hTreeview, $hItem) & @CRLF)
WEnd
Global $hTreeview = ControlGetHandle($hWnd, "", "[CLASS:MPTWorkspaceTree; INSTANCE:1]")
$searchText = $MLX
$hItemFound = _GUICtrlTreeView_FindItem($hTreeview, $searchText, True)
ControlFocus($hWnd, "", "[CLASS:MPTWorkspaceTree; INSTANCE:1]")
While $hItemFound
_GUICtrlTreeView_SelectItem($hTreeview, $hItemFound)
$next = _GUICtrlTreeView_GetNextVisible($hTreeview, $hItemFound)
$hItemFound = _GUICtrlTreeView_FindItem($hTreeview, $searchText, True, $next)
_GUICtrlTreeView_ClickItem($hTreeview, $hItemFound)
sleep(200)
Send("{ENTER}")
Sleep(5000)
WEnd
Alles anzeigen
Dieser Code funktioniert bei Programm 1 bei Programm 2 aber nicht.
Nun habe ich mir ein Testscript gesucht und möchte mir einfach nur die Items in einem Array anzeigen lassen. Wieder das gleiche spiel Prog1 funktioniert Prog2 nicht.
Code(Handels Prog2)
#include <GuiTreeView.au3>
#include <Array.au3>
Global $iCountY, $iCountX, $iCol = 0, $iRow = 0
$hWnd = WinGetHandle("[CLASS:WindowsForms10.Window.8.app.0.378734a]", "")
WinActivate($hWnd)
Global $hTreeview = ControlGetHandle($hWnd, "", "[NAME:MainTreeView]")
ControlFocus($hWnd, "", "[NAME:MainTreeView]")
Global $hItem = _GUICtrlTreeView_GetFirstItem($hTreeview)
While 1
$hItem = _GUICtrlTreeView_GetNext($hTreeview, $hItem)
If $hItem = 0 Then ExitLoop
If Not _GUICtrlTreeView_GetChildren($hTreeview, $hItem) Then $iCountY += 1
MsgBox(64,"", _GUICtrlTreeView_GetNext($hTreeview, $hItem))
If _GUICtrlTreeView_Level($hTreeview, $hItem) > $iCountX Then $iCountX = _GUICtrlTreeView_Level($hTreeview, $hItem)
WEnd
$iCountX += 1
Global $aTreeview[$iCountY][$iCountX]
$hItem = _GUICtrlTreeView_GetFirstItem($hTreeview)
$aTreeview[0][0] = _GUICtrlTreeView_GetText($hTreeview, $hItem)
While 1
$hItem = _GUICtrlTreeView_GetNext($hTreeview, $hItem)
If $hItem = 0 Then ExitLoop
While 1
$iCol += 1
If $iCol = (UBound($aTreeview, 2) + 1) Then
$iCol = 0
$iRow += 1
EndIf
If _GUICtrlTreeView_Level($hTreeview, $hItem) = $iCol Then
$aTreeview[$iRow][$iCol] = _GUICtrlTreeView_GetText($hTreeview, $hItem)
ExitLoop
EndIf
WEnd
WEnd
_ArrayDisplay($aTreeview)
Alles anzeigen
Ich hab in dem Script eine msgbox eingebaut, die Items werden mir angezeigt, nur funktioniert scheinbar _getText nicht.
Ich schreibe noch Kurz die WindowInfos von Prog2 auf.
Window:
Title: PG588
Class: WindowsForms10.Window.8.app.0.378734a
Control:
Class: WindowsForms10.SysTreeView32.app.0.378734a
Instance: 1
ClassnameNN: WindowsForms10.SysTreeView32.app.0.378734a1
Name: MainTreeView
Advanced Mode: [NAME:MainTreeView]
Wäre super wenn mir jemand helfen könnte
Vielen Dank schonmal