关于本文
本文是通过利用生成式 AI 的自动化生成流程创建的。以 Microsoft Learn 的 Window Handles 和 .NET Process.MainWindowHandle 为标准,整理为不操作其他应用程序的只读实验。
验证状态:已确认微软官方规范,未在 Windows 实机上验证
Windows API 文章中出现的 HWND 是用于识别窗口的句柄。在 PowerShell 中,也可以从读取拥有画面的进程的 MainWindowHandle 开始接触它。
成功条件
如果在同一行中显示进程名、PID、窗口标题和 HWND,则表示成功。
Get-Process | Where-Object MainWindowHandle -ne 0 | Select-Object ProcessName, Id, MainWindowTitle, MainWindowHandle
MainWindowHandle = 0 排除该进程后,将更容易观察拥有主窗口的进程。
也以十六进制查看 HWND
在 Win32 资料中,有时需要以十六进制表示法查看句柄。Daily-Code 版本同时显示十进制和十六进制。
修改一处
自己启动一个记事本等程序后重新运行。确认拥有新窗口的进程是否出现在列表中。
Process 和 Window 不等同
一个进程可能拥有多个窗口,也可能存在没有画面的进程。MainWindowHandle 并不是枚举所有 Win32 窗口的替代方案。这是学习下一步 EnumWindows 等内容的入口。
如果在工作中应用
它将成为理解 GUI 自动化、窗口状态确认以及 Win32 API 学习中“以哪个窗口为目标”的基础。
注意事项
请勿将 HWND 保存为持久 ID。它并不是能保证在窗口生命周期之外依然指向同一对象的标识符。

