1 回答
TA贡献1842条经验 获得超12个赞
您可以WM_ACTIVATEAPP在主表单中处理并获得有关激活或停用应用程序的通知:
private const int WM_ACTIVATEAPP = 0x1C;
protected override void WndProc(ref Message m)
{
if (m.Msg == WM_ACTIVATEAPP)
{
if (m.WParam == IntPtr.Zero)
BeginInvoke(new Action(() => { Text = "Deactivated"; }));
else
BeginInvoke(new Action(() => { Text = "Activated"; }));
}
base.WndProc(ref m);
}
注意:正如 Hans 在评论中已经提到的,使用上述选项时,应注意不要陷入死锁和无限循环。确保您阅读了评论。
Activate作为另一种选择,您还可以通过处理和Deactivate事件检测每个表单的激活或停用。当表单停用时,您可以通过检查是否Form.ActiveForm有值来检查应用程序是否仍在前台:
private void f_Deactivate(object sender, EventArgs e)
{
BeginInvoke(new Action(() =>
{
if (Form.ActiveForm == null)
Text = "App Deactivated"; //App deactivated
else
Text = "Still Active"; //App is still active
}));
}
- 1 回答
- 0 关注
- 186 浏览
添加回答
举报