首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

Visual C# 彈出視窗攔截器(二):最小化至系統匣、右鍵選單與 Timer 定時掃描

     編輯:關於C語言

最小化至系統匣而非關閉

protected override void OnClosing(CancelEventArgs e)
{
    e.Cancel = true;  // 取消關閉
    this.WindowState = FormWindowState.Minimized;
    this.Hide();      // 隱藏工作列按鈕
}

系統匣右鍵選單 - 退出功能

private void menu_App_Exit(object sender, EventArgs e)
{
    NativeWIN32.UnregisterHotKey(Handle, 100);
    notifyIcon1.Visible = false;
    Application.Exit();
}

右鍵選單動態啟用/停用

private void menu_App_BeforePopup(object sender, EventArgs e)
{
    if (this.WindowState == FormWindowState.Minimized)
    {
        App_Show.Enabled = true;
        App_Hide.Enabled = false;
    }
    else
    {
        App_Show.Enabled = false;
        App_Hide.Enabled = true;
    }
}

Timer 定時掃描彈出視窗

m_Timer = new System.Timers.Timer();
m_Timer.Elapsed += OnTimerKillPopup;
m_Timer.Interval = 3000;  // 3 秒
m_Timer.Enabled = true;

protected void OnTimerKillPopup(object sender, ElapsedEventArgs e)
{
    m_Timer.Enabled = false;  // 暫停避免重入
    FindPopupToKill();        // 掃描並關閉彈出視窗
    m_Timer.Enabled = true;   // 恢復
}

設計要點

  • 系統匣常駐:ShowInTaskbar = false、notifyIcon.Visible = true
  • 右鍵選單:工具箱拖曳 ContextMenu,滑鼠右鍵自動彈出
  • Timer 選擇:System.Timers.Timer (伺服器型) 適合背景作業,非 Windows.Forms.Timer
  • 重入防護:執行掃描前暫停 Timer,完成後恢復
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved