我正在尝试获取活动标题栏并测试它是否等于某个值,我打开一个新的浏览器窗口。我在计时器刻度事件
中使用了下面的代码问题是,在每个计时器刻度上,Process.Start将运行两次,这意味着我看到两个firefox窗口打开页面www.googlepromo.com。
public static void timerTick()
{
foreach (string s in ttlkeywords) {
if ((GetActiveWindowTitle().Contains(s)) && s.Length>2)
{
System.Diagnostics.Process.Start("http://www.googlepromo.com");
Thread.Sleep(60000);
}
}
}
以下功能是我用来获取活动标题栏的功能。我不认为问题出在下面的函数中,但无论如何我都写了:
// Detect active windows Title Bar
[DllImport("user32.dll")]
static extern IntPtr GetForegroundWindow();
[DllImport("user32.dll")]
static extern int GetWindowText(IntPtr hWnd, StringBuilder text, int count);
private static string GetActiveWindowTitle()
{
const int nChars = 256;
IntPtr handle = IntPtr.Zero;
StringBuilder Buff = new StringBuilder(nChars);
handle = GetForegroundWindow();
if (GetWindowText(handle, Buff, nChars) > 0)
{
return Buff.ToString();
}
return null;
}
计时器:
Timer timer = new Timer();
timer.Interval = 5000;
timer.OnTimerTick += timerTick;
Thread timerThread = timer.Start();
timer.Run();
有人可以解释为什么浏览器窗口运行两次而不是一次吗?