1 回答

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超13個(gè)贊
您可以WM_ACTIVATEAPP在主表單中處理并獲得有關(guān)激活或停用應(yīng)用程序的通知:
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 在評(píng)論中已經(jīng)提到的,使用上述選項(xiàng)時(shí),應(yīng)注意不要陷入死鎖和無限循環(huán)。確保您閱讀了評(píng)論。
Activate作為另一種選擇,您還可以通過處理和Deactivate事件檢測每個(gè)表單的激活或停用。當(dāng)表單停用時(shí),您可以通過檢查是否Form.ActiveForm有值來檢查應(yīng)用程序是否仍在前臺(tái):
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 關(guān)注
- 211 瀏覽
添加回答
舉報(bào)