当窗口标题以星号*开头时如何使用AppActivate激活窗口
解决Notepad2修改后窗口激活问题的简便技巧
你可以通过匹配进程而非窗口标题前缀的方式,绕过星号导致的激活失败问题,代码量很小,不需要复杂逻辑:
方案:通过进程ID精准激活
# 筛选出标题包含目标文件名的Notepad2进程 $targetProc = Get-Process -Name Notepad2 | Where-Object { $_.MainWindowTitle -like "*_TEST_FILE*" } if ($targetProc) { # 用进程ID激活窗口,不受标题前缀星号影响 [Microsoft.VisualBasic.Interaction]::AppActivate($targetProc.Id) [System.Windows.Forms.SendKeys]::SendWait("^a") }
这个方法的优势:
- 不管窗口标题是
_TEST_FILE.txt - Notepad2还是*_TEST_FILE.txt - Notepad2,只要标题里包含目标文件名就能匹配到 - 代码仅比原来多两行,完全符合你“少写代码”的需求
补充简化技巧
如果你的系统里只会打开一个Notepad2窗口处理目标文件,还能进一步简化:
[Microsoft.VisualBasic.Interaction]::AppActivate((Get-Process Notepad2).Id) [System.Windows.Forms.SendKeys]::SendWait("^a")
内容的提问来源于stack exchange,提问作者Doofus
相关产品推荐
相关产品推荐

