C# 如何使自己的程序在按下Windows+D之后不最小化

来源:百度知道 编辑:UC知道 时间:2024/06/05 10:30:57
C# 如何使自己的程序在按下Windows+D之后不最小化。麻烦知道的说一下,谢谢

最好是把你的窗口设为“桌面”的子窗口。

先引入两个Wine32窗口函数:
[DllImport("user32.dll")]
static extern IntPtr FindWindow(string className, string windowName);
[DllImport("user32.dll")]
static extern IntPtr SetParent(IntPtr hwndChild, IntPtr hwndNewParent);

然后在加上下面两行代码:
IntPtr desktop = FindWindow(null, "Program Manager");
IntPtr hwndOldParent = SetParent(this.Handle, desktop);
执行过这两句后,你的期望就达到了。

采取这种方式也不会影响正常的Minisize,Resize,Move等操作。
另,使用Win+D,Win+M时,窗口并不会收到SC_MINIMIZE的WM_SYSCOMMAND消息。

private delegate void Mydelegate();
private void ThreadJudge()
{
while (true)
{
this.Invoke(new Mydelegate(Judge));
}
}
private void Judge()
{
if (this.WindowState==FormWindowState.Minimized)
{
this.WindowState = FWS;