1. 程式人生 > >C#怎麼使得窗體在最下面和最上面切不會因win+d而最小化

C#怎麼使得窗體在最下面和最上面切不會因win+d而最小化

API正是神奇!!

今天看到個SetParent這個函式有點神奇就測試了一個果然不同凡響!1

如果在.net中做一個頂級窗體很簡單

可是當你點顯示桌面的時候他回最小化!

怎麼才能使它不最小化呢?在必須在它的SizeChanged事件裡面寫:

if (this.WindowState==FormWindowState.Minimized)
   {
    this.WindowState=FormWindowState.Normal;
   }

可是你如果SetParent函式就不用在這裡寫了!

申明:

[DllImport("user32.dll", EntryPoint="SetParent")]
  public static extern int SetParent (int hWndChild, int hWndNewParent);

這個函式的第一個引數的要是要一個要處理第 視窗的控制代碼

第二個引數為你要把這個視窗放到上面的那個視窗的控制代碼:

如果你用SetParent(this.Handle.ToInt32(),this.Handle.ToInt32());

窗體就是定級窗體了且不會因為你按了顯示桌面它最小化!

同樣如果你能得到桌面窗體的控制代碼那麼窗體將會永遠在任何窗體的最下面!!

可是怎麼得到桌面的視窗的控制代碼呢!!

呵呵!!

API提供了一找視窗控制代碼的APIFindWindow (string lpClassName,string lpWindowName);

lpClassName引數為視窗所屬的類名lpWindowName為視窗的標題

呵呵

現在我們就可以用這函式得到桌面視窗的控制代碼了

FindWindow("Progman", "Program Manager");

現在它就能返回桌面視窗的控制代碼了

嘿嘿

再用SetParent函式將窗體填加到桌面上看看!!

嘿嘿是不是很爽啊!!!!