1

Можно ли заставить PowerShell написать что-то в окне, то есть где бы ни приземлялась мышь, она записывает это в этом окне, если это веб-браузер - приложение и т.д.?

Я думаю о попытке сделать сценарий, который будет читать то, что указано в запросе, а затем идти оттуда.

Это будет выглядеть примерно так:

$test = "write this text"

Add-Type -TypeDefinition $cSource -ReferenceAssemblies System.Windows.Forms,System.Drawing

  Start-Sleep -Seconds 1

[Clicker]::LeftClickAtPoint(900,900)

  Start-Sleep -Seconds 1
Write-Content "$test"

Я не могу узнать, существует ли командлет для этого.

1 ответ1

2

То, что вы просите здесь, это автоматизация графического интерфейса. Это не целевой вариант использования для PS. Таким образом, для этого нет встроенного командлета и командлета или функции с именем Write-Content. Шкаф, который вы можете получить самостоятельно, это использовать старую опцию SendKeys.

# Send output to Notepad and view it wihtout creating a file first.
# Start notepad
Notepad 

# Get a list of servics and put on the clipboard
Get-Service | Clip

# Put the clipboard content in the notepad instance
## .NET:
[void][reflection.assembly]::loadwithpartialname("system.windows.forms")
[system.windows.forms.sendkeys]::sendwait('^v')

Тем не менее, это на самом деле не надежно, потому что разные процессоры, графические карты и действительно мешают пытаться использовать его последовательно на разных платформах. Был там, сделал это, и все еще делаю это для небольшого локального хоста, где я абсолютно знаю, как это будет течь.

Существуют модули, которые вы можете загрузить и использовать для помощи в автоматизации графического интерфейса ...

https://archive.codeplex.com/?p=wasp

https://archive.codeplex.com/?p=uiautomation

… И являются инструментами 3P, такими как AutoIT.

Несмотря на это, у вас все еще будет проблема работы, чтобы выяснить, в какое окно вы пытаетесь попасть, позиции элементов пользовательского интерфейса и т.д. Для такого рода вещей требуется C # и другие вызовы API, чтобы убедиться, что вы можете добраться до этого. ,

Есть множество дискуссий о таких усилиях по всей сети, а также о боли / неудаче / успехах, пережитых на этом пути. Просто выполните поиск по «PowerShell SendKeys» или «PowerShell GUI автоматизация», и вы сразу увидите это.

Наконец, все эти графические элементы, где вы пытаетесь работать с событиями щелчка мышью, событиями наведения мыши, событиями наведения мыши и т.д., Действительно возможны только для приложения, которое вы написали лично, в большинстве случаев, если только поставщики приложений не предоставили / не предоставили Информация API для этого.

Вот ТАКОЕ обсуждение, которое подчеркивает то, что я здесь говорю, и должно вас заинтересовать.

Как я могу отправить щелчок мыши в powershell

https://stackoverflow.com/questions/39353073/how-i-can-send-mouse-click-in-powershell

Обновление за комментарий / запрос

Не волнуйтесь.

Codeplex существует уже давно, но больше не занимается какой-либо деятельностью. Отсюда и материал архива. Все содержимое Codeplex было скопировано / размещено на GitHub и в подобных местах.

Какой модуль вы после загрузки?

В идеале, вы хотите, чтобы это было в вашем модуле профиля пользователя ...

C:\Users\YourUserName\Documents\WindowsPowerShell\Modules

.. но вы можете положить его в обоих.

Иногда у меня модуль не загружается автоматически, как ожидалось, поэтому я просто вручную загружаю их через конфигурацию профиля или через скрипт, который будет использовать модуль.

Import-Module -Name ModuleName

Или же

Import-Module -Name C:\Users\YourUserName\Documents\WindowsPowerShell\Modules\ModuleName

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .