1.撰写取得目前视窗title
先取目前画面,再用目前画面去取title
2.测试
using System.Runtime.InteropServices;
[DllImport("User32.dll")] private static extern IntPtr GetForegroundWindow();//取得目前画面视窗 [DllImport("user32.dll")] static extern int GetWindowText(IntPtr hWnd,System.Text. StringBuilder text, int count);//取视窗title
先取目前画面视窗,再用视窗去取title
private string GetActiveWindowTitle() { const int nChars = 256; System.Text.StringBuilder Buff = new System.Text.StringBuilder(nChars); IntPtr handle = GetForegroundWindow(); if (GetWindowText(handle, Buff, nChars) > 0) { return Buff.ToString(); } return null; }
测试
1.加入timer & 记录focus widow Title
2.run
3.点视窗A,点视窗B,点视窗C,关闭程式
4.查看log,是否记录视窗A,点视窗B,点视窗C的title
private System.Timers.Timer _TimersTimer; protected void Page_Load(object sender, EventArgs e) { this._TimersTimer = new System.Timers.Timer(); this._TimersTimer.Interval = 100; this._TimersTimer.Elapsed += new System.Timers.ElapsedEventHandler(_TimersTimer_Elapsed); this._TimersTimer.Start(); } void _TimersTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { string ret = GetActiveWindowTitle(); logP(ret); } //log private void logP(string str) { string filename = @"c:\log.log"; if (System.IO.File.Exists(filename) == false) { System.IO.FileStream fileStream = new System.IO.FileStream(filename, System.IO.FileMode.Create); fileStream.Close(); //切记开了要关,不然会被佔用而无法修改喔!!! } using (System.IO.StreamWriter file = new System.IO.StreamWriter(filename, true)) { file.WriteLine(DateTime.Now.ToString("yyyyMMdd HH:mm:ss:fff") + " " + str); } }