我的应用程序使用多个窗口
我希望在应用程序失去焦点(即活动窗口不是应用程序窗口时)隐藏一个特定的窗口 来源
我正在处理主窗体的Deactivate
事件。
private void MainForm_Deactivate(object sender, EventArgs e)
{
Console.WriteLine("deactivate");
if (GetActiveWindow() == this.Handle)
{
Console.WriteLine("isactive=true");
}
else
{
Console.WriteLine("isactive=false");
}
}
[DllImport("user32.dll")]
static extern IntPtr GetActiveWindow();
输出总是
deactivate
isactive=true
如果我的应用程序中的新窗口获得焦点,或者我点击其他应用程序,我会观察到相同的行为。
当从Deactivate
处理程序调用时,我期望GetActiveWindow
返回新活动窗口的句柄。但它总是返回我的应用程序窗口的句柄。
这怎么可能?Deactivate
事件被处理得“太早”了吗?(在主窗体仍处于活动状态时?)
如何检测我的应用程序失去了焦点(我的应用程序窗口不是活动窗口),另一个应用程序获得了焦点,而不必定时运行GetActiveWindow
?