Send-Message
Отправить сообщение окну и дождаться ответа когда приложение обработает его.
Параметры
-hWnd Хендл окна (HWND)
-Msg Сообщение, которое нужно отправить
-wParam Дополнительная информация, касающаяся конкретного сообщения. По умолчанию 0.
-lParam Дополнительная информация, касающаяся конкретного сообщения. По умолчанию 0.
-rType Тип возвращаемого значения.
Примеры
Найти окно блокнота и свернуть его.
Wake up, Neo, select all
Clear-Host
$WM_SYSCOMMAND = 0x0112
$SC_MINIMIZE = 0xF020
$h = Find-Window -Title "блокнот" # найти окно, в имени которого содержится слово блокнот
if(!$h){ # если окно не найдено
Write-Host "Окно не найдено" -ForegroundColor Red
Stop-Script # остановить скрипт
}
Send-Message $h.handle[0] -Msg $WM_SYSCOMMAND -wParam $SC_MINIMIZEНайти окно блокнота и переименовать его.
Wake up, Neo, select all
Clear-Host
$WM_SETTEXT = 0x000C
try{
$process = Get-Process notepad -ErrorAction Stop
}
catch{
Write-Host "Процесс не найден" -ForegroundColor Red
Stop-Script
}
Write-Host "Процесс найден" -ForegroundColor Green
Send-Message $process.MainWindowHandle $WM_SETTEXT -lParam "Новое имя окна"Найти окно блокнота и изменить текст в редакторе.
Wake up, Neo, select all
Clear-Host
$WM_SETTEXT = 0x000C
try{
$process = Get-Process notepad -ErrorAction Stop # найти окно блокнота
}
catch{
Write-Host "Процесс не найден" -ForegroundColor Red
Stop-Script
}
Write-Host "Процесс найден" -ForegroundColor Green
# найти хендл окна редактора блокнота
$edit = Get-ChildWindows $process.MainWindowHandle | Where-Object {$_.Class -eq "Edit"}
Send-Message $edit.Handle $WM_SETTEXT -lParam "Этот текст будет вставлен в блокнот"Найти окно блокнота и напечатать 3 буквы Z.
Wake up, Neo, select all
Clear-Host
$WM_CHAR = 0x0102
try{
$process = Get-Process notepad -ErrorAction Stop # найти окно блокнота
}
catch{
Write-Host "Процесс не найден" -ForegroundColor Red
Stop-Script
}
Write-Host "Процесс найден" -ForegroundColor Green
# найти хендл окна редактора блокнота
$edit = Get-ChildWindows $process.MainWindowHandle | Where-Object {$_.Class -eq "Edit"}
$symbol = "Z" # символ, который нужно напечатать
Send-Message $edit.Handle -Msg $WM_CHAR -wParam ([int][char]$symbol) -lParam 3