可能有点没说清楚
比如我编写了一个聊天程序。
在操作电脑的人聊天的时候,判断有没有新消息的程序运行的频繁一点。
而当操作电脑的人在使用其它程序的时候,这个聊天程序可以一分钟判断一次有没有新消息,或是更长时间去判断。我是想知道如何判断我的程序是在前台操作中,或是正在最前面,因为可能鼠标键盘都没有操作,但我的程序还是激活状态。

解决方案 »

  1.   

    声明api:
    [DllImport("user32.dll", EntryPoint="GetForegroundWindow")]
    public static extern IntPtr GetForegroundWindow();
    调用判断if(GetForegroundWindow() == this.Handle)
    {
    //自己激活了
    }
    else
    {
    //自己当前没激活
    }
      

  2.   

    [DllImport("user32.dll")] 
    private static extern IntPtr GetForegroundWindow();
    foreach(System.Diagnostics.Process myproc in System.Diagnostics.Process.GetProcessesByName(""))
      {
         if(myproc.MainWindowHandle.ToInt32()==GetForegroundWindow().ToInt32())
         {     }
         else
         {
         }
       }
    GetActiveWindow 获取当前程序中被激活的窗口;
    GetForegroundWindow 获取当前系统中被激活的窗口