嘿,我在我的项目中遇到了麻烦...我需要知道任何打开的窗口何时被最小化/恢复,并在我的应用程序中处理该事件。有什么想法吗?
编辑: Musigenesis是正确的,我确实想知道其他应用程序何时被最小化/恢复。
我认为您需要使用SetWindowsHookEx Win32 API函数(以及其他一些函数)。 基本上,您将遍历操作系统中的所有打开窗口,并钩入其调整大小事件。
必要的评论:您确定需要这样做吗? 虽然我认为这在理论上是可能的,但听起来像一个非常糟糕的想法,并且与Windows应用程序应该表现出的方式相反。
更新:我认为Windows中的“显示桌面”类似于这种方式,只不过它遍历所有打开的窗口,然后使用SendMessage将它们最小化(我猜测)。
更新2:这是一个棘手的问题,我非常想知道如何完成(我百分之百确定它是可能的)。 我会关注这个问题,如果在接下来的一两天内没有人提供答案,我会再次发布并提供赏金(您也可以这样做,但需要自己拥有一些声望点数来提供赏金)。
OnSizeChanged
事件}}并测试WindowState
。//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);