Что нового

Активация нужной закладки. Прошу помочь новичку.

M_Kungurtsev

Новичок
Сообщения
7
Репутация
0
Добрый день.
Задача - получить количество используемых лицензий из окна менеджера лицензий.
Это проблемы не вызвало. Проблему вызывает активация нужной закладки.
Через Window Info определяю свойства окна закладок:
info.png
Дальше пытаюсь перемещаться в окне стрелками или ТАБом, определить количество закладок, перейти по номеру, найти закладку по тексту:
Код:
#include <GuiTab.au3>
$hWnTitle = WinGetTitle("ETAP")
ConsoleWrite(@ScriptLineNumber & ' $hWnTitle = ' & $hWnTitle & @CRLF)
$hTab = ControlGetHandle($hWnTitle, "", "[CLASS:WindowsForms10.SysTabControl32.app.0.34f5582_r32_ad1; INSTANCE:1]")
ConsoleWrite(@ScriptLineNumber & ' $hTab = ' & $hTab & @CRLF)
;$hTab1 = WinWait("License")
;ConsoleWrite(@ScriptLineNumber & ' $hTab1 = ' & $hTab1 & @CRLF)
$act = WinActivate(WinWait("ETAP"))
Send('{TAB}')
Sleep(10000)
Send('{RIGHT}')
Sleep(10000)
ConsoleWrite(@ScriptLineNumber & ' $act = ' & $act & @CRLF)
$kol = _GUICtrlTab_GetItemCount($hTab)
ConsoleWrite(@ScriptLineNumber & ' $kol = ' & $kol & @CRLF)
 _GUICtrlTab_ActivateTab($hTab, 2)
 $find = _GUICtrlTab_FindTab($hTab, "License")
 ConsoleWrite(@ScriptLineNumber & ' $find = ' & $find & @CRLF)
 _GUICtrlTab_ClickTab($hTab, 1)

Получается только активация основного окна. Остальное - не получается:
3 $hWnTitle = ETAP License Manager Configuration 20.0.0.20152
5 $hTab = 0x00481010
13 $act = 0x000A0DD4
15 $kol = 0
18 $find = -1

Прошу подсказать - в чем тут дело и как правильно работать с закладками.
Заранее благодарен.
 
Автор
M

M_Kungurtsev

Новичок
Сообщения
7
Репутация
0
Попробуйте
Код:
#RequireAdmin
Спасибо. Действительно помогло. Но при запуске из редактора появляется окно на разрешение... В скомпилированном оно тоже будет? Мне еще сам менеджер лицензий через RUN надо будет запускать. Сработает молча если запускается от пользователя-админа или еще подтверждение в окне запроса надо будет прописать?
 

InnI

AutoIT Гуру
Сообщения
4,951
Репутация
1,446
при запуске из редактора появляется окно на разрешение
Запустите редактор с правами администратора и окно запроса повышения прав при запуске скрипта из редактора появляться не будет.

В скомпилированном оно тоже будет?
Да, конечно.

через RUN надо будет запускать
Если программе нужны права администратора, то через RUN без #RequireAdmin вы эту программу просто не запустите. А с #RequireAdmin скрипт запросит повышения прав так же, как запуск программы из проводника. Но работать с окном повышения прав из скрипта не получится.
 
Автор
M

M_Kungurtsev

Новичок
Сообщения
7
Репутация
0
Если программе нужны права администратора, то через RUN без #RequireAdmin вы эту программу просто не запустите. А с #RequireAdmin скрипт запросит повышения прав так же, как запуск программы из проводника. Но работать с окном повышения прав из скрипта не получится.
Код:
#RequireAdmin
#include <GuiTab.au3>
Run(@ProgramFilesDir & "\Operation Technology Inc\ETAP License Manager\" & "ETLMConsole.exe", "", @SW_MAXIMIZE)

Программа без админ прав запускается, но работает не полностью.
Запускаю как написано в коде выше, но менеджер лицензий пишет: No Administrator rights!
Код:
#RequireAdmin

Относится только к скрипту, на запускаемую дочернюю программу не распространяется?

И второе.
Если будет окно повышения прав с которым не получится работать, то запустить скрипт через планировщик совсем нет шансов?
 

InnI

AutoIT Гуру
Сообщения
4,951
Репутация
1,446
Запускаю как написано в коде выше, но менеджер лицензий пишет: No Administrator rights!
Окно запроса на повышение прав появляется?
Попробуйте запускать через
Код:
ShellExecute()


Относится только к скрипту, на запускаемую дочернюю программу не распространяется?
Права наследуются. Если у скрипта права администратора, то все запускаемые им программы будут иметь эти же права.

запустить скрипт через планировщик совсем нет шансов?
Ну, почему же? Просто включите в планировщике нужную опцию. Только для включения этой опции нужны будут права администратора.
 
Автор
M

M_Kungurtsev

Новичок
Сообщения
7
Репутация
0
Окно запроса на повышение прав появляется?
Да.
Попробуйте запускать через
Код:
ShellExecute()
А вот так получилось. Только "C:\Program Files" пришлось явно прописать - он в х86 ищет.
Права наследуются. Если у скрипта права администратора, то все запускаемые им программы будут иметь эти же права.
Вот для RUN почему-то не сработало.
Ну, почему же? Просто включите в планировщике нужную опцию. Только для включения этой опции нужны будут права администратора.
Спасибо, попробую.
 

InnI

AutoIT Гуру
Сообщения
4,951
Репутация
1,446
А вот так получилось. Только "C:\Program Files" пришлось явно прописать - он в х86 ищет
Возможно, в RUN тоже нужно было так прописать. Макрос @ProgramFilesDir зависит от способа запуска скрипта - х64 или х86.
 
Автор
M

M_Kungurtsev

Новичок
Сообщения
7
Репутация
0
Но работать с окном повышения прав из скрипта не получится.
Добрый день. Можете объяснить причину? В каком случае скрипт, запускаемый через планировщик не работает с окнами? В любом случае, если сам активирует окно?
Это часть моей проблемы, описанной в другой теме: "Запуск скрипта через планировщик..."
 

InnI

AutoIT Гуру
Сообщения
4,951
Репутация
1,446
В каком случае скрипт, запускаемый через планировщик не работает с окнами?
Могу только сказать, когда точно работает. На вкладке "Общие" выбираете учётную запись пользователя-администратора, включаете "Выполнять только для зарегистрированного пользователя" и "Выполнить с наивысшими правами". А в качестве триггера выбираете "При входе в систему" того пользователя, профиль которого выбран на вкладке "Общие".
 
Автор
M

M_Kungurtsev

Новичок
Сообщения
7
Репутация
0
Могу только сказать, когда точно работает. На вкладке "Общие" выбираете учётную запись пользователя-администратора, включаете "Выполнять только для зарегистрированного пользователя" и "Выполнить с наивысшими правами". А в качестве триггера выбираете "При входе в систему" того пользователя, профиль которого выбран на вкладке "Общие".
Вопрос немного не о том... То, что запускается от "зарегистрированного пользователя" я экспериментальным путем вычислил (хотя это и рушит всю мою задумку). Но я не понимаю - почему скрипт, запущенный без планировщика спокойно переходит по закладкам и читает данные, а запущенный из под планировщика виснет на первой закладке. Можете по этому багу подсказать? Код в ссылке из предыдущего поста.
 
Верх