Что нового

Как прочитать информацию с SysTabControl32 и SysListView32?

Незнайка

Новичок
Сообщения
3
Репутация
0
Не получается прочитать информацию с элементов SysTabControl32 и SysListView32:

Код:
#include <GuiTab.au3>
#include <GuiListView.au3>

Global $tValue = DllStructCreate('dword')
If @OSArch = 'X64' Then
  DllCall('kernel32.dll', 'int', 'Wow64DisableWow64FsRedirection', 'ptr', DllStructGetPtr($tValue))
EndIf
Global $iResult = ShellExecute(@WindowsDir & '\System32\msconfig.exe')
If @OSArch = 'X64' Then
  DllCall('kernel32.dll', 'int', 'Wow64RevertWow64FsRedirection', 'ptr', DllStructGetPtr($tValue))
EndIf
ConsoleWrite($iResult & @CRLF)
If Not $iResult Then Exit 1

Global $hWnd = WinWait('[TITLE:Конфигурация системы]', '', 5)
ConsoleWrite('Window: ' & $hWnd & @CRLF)
If Not $hWnd Then Exit 2
Global $hTab = ControlGetHandle($hWnd, '', '[CLASS:SysTabControl32; INSTANCE:1]')
ConsoleWrite('Tab: ' & $hTab & @CRLF)
If Not $hTab Then Exit 3
Global $iCount = _GUICtrlTab_GetItemCount($hTab)
ConsoleWrite('Tab Count: ' & $iCount & @CRLF)
Global $sTabName = 'Службы'
If _GUICtrlTab_GetItemText($hTab, _GUICtrlTab_GetCurFocus($hTab)) <> $sTabName Then
  For $i = 0 To $iCount-1
    If _GUICtrlTab_GetItemText($hTab, $i) == $sTabName Then
      _GUICtrlTab_SetCurFocus($hTab, $i)
      ExitLoop
    EndIf
  Next
EndIf
Global $hList = ControlGetHandle($hWnd, '', '[CLASS:SysListView32; INSTANCE:1]')  ; Иногда бывает, что List не успевает прорисоваться. Есть функция ожидания появления контрола (кроме Sleep)?
ConsoleWrite('List: ' & $hList & @CRLF)
If Not $hList Then Exit 4
ConsoleWrite('Item Count: ' & ControlListView($hWnd, '', $hList, 'GetItemCount') & @CRLF)
ConsoleWrite('Item Count: ' & _GUICtrlListView_GetItemCount($hList) & @CRLF)
ConsoleWrite('Column Count: ' & _GUICtrlListView_GetColumnCount($hList) & @CRLF)
Global $aInfo = _GUICtrlListView_GetColumn($hList, 1)
ConsoleWrite('Header: ' & $aInfo[5] & @CRLF)
ConsoleWrite('Text: ' & _GUICtrlListView_GetItemText($hList, 1) & @CRLF)


Результат:
8864
Window: 0x00631740
Tab: 0x006E0E2C
Tab Count: 0
List: 0x003C1696
Item Count: 0
Item Count: 0
Column Count: 0
Header:
Text:
>Exit code: 0 Time: 2.114

Что я делаю не так?
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Незнайка
Для доступа к элементам этого окна нужны права администратора
Код:
#RequireAdmin

А для доступа к элементам Tab на Win x64 нужно запускать скрипт через Au3Info_x64 AutoIt3_x64.exe.
 
A

Alofa

Гость
InnI сказал(а):
... А для доступа к элементам Tab на Win x64 нужно запускать скрипт через Au3Info_x64.exe.
InnI по видимому хотел сказать: ... через AutoIt3_x64.exe.
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Alofa
Да, именно это я и хотел сказать :beer:
 
Верх