我的应用程序使用多个窗口
我想隐藏一个特定的窗口以防应用程序失去焦点(当活动窗口不是应用程序窗口时)源
我正在处理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
如果我的应用程序中的一个新窗口获得焦点并且如果我单击另一个应用程序,我观察到了相同的行为。
当从处理程序调用时,我希望GetActiveWindow
返回新活动窗口的Deactivate
句柄。相反,它总是返回我的应用程序窗口的句柄。
这怎么可能?Deactivate 事件是否“过早”处理?(而主窗体仍然处于活动状态?)。
如何检测我的应用程序失去焦点(我的应用程序窗口不是活动窗口)并且另一个应用程序在没有在计时器上运行 GetActiveWindow 的情况下获得它?