可能有点没说清楚
比如我编写了一个聊天程序。
在操作电脑的人聊天的时候,判断有没有新消息的程序运行的频繁一点。
而当操作电脑的人在使用其它程序的时候,这个聊天程序可以一分钟判断一次有没有新消息,或是更长时间去判断。我是想知道如何判断我的程序是在前台操作中,或是正在最前面,因为可能鼠标键盘都没有操作,但我的程序还是激活状态。
比如我编写了一个聊天程序。
在操作电脑的人聊天的时候,判断有没有新消息的程序运行的频繁一点。
而当操作电脑的人在使用其它程序的时候,这个聊天程序可以一分钟判断一次有没有新消息,或是更长时间去判断。我是想知道如何判断我的程序是在前台操作中,或是正在最前面,因为可能鼠标键盘都没有操作,但我的程序还是激活状态。
[DllImport("user32.dll", EntryPoint="GetForegroundWindow")]
public static extern IntPtr GetForegroundWindow();
调用判断if(GetForegroundWindow() == this.Handle)
{
//自己激活了
}
else
{
//自己当前没激活
}
private static extern IntPtr GetForegroundWindow();
foreach(System.Diagnostics.Process myproc in System.Diagnostics.Process.GetProcessesByName(""))
{
if(myproc.MainWindowHandle.ToInt32()==GetForegroundWindow().ToInt32())
{ }
else
{
}
}
GetActiveWindow 获取当前程序中被激活的窗口;
GetForegroundWindow 获取当前系统中被激活的窗口