这是可行的,但它在任务栏按钮上有一个令人不快的副作用。我想不出另一种方法,甚至无法从systemparametersinfo()访问动画。
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
}
protected override void WndProc(ref Message m) {
// Catch WM_SYSCOMMAND, SC_MINIMIZE
if (m.Msg == 0x112 && m.WParam.ToInt32() == 0xf020) {
this.Hide();
this.WindowState = FormWindowState.Minimized;
this.BeginInvoke(new Action(() => this.Show()));
return;
}
base.WndProc(ref m);
}
}
更新:使用dwmwa_transitions_forcedisabled属性pinvoking dwmsetwindowattribute()可以禁用Aero上的动画。见
this answer
.