#powershell #winforms #sendkeys
Вопрос:
Я пытаюсь создать функцию, которая позволяет мне привязываться к определенному окну (которое уже открыто) и получать размеры окна, а также отправлять в окно щелчки мыши или нажатия клавиш. Я пытаюсь создать форму Windows, в которой я мог бы запускать другую программу «внутри». Я хочу иметь возможность изменять размер окна приложения, которое уже открыто, в саму форму, и когда что-то делается в форме, оно отправляет команды в другое окно. Например, одна сторона будет формой ввода, а другая-устаревшим настольным приложением, которое не позволяет копировать вставку. Когда в форме ввода была нажата кнопка «Отправить», были бы некоторые проверки целостности данных (для удаления любых неверных символов из формы ввода), а затем она выполняла бы отправку ключей или что-то в этом роде в окно, которое было «привязано» внутри формы.
Может ли кто-нибудь указать мне на пример такого рода процесса привязки? Я хотел бы также масштабировать форму и изменить размер другого окна на основе изменения размера родительской формы, поэтому любые примеры функций были бы чрезвычайно полезны.
Я использую найденный фрагмент кода, который позволяет мне привязывать дочернее окно и управлять им:
function Set-WindowStyle {
param(
[Parameter()]
[ValidateSet('FORCEMINIMIZE', 'HIDE', 'MAXIMIZE', 'MINIMIZE', 'RESTORE',
'SHOW', 'SHOWDEFAULT', 'SHOWMAXIMIZED', 'SHOWMINIMIZED',
'SHOWMINNOACTIVE', 'SHOWNA', 'SHOWNOACTIVATE', 'SHOWNORMAL')]
$Style = 'SHOW',
[Parameter()]
$MainWindowHandle = (Get-Process -Id $pid).MainWindowHandle
)
$WindowStates = @{
FORCEMINIMIZE = 11; HIDE = 0
MAXIMIZE = 3; MINIMIZE = 6
RESTORE = 9; SHOW = 5
SHOWDEFAULT = 10; SHOWMAXIMIZED = 3
SHOWMINIMIZED = 2; SHOWMINNOACTIVE = 7
SHOWNA = 8; SHOWNOACTIVATE = 4
SHOWNORMAL = 1
}
Write-Verbose ("Set Window Style {1} on handle {0}" -f $MainWindowHandle, $($WindowStates[$style]))
[Win32Functions.Win32ShowWindowAsync]::ShowWindowAsync($MainWindowHandle, $WindowStates[$Style]) | Out-Null
}
и все это, кажется, работает, но я не могу понять, как привязать/отправить ключи/изменить размер окна. Я заглянул в модуль WASP в галерее psg, но, похоже, он больше не работает.