Что нового

_GUICtrlListView_SetItem не изменяет текст в ячейке

Thirteenth

Новичок
Сообщения
8
Репутация
0
Необходимо проверить и при необходимости изменить IP адрес в настройке программы Codesys 2.3. Использую такой код:
Код:
$sText = ControlListView ('Communication Parameters', "", '[CLASS:SysListView32; INSTANCE:1]', "GetText" , 0 , 1 )
ConsoleWrite('$sText=' & $sText & @CR)
$hControl = ControlGetHandle('Communication Parameters', "", '[CLASS:SysListView32; INSTANCE:1]')
;~ Sleep(1000)
;~ WinActivate('Communication Parameters')
;~ WinWaitActive('Communication Parameters')

;~ _GUICtrlListView_SetItemText($hControl, 0, "10.2.25.1", 1)
_GUICtrlListView_SetItem($hControl, "10.2.25.1", 0,1)

$sText = ControlListView ('Communication Parameters', "", '[CLASS:SysListView32; INSTANCE:1]', "GetText" , 0 , 1 )
ConsoleWrite('$sText=' & $sText & @CR)

Значение из нужной ячейки корректно считывается, но изменить не получается. Точнее в ячейке визуально происходит замена и даже Autoit считывает его как измененное, но по факту, если двойным щелчком зайти в эту ячейку (или переоткрыть это окно), в значение ячейки остается первоначальным. _GUICtrlListView_SetItemText действует аналогично.
Вопрос - как грамотно изменить значение в ListView, созданном сторонним приложением. Не хотелось бы колхозить кликер.
1621361054904.png
 
Автор
T

Thirteenth

Новичок
Сообщения
8
Репутация
0
Даже после нажатия ОК?
Именно. После применения скрипта ячейка выглядит как будто значение записалось. Если нажать ОК, окно закрывается, при повторном открытии значение исходное..
 

joiner

Модератор
Локальный модератор
Сообщения
3,557
Репутация
628
Это же стороннее приложение. Так и должно быть
 
Автор
T

Thirteenth

Новичок
Сообщения
8
Репутация
0
Это же стороннее приложение. Так и должно быть
Была такая мысль, тем более что все примеры в справке, связанные с gui, основаны на gui, созданных с помощью Autoit. Но оставалась надежда, что можно каким то методом решить этот вопрос. Имхо колхозно работая со "стандартным" виндовым окном, в котором с помощью AutoitInfo видны все элементы, передавать значения ненадежными способами типа имитации кликов мыши и функций Send(). Может есть какие то еще варианты?
 
Последнее редактирование:

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,673
Репутация
2,486
Возможно, было бы решением отправка сообщения уведомления окну (элементу) что текст изменён.
Точно не помню какое сообщение за это отвечает, нужно поиграться...
 
Верх