Вопрос по лекции 7, где рассматривается взаимодействие со сторонними программами, в том числе эмуляция нажатия кнопок клавиатуры WshShell.SendKeys. Вопрос в том что во время автоматизации может потребоваться не нажатие клавиатуры, а нажатие кнопок в сообщениях этих программ. Можно вытащить информацию о объекте (кнопке) скажем с помощью AutoIt Info, или ориентироваться скажем на текст на кнопке..., но как на эту кнопку нажать? (без обхода по клавиатуре) |
Структура классов WMI
Методы классов WMI
Методы класса позволяют выполнять те или иные действия над управляемым ресурсом, которому соответствует этот класс (так как не над каждым ресурсом можно производить какие-либо операции, то не у всякого класса есть методы). В табл. 11.3 и 11.4 описаны, например, методы, которые имеются у классов Win32_Service (службы Windows) и Win32_Process (процессы Windows).
Метод | Описание |
---|---|
StartService() | Запускает службу |
StopService() | Остановливает службу |
PauseService() | Приостановливает службу |
ResumeService() | Возобновляет работу службы |
UserControlService(n) | Посылает службе заданный пользователем код n (число от 128 до 255) |
Create(Name, DisplayName, PathName, ServiceType, ErrorControl, StartMode, DesktopInteract, StartName, StartPassword, LoadOrderGroup, LoadOrderGroupDependencies, ServiceDependencies) | Создает службу |
Change(DisplayName, PathName, ServiceType, ErrorControl, StartMode, DesktopInteract, StartName, StartPassword, LoadOrderGroup, LoadOrderGroupDependencies, ServiceDependencies) | Изменяет параметры службы |
ChangeStartMode(StartMode) | Изменяет тип загрузки службы. Символьный параметр StartMode может принимать следующие значения: Boot (применяется только при загрузке служб для драйверов), System (применяется только при загрузке служб для драйверов), Auto (служба загружается автоматически), Manual (служба может быть запущена вручную), Disabled (службу запустить нельзя) |
Delete() | Удаляет существующую службу |
Таким образом, методы класса Win32_Service позволяют изменять значения некоторых свойств этого класса и выполнять манипуляции над конкретной службой: запускать ее, приостанавливать, останавливать и т. д.
Перейдем к рассмотрению методов класса Win32_Process, которые описаны в табл. 11.4.
Таким образом, методы класса Win32_Process позволяют выполнять над процессами те же действия, которые можно осуществить в Диспетчере задач Windows с помощью контекстного меню, появляющегося после щелчка правой кнопкой мыши над выделенным процессом в списке (см. рис. 11.5), и кнопки Завершить процесс (Terminate process).
Квалификаторы классов, свойств и методов
В WMI для классов, свойств и методов можно задать так называемые квалификаторы (qualifiers). Квалификаторы содержат дополнительную информацию о том классе, свойстве или методе, в котором они определены.
Квалификаторы классов
Квалификаторы классов предоставляют информацию о классе в целом. Например, тип класса описывает квалификаторы логического типа CIM_BOOLEAN с именами abstract (абстрактный класс), dynamic (динамический класс) и association (ассоциативный класс).
Один и тот же класс в различных операционных системах может иметь разное количество квалификаторов (версия WMI, поставляемая с Windows XP, соответствует спецификации CIM 2.5, а версии WMI в Windows 2000 и ниже – спецификации CIM 2.0). Для примера в таблице 11.5. приведено описание квалификаторов для класса Win32_Service в Windows XP.
Класс Win32_Process позволяет создавать новые процессы и завершать уже существующие, поэтому в данном классе появляется несколько новых квалификаторов (табл. 11.6).
Квалификаторы свойств
Квалификаторы свойств позволяют определить тип данного свойства (квалификатор CIMType ), доступность его для чтения (квалификатор Read ) и записи (квалификатор Write ) и т. п. Для примера в табл. 11.7 приведено описание квалификаторов свойства ServiceType класса Win32_Service (напомним, что это свойство описывает тип службы).
Замечание
Напрямую с помощью метода Put_() можно изменять значения только тех свойств, у которых имеется квалификатор write со значением true.
Квалификаторы методов
Квалификаторы методов могут описывать множество допустимых значений, которые будут возвращаться методом (квалификатор ValueMap ), указывать права, которыми необходимо обладать для вызова метода (квалификатор Privileges ) и т. п. Для примера в табл. 11.8 приведено описание квалификаторов метода Create класса Win32_Process (напомним, что этот метод используется для запуска в системе нового процесса).
Квалификатор | Тип | Значение | Описание |
---|---|---|---|
Constructor | CIM_BOOLEAN | True | Указывает на то, что данный метод используется для создания экземпляров класса |
Implemented | CIM_BOOLEAN | True | Указывает на то, что данный метод реализован в провайдере |
MappingStrings | CIM_STRING | CIM_FLAG_ARRAY | Win32API| Process and Thread Functions| CreateProcess | Множество значений (ключевых слов), по которым можно найти дополнительную информацию о данном методе |
Privileges | CIM_STRING | CIM_FLAG_ARRAY | SeAssignPrimaryTokenPrivilege, SeIncreaseQuotaPrivilege | Перечисляет права, необходимые для выполнения данного метода |
Static | CIM_BOOLEAN | True | Указывает на то, что данный метод не может быть вызван из экземпляра класса |
ValueMap | CIM_STRING | CIM_FLAG_ARRAY | 0, 2, 3, 8, 9, 21, .. | Набор возвращаемых данным методом значений |
Замечание
Выполнять можно только те методы, у которых имеется квалификатор Implemented со значением True.