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

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

 

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

 

1

 

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

 

2

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

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

 

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

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

 

如何尋找ClassName呢!?

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

 

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

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

 

 

 

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

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

 

3

 

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

 

4

 

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

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

 

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

SetForegroundWindow function

 

文章中的敘述如有觀念不正確錯誤的部分,歡迎告知指正 謝謝
http://www.sukitech.com/?p=1080
轉載請註明出處,並且附上本篇文章網址 !  感謝。

發表迴響

Post Navigation