C# Windows Form 開發,將應用程式視窗移動至最上層。

一般我們在撰寫桌面應用程式如Windows Form 、WPF 的時候,會希望當我們按下某個按鍵的時候應用程式的視窗提到最上層來,供使用者操作,如此能夠減少使用者尋找視窗的時間,也可以增加應用程式功能性,但是如何將應用程式的視窗移動治罪最上層呢?

本篇文章將引導您使用C# Windows Form 開發,將應用程式視窗移動至最上層。

一般我們在撰寫桌面應用程式如Windows Form 、WPF 的時候,會希望當我們按下某個按鍵的時候應用程式的視窗提到最上層來,供使用者操作,如此能夠減少使用者尋找視窗的時間,也可以增加應用程式功能性,但是如何將應用程式的視窗移動治罪最上層呢?

 

本篇文章將引導您使用C# Windows Form 開發,將應用程式視窗移動至最上層。

 

首先在專案裡開起 Windows Form的新專案

 

image

 

接著在主程式中放置一個按鈕,用來將應用程式提到最上層的功能。

 

image

接著在主程式裡面中引用User32.Dll的系統Dll,並引用User32.Dll內的方法。

 

   1:  //將視窗移動到最上層
   2:  [DllImport("USER32.DLL")]//引用User32.dll
   3:  public static extern bool SetForegroundWindow(IntPtr hWnd);
   4:   
   5:  //尋找視窗
   6:  [DllImport("USER32.DLL")]//引用User32.dll
   7:  public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

 

然後在按鈕按下去的事件(Click)下加入程式碼

 

   1:  //以小算盤為例,名稱 CalcFrame 
   2:  //為 Win 8 底下小算盤的ClassName
   3:  IntPtr player = FindWindow("CalcFrame", null);
   4:  if (player == IntPtr.Zero)
   5:  {
   6:      //若找不到小算盤的應用程式
   7:      //代表小算盤沒有被開啟
   8:      return;
   9:  }
  10:  //若小算盤已經被開啟了,則將小算盤移動到最上層
  11:  SetForegroundWindow(player);

 

如何尋找ClassName呢!?

參閱 C# 使用Spy++查看桌面應用程式視窗的資訊。

 

接著運行,會發現按鈕按下後沒有反應,其實是因為我們並沒有開啟小算盤,

意即在使用這個程式碼之前,我們必須先將欲移動到最上層的應用程式開啟!

 

 

 

一開始小算盤並不是最上層的應用程式,

最上層的應用程式是我們所開發的應用程式

 

image

 

當我們按下按鈕之後,小算盤就被移動到最上層囉!

 

image

 

如此一來我們可以想要移動到最上層的應用程式移動到最上層囉!

可以做很多應用,客觀就自己發揮創意囉!

 

References : 這是SUKI很久以前寫過的專案,在此拿出來與各為國家未來的棟樑分享

SetForegroundWindow function

 

文章中的敘述如有觀念不正確錯誤的部分,歡迎告知指正 謝謝
轉載請註明出處,並且附上本篇文章網址 !  感謝。

SUKI

HOLIESTAR