При изменении текста основного окна процесса возникает небольшая странность: если вы попытаетесь изменить текст сразу после запуска процесса, он может завершиться неудачей по одной из многих возможных причин (например, дескриптор элемент управления, который отображает текст, не существует во время вызова функции). Поэтому решение состоит в том, чтобы использовать метод WaitForInputIdle()
, прежде чем пытаться изменить текст:
Add-Type -TypeDefinition @"
using System;
using System.Runtime.InteropServices;
public static class Win32Api
{
[DllImport("User32.dll", EntryPoint = "SetWindowText")]
public static extern int SetWindowText(IntPtr hWnd, string text);
}
"@
$process = Start-Process -FilePath "notepad.exe" -PassThru
$process.WaitForInputIdle()
[Win32Api]::SetWindowText($process.MainWindowHandle, "My Custom Text")
Имейте в виду, что само приложение все еще может изменять текст окна после того, как вы внесли свои изменения.