Send-Message

Отправить сообщение окну и дождаться ответа когда приложение обработает его.
Параметры

  • -hWnd Хендл окна (HWND)

  • -Msg Сообщение, которое нужно отправить

  • -wParam Дополнительная информация, касающаяся конкретного сообщения. По умолчанию 0.

  • -lParam Дополнительная информация, касающаяся конкретного сообщения. По умолчанию 0.

  • -rType Тип возвращаемого значения.

Примеры

  1. Найти окно блокнота и свернуть его.

    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
  2. Найти окно блокнота и переименовать его.

    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 "Новое имя окна"
  3. Найти окно блокнота и изменить текст в редакторе.

    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 "Этот текст будет вставлен в блокнот"
  4. Найти окно блокнота и напечатать 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