.NET (C#) 窗口最小化事件

问题描述 投票:0回答:3

嘿,我真的被我的项目困住了......我需要知道任何打开的窗口何时被最小化/恢复并在我自己的应用程序中处理事件。有什么想法吗?

编辑: Musigenesis 是对的,我确实想知道其他应用程序何时最小化/恢复

c# window minimize
3个回答
6
投票

我认为您需要使用 SetWindowsHookEx Win32 API 函数(以及其他一些函数)。基本上,您将遍历操作系统中所有打开的窗口并挂钩它们的大小调整事件。

强制性评论:您确定需要这样做吗?虽然我认为这在理论上是可能的,但这听起来是一个非常糟糕的主意,并且与 Windows 中应用程序的行为方式背道而驰。

更新:我认为 Windows 中的“显示桌面”的工作方式有点像这样,只不过它会遍历所有打开的窗口,然后使用 SendMessage 将它们最小化(如果打开的话)(完全是我的猜测)。

更新2:这是一个艰难的任务,我很好奇如何做到这一点(我100%确定它可能)。我会密切关注这个问题,如果没有人在接下来的一两天内给出答案,我会再次发布它并提供赏金(你可以这样做,但你需要有一些您自己的声誉点可以作为赏金提供)。


2
投票

假设您使用的是 Windows 窗体,您可以处理

OnSizeChanged
事件,并测试
WindowState


0
投票
//For cases where you create the window such as:
  protected         Form           gv_AO_frmControlWindow = null;
    gv_AO_frmControlWindow = new Form();
    * * * code to add buttons and such
  // Add handler that is executed when window is minimized/maximized
  gv_AO_frmControlWindow.Resize += new EventHandler(gv_AO_frmControlWindow_Resize);
  gv_AO_frmControlWindow.ShowInTaskbar = false;
  // Show window
  gv_AO_frmControlWindow.showDiaglog.


    // ****************************************************************
    private void gv_AO_frmControlWindow_Resize(object sender, EventArgs e) {
      if ( gv_AO_frmControlWindow.WindowState == FormWindowState.Minimized ) {
        notifyIcon.Visible = true;
        }
      else {
        notifyIcon.Visible = false;
        }
      return;
      } // END OF gv_AO_frmControlWindow_Resize()
    // ****************************************************************
    private void notifyIcon_MouseClick(object sender, MouseEventArgs e) {
      gv_AO_frmControlWindow.WindowState = FormWindowState.Normal;  
      return;
      } // END OF notifyIcon_MouseClick()

//Assuming you wanted a system tray icon to maximize window:
    private System.Windows.Forms.NotifyIcon notifyIcon    = new NotifyIcon();

      notifyIcon.Icon = new Icon( "C:\\SysTray.ico");
      notifyIcon.Text = "MyWindow";
      notifyIcon.MouseClick += new MouseEventHandler(this.notifyIcon_MouseClick);

//希望这有帮助。
// 达里尔·H·巴塞特

© www.soinside.com 2019 - 2024. All rights reserved.