如何在Windows 10中定时更新记录活动窗口标题的TXT文件?
Windows 10 实现每隔1秒记录活动窗口标题到TXT的方案
嘿,这个需求在Windows 10上其实有两个挺实用的实现路径,不用折腾复杂的SDK,都是用现成工具就能搞定:
方案1:用系统自带的PowerShell脚本(无需额外安装软件)
Windows自带的PowerShell就能调用系统API获取窗口标题,完全不用额外装东西。你可以按下面的步骤来:
- 新建一个文本文件,把后缀改成
.ps1(比如WindowTitleLogger.ps1) - 把下面的代码粘贴进去:
# 导入获取窗口信息的系统API Add-Type @" using System; using System.Runtime.InteropServices; public class WindowInfo { [DllImport("user32.dll")] public static extern IntPtr GetForegroundWindow(); [DllImport("user32.dll")] public static extern int GetWindowText(IntPtr hWnd, System.Text.StringBuilder text, int count); } "@ # 初始化上一次窗口标题变量,用于优化写入逻辑 $lastTitle = "" # 循环执行,每隔1秒检查一次 while ($true) { $hWnd = [WindowInfo]::GetForegroundWindow() $sb = New-Object System.Text.StringBuilder 1024 [WindowInfo]::GetWindowText($hWnd, $sb, $sb.Capacity) $windowTitle = $sb.ToString() # 仅当标题变化时才写入文件,减少磁盘操作 if ($windowTitle -ne $lastTitle) { Set-Content -Path "C:\temp\ActiveWindowTitle.txt" -Value $windowTitle -Encoding UTF8 $lastTitle = $windowTitle } # 等待1秒 Start-Sleep -Seconds 1 }
- 修改代码里的TXT文件路径(
C:\temp\ActiveWindowTitle.txt),改成你想要保存的位置,确保目标文件夹已存在(比如先建好C:\temp文件夹) - 运行脚本:右键点击脚本文件,选择“用PowerShell运行”。如果提示执行策略限制,先打开管理员权限的PowerShell,执行
Set-ExecutionPolicy RemoteSigned,按Y确认后再运行脚本。
方案2:用AutoHotkey(更简洁的自动化工具)
如果你觉得PowerShell的代码有点繁琐,可以试试AutoHotkey——这是个免费的Windows自动化工具,语法更轻量化:
- 先安装AutoHotkey(直接搜索就能找到官方安装包,免费下载安装)
- 新建一个
.ahk后缀的文件(比如WindowLogger.ahk) - 粘贴下面的代码:
lastTitle := "" Loop { ; 获取当前活动窗口的标题 WinGetTitle, activeTitle, A ; 仅当标题变化时更新文件 if (activeTitle != lastTitle) { FileDelete, C:\temp\ActiveWindowTitle.txt FileAppend, %activeTitle%, C:\temp\ActiveWindowTitle.txt, UTF-8 lastTitle := activeTitle } ; 等待1秒 Sleep, 1000 }
- 修改TXT文件路径后,双击
.ahk文件就能运行,它会在后台默默执行。如果想让它开机自启,把这个脚本文件拖到“启动”文件夹即可(按下Win+R输入shell:startup就能打开该文件夹)。
小提示
- 两个方案都默认只在窗口标题变化时才写入文件,既满足“始终记录当前标题”的需求,又能减少不必要的磁盘写入
- 如果想要强制每秒写入一次,删掉代码里的标题对比逻辑即可
内容的提问来源于stack exchange,提问作者RobotUnderscore
相关产品推荐
相关产品推荐

