Я пытаюсь определить, является ли HTA окном переднего плана. Следующий PowerShell обычно идентифицирует окно переднего плана:
Add-Type @"
using System;
using System.Runtime.InteropServices;
public class UserWindows {
[DllImport("user32.dll")]
public static extern IntPtr GetForegroundWindow();
}
"@
$a = [UserWindows]::GetForegroundWindow()
get-process | ? { $_.mainwindowhandle -eq $a }
Но если HTA находится на переднем плане, процесс ни один не возвращается. (Т.е. есть MainWindowHandle, но нет процесса!?)
Процесс MSHTA имеет совершенно другой MainWindowHandle, но не имеет окна.
Process Hacker идентифицирует окно HTA (фрейм или содержимое) как процесс mshta.
Как с помощью скрипта сопоставить окно HTA и mshta.exe? В качестве альтернативы, как я могу получить MainWindowHandle окна HTA, не зная, находится ли оно впереди?