Невозможно установить флажки внутри SysTreeView32

Я пытаюсь изменить настройки Internet Explorer с помощью AutoIt, но не могу проверить элементы в SysTreeView32 с помощью ControlTreeView(), Мой код:

var controlTreeView = "[CLASS:SysTreeView32; INSTANCE:1]";
var treeView = AutoItX.ControlGetHandle(hwnd, controlTreeView);
AutoItX.ControlTreeView(hwnd, treeView, "Check", "#6|#6, "");

Код с командой "Выбрать" работает отлично, но он просто выбирает элемент.

var controlTreeView = "[CLASS:SysTreeView32; INSTANCE:1]";
var treeView = AutoItX.ControlGetHandle(hwnd, controlTreeView);
AutoItX.ControlTreeView(hwnd, treeView, "Select", "#6|#6, "");

Как я могу (не) проверить их вместо того, чтобы просто выбирать?

предмет для проверки

0 ответов

Обратите внимание:

Как в файле справки AutoIt для ControlTreeView описано, Check Команда работает только "если элемент поддерживает это". Из-за уже упомянутого диалога, чувствительного к безопасности, эта команда не будет работать.

Решение:

Просто сделай Select команда, активируйте окно / диалог, задав фокус и отправив клавишу пробела, вот и все. В приведенном ниже примере вы можете увидеть, что я предлагаю.

Global $sWindow   = 'Internet Options'
Global $sControl  = '[CLASS:SysTreeView32; INSTANCE:1]'
Global $sCheckbox = '#6|#6'

Func _getTreeViewHandle()
    WinWaitActive( $sWindow, '', 2 )
    Return ControlGetHandle( $sWindow, '', $sControl )
EndFunc

Func _checkTreeViewCheckbox( $hControl )
    ControlTreeView( $sWindow, '', $hControl, 'Select', $sCheckbox )
    WinActivate( $sWindow )
    Send( '{SPACE}' )
EndFunc

Global $hTreeView = _getTreeViewHandle()
_checkTreeViewCheckbox( $hTreeView )

Проверено в IE v11.

Второй подход:

Вы управляете реестром с помощью функции RegWrite, Пример:

Global $iReturnCode = RegWrite( 'HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main', 'UseSWRender', 'REG_DWORD', '0x00000000' )

Но для этого вам нужно настроить ключ для вашей версии ОС.

Я надеюсь, что это поможет вам.

Другие вопросы по тегам