使用Window的API來隱藏作業系統下方的那條工具列
以及調整視窗畫面讓程式變成全螢幕
以下是方法1,可能會有工作列沒辦法隱藏的問題,那就請看方法2
(目前我用方法2比較成功!!=.=)
要using System.Runtime.InteropServices;
首先先宣告
方法1:
private const int SW_HIDE = 0;
private const int SW_SHOW = 1;
private const int SM_CXSCREEN = 0;
private const int SM_CYSCREEN = 1;
static readonly IntPtr HWND_TOP = new IntPtr(0);
static readonly UInt32 SWP_SHOWWINDOW = 0x0040;
private int hwnd=FindWindow("Shell_TrayWnd", "");
//這是找Window下方那條工具列
[DllImport("user32.dll")]
private static extern int FindWindow(string className, string windowText);
//這是去隱藏視窗跟顯示視窗
[DllImport("user32.dll")]
private static extern int ShowWindow(int hwnd, int command);
//這是改變視窗的位置或是大小
[DllImport("user32.dll")]
private static extern bool SetWindowPos(int hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags);
//這是去抓"螢幕"的寬跟高要用的
[DllImport("user32.dll")]
public static extern int GetSystemMetrics(int screensize);
好了,宣告完上面那些亂七八糟的東西後
就可以直接用那些函式了
//把工具列隱藏
ShowWindow(hwnd, SW_HIDE);
//把工具列顯示出來
ShowWindow(hwnd, SW_SHOW);
//工具列隱藏後,我們的視窗不會自動變成螢幕的大小
//會變成下方一條空出來很難看,所以再用這行把視窗調整成螢幕的大小
//在這裡用c#的那些什麼最大化的程式都是無效的,一定要用這個吧...
SetWindowPos((int)this.Handle, HWND_TOP, 0, 0, GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN), SWP_SHOWWINDOW);
好了完成 ~~隱藏工具列後要記得讓它顯示出來阿
不然你就沒有工具列可以按了=.=
補充
移動滑鼠座標的API
宣告
[DllImport("user32.dll")]
private static extern bool SetCursorPos(int X,int Y);
就可以用了
SetCursorPos(0,0);
方法2:
先宣告
[DllImport("user32.dll")]
private static extern bool SetWindowPos(int hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags);
[DllImport("user32.dll")]
public static extern int GetSystemMetrics(int screensize);
public const int SM_CXSCREEN = 0;
public const int SM_CYSCREEN = 1;
private static IntPtr HWND_TOP = IntPtr.Zero;
private const int SWP_SHOWWINDOW = 64;
開一個顯示全螢幕的函式
寫
this.WindowState = FormWindowState.Normal;
this.FormBorderStyle = FormBorderStyle.None;
SetWindowPos((int)this.Handle, HWND_TOP, 0, 0, GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN), SWP_SHOWWINDOW);
然後在回復成普通視窗的函式裡寫
this.ControlBox = true;
this.Text = F_Title;
this.WindowState = FormWindowState.Maximized;
this.FormBorderStyle = FormBorderStyle.FixedSingle;
就好啦

我想要把TaskBar設定AlwaysOnTop的屬性Enabled或是Disabled 請問要怎實作在C#
我在好幾個地方看到你發問耶^^" 我剛寫了一篇可以參考看看唷 http://welkingunther.pixnet.net/blog/post/27615608
可是我用了方法二之後 雖然真的是"全螢幕"了 但是裡面的圖片跟元件都沒跟著比例放大耶><" 請問大大該怎麼解決@@?
你可以試試看去調各圖片和元件的一個屬性叫做Anchor 把它設定成None ^^
您好 謝謝您的教學 我用方法二 也去調元件的anchor 可是還是不成功 > < 請問能否給一點example 謝謝
*****