为什么这段代码会运行两次?

时间:2013-12-25 13:56:36

标签: c#

我正在尝试获取活动标题栏并测试它是否等于某个值,我打开一个新的浏览器窗口。我在计时器刻度事件

中使用了下面的代码

问题是,在每个计时器刻度上,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();

有人可以解释为什么浏览器窗口运行两次而不是一次吗?

0 个答案:

没有答案