public sealed class API
{
//wMsg參數常量值:
//WM_KEYDOWN 按下一個鍵
public static int WM_KEYDOWN = 0x0100;
//釋放一個鍵
public static int WM_KEYUP = 0x0101;
//按下某鍵,並已發出WM_KEYDOWN, WM_KEYUP訊息
public static int WM_CHAR = 0x102;
//當用translatemessage函數翻譯WM_KEYUP訊息時發送此訊息給擁有焦點的視窗
public static int WM_DEADCHAR = 0x103;
//當使用者按住ALT鍵同步選取其它鍵時提交此訊息給擁有焦點的視窗
public static int WM_SYSKEYDOWN = 0x104;
//當使用者釋放一個鍵同時ALT 鍵還按著時提交此訊息給擁有焦點的視窗
public static int WM_SYSKEYUP = 0x105;
//當WM_SYSKEYDOWN訊息被TRANSLATEMESSAGE函數翻譯後提交此訊息給擁有焦點的視窗
public static int WM_SYSCHAR = 0x106;
//當WM_SYSKEYDOWN訊息被TRANSLATEMESSAGE函數翻譯後發送此訊息給擁有焦點的視窗
public static int WM_SYSDEADCHAR = 0x107;
//在一個對話方塊程式被顯示前發送此訊息給它,通常用此訊息初始化控制項和執行其它任務
public static int WM_INITDIALOG = 0x110;
//當使用者選擇一條功能表命令項或當某個控制項發送一條訊息給它的父視窗,一個快速鍵被翻譯
public static int WM_COMMAND = 0x111;
//當使用者選擇視窗菜單的一條命令或//當使用者選擇最大化或最小化時那個視窗會收到此訊息
public static int WM_SYSCOMMAND = 0x112;
//發生了定時器事件
public static int WM_TIMER = 0x113;
//當一個視窗標準水平捲軸產生一個滾動事件時發送此訊息給那個視窗,也發送給擁有它的控制項
public static int WM_HSCROLL = 0x114;
//當一個視窗標準垂直捲軸產生一個滾動事件時發送此訊息給那個視窗也,發送給擁有它的控制項
public static int WM_VSCROLL = 0x115;
//當一個菜單將要被啟用時發送此訊息,它發生在使用者菜單條中的某項或按下某個菜單鍵,它允許程式在顯示前更改菜單
public static int WM_INITMENU = 0x116;
//當一個下拉式功能表或子功能表將要被啟用時發送此訊息,它允許程式在它顯示前更改菜單,而不要改變全部
public static int WM_INITMENUPOPUP = 0x117;
//當使用者選擇一條功能表項目時發送此訊息給菜單的所有者(一般是視窗)
public static int WM_MENUSELECT = 0x11F;
//當菜單已被啟用使用者按下了某個鍵(不同於加速鍵),發送此訊息給菜單的所有者
public static int WM_MENUCHAR = 0x120;
//當一個模態對話方塊或菜單進入空載狀態時發送此訊息給它的所有者,一個模態對話方塊或菜單進入空載狀態就是在處理完一條或幾條先前的訊息後沒有訊息它的列隊中等待
public static int WM_ENTERIDLE = 0x121;
//在windows繪製訊息框前發送此訊息給訊息框的所有者視窗,通過響應這條訊息,所有者視窗可以通過使用給定的相關顯示裝置的控制代碼來設定訊息框的文本和背景顏色
public static int WM_CTLCOLORMSGBOX = 0x132;
//當一個編輯型控制項將要被繪製時發送此訊息給它的父視窗通過響應這條訊息,所有者視窗可以通過使用給定的相關顯示裝置的控制代碼來設定編輯框的文本和背景顏色
public static int WM_CTLCOLOREDIT = 0x133;
//當一個列表框控制項將要被繪製前發送此訊息給它的父視窗通過響應這條訊息,所有者視窗可以通過使用給定的相關顯示裝置的控制代碼來設定列表框的文本和背景顏色
public static int WM_CTLCOLORLISTBOX = 0x134;
//當一個按鈕控制項將要被繪製時發送此訊息給它的父視窗通過響應這條訊息,所有者視窗可以通過使用給定的相關顯示裝置的控制代碼來設定按紐的文本和背景顏色
public static int WM_CTLCOLORBTN = 0x135;
//當一個對話方塊控制項將要被繪製前發送此訊息給它的父視窗通過響應這條訊息,所有者視窗可以通過使用給定的相關顯示裝置的控制代碼來設定對話方塊的文本背景顏色
public static int WM_CTLCOLORDLG = 0x136;
//當一個捲軸控制項將要被繪製時發送此訊息給它的父視窗通過響應這條訊息,所有者視窗可以通過使用給定的相關顯示裝置的控制代碼來設定捲軸的背景顏色
public static int WM_CTLCOLORSCROLLBAR = 0x137;
//當一個靜態控制項將要被繪製時發送此訊息給它的父視窗通過響應這條訊息,所有者視窗可以 通過使用給定的相關顯示裝置的控制代碼來設定靜態控制項的文本和背景顏色
public static int WM_CTLCOLORSTATIC = 0x138;
//當滑鼠輪子轉動時發送此訊息個當前有焦點的控制項
public static int WM_MOUSEWHEEL = 0x20A;
//雙擊滑鼠中鍵
public static int WM_MBUTTONDBLCLK = 0x209;
//釋放滑鼠中鍵
public static int WM_MBUTTONUP = 0x208;
//移動滑鼠時發生,同WM_MOUSEFIRST
public static int WM_MOUSEMOVE = 0x200;
//按下滑鼠左鍵
public static int WM_LBUTTONDOWN = 0x201;
//釋放滑鼠左鍵
public static int WM_LBUTTONUP = 0x202;
//雙擊滑鼠左鍵
public static int WM_LBUTTONDBLCLK = 0x203;
//按下滑鼠右鍵
public static int WM_RBUTTONDOWN = 0x204;
//釋放滑鼠右鍵
public static int WM_RBUTTONUP = 0x205;
//雙擊滑鼠右鍵
public static int WM_RBUTTONDBLCLK = 0x206;
//按下滑鼠中鍵
public static int WM_MBUTTONDOWN = 0x207;
public static int WM_USER = 0x0400;
public static int MK_LBUTTON = 0x0001;
public static int MK_RBUTTON = 0x0002;
public static int MK_SHIFT = 0x0004;
public static int MK_CONTROL = 0x0008;
public static int MK_MBUTTON = 0x0010;
public static int MK_XBUTTON1 = 0x0020;
public static int MK_XBUTTON2 = 0x0040;
//建立一個視窗
public static int WM_CREATE = 0x01;
//當一個視窗被破壞時發送
public static int WM_DESTROY = 0x02;
//移動一個視窗
public static int WM_MOVE = 0x03;
//改變一個視窗的大小
public static int WM_SIZE = 0x05;
//一個視窗被啟用或失去啟用狀態
public static int WM_ACTIVATE = 0x06;
//一個視窗獲得焦點
public static int WM_SETFOCUS = 0x07;
//一個視窗失去焦點
public static int WM_KILLFOCUS = 0x08;
//一個視窗改變成Enable狀態
public static int WM_ENABLE = 0x0A;
//設定視窗是否能重畫
public static int WM_SETREDRAW = 0x0B;
//應用程式發送此訊息來設定一個視窗的文本
public static int WM_SETTEXT = 0x0C;
//應用程式發送此訊息來複製對應視窗的文本到緩衝區
public static int WM_GETTEXT = 0x0D;
//得到與一個視窗有關的文本的長度(不包含Null 字元)
public static int WM_GETTEXTLENGTH = 0x0E;
//要求一個視窗重畫自己
public static int WM_PAINT = 0x0F;
//當一個視窗或應用程式要關閉時發送一個訊號
public static int WM_CLOSE = 0x10;
//當使用者選擇結束對話方塊或程式自己調用ExitWindows函數
public static int WM_QUERYENDSESSION = 0x11;
//用來結束程式運行
public static int WM_QUIT = 0x12;
//當使用者視窗恢複以前的大小位置時,把此訊息發送給某個表徵圖
public static int WM_QUERYOPEN = 0x13;
//當視窗背景必須被擦除時(例在視窗改變大小時)
public static int WM_ERASEBKGND = 0x14;
//當系統色彩改變時,發送此訊息給所有最上層視窗
public static int WM_SYSCOLORCHANGE = 0x15;
//當系統進程發出WM_QUERYENDSESSION訊息後,此訊息發送給應用程式,通知它對話是否結束
public static int WM_ENDSESSION = 0x16;
//當隱藏或顯示視窗是發送此訊息給這個視窗
public static int WM_SHOWWINDOW = 0x18;
//發此訊息給應用程式哪個視窗是啟用的,哪個是非啟用的
public static int WM_ACTIVATEAPP = 0x1C;
//當系統的字型資源庫變化時發送此訊息給所有最上層視窗
public static int WM_FONTCHANGE = 0x1D;
//當系統的時間變化時發送此訊息給所有最上層視窗
public static int WM_TIMECHANGE = 0x1E;
//發送此訊息來取消某種進行中的摸態(操作)
public static int WM_CANCELMODE = 0x1F;
//如果滑鼠引起游標在某個視窗中移動且滑鼠輸入沒有被捕獲時,就發訊息給某個視窗
public static int WM_SETCURSOR = 0x20;
//當游標在某個非啟用的視窗中而使用者正按著滑鼠的某個鍵發送此訊息給//當前視窗
public static int WM_MOUSEACTIVATE = 0x21;
//發送此訊息給MDI子視窗//當使用者點擊此視窗的標題列,或//當視窗被啟用,移動,改變大小
public static int WM_CHILDACTIVATE = 0x22;
//此訊息由基於電腦的訓練程式發送,通過WH_JOURNALPALYBACK的hook程式分離出使用者輸入訊息
public static int WM_QUEUESYNC = 0x23;
//此訊息發送給視窗當它將要改變大小或位置
public static int WM_GETMINMAXINFO = 0x24;
//發送給已最小化的視窗當它表徵圖將要被重畫
public static int WM_PAINTICON = 0x26;
//此訊息發送給某個已最小化的視窗,僅//當它在畫表徵圖前它的背景必須被重畫
public static int WM_ICONERASEBKGND = 0x27;
//發送此訊息給一個對話方塊程式去更改焦點位置
public static int WM_NEXTDLGCTL = 0x28;
//每當列印管理列隊增加或減少一條作業時發出此訊息
public static int WM_SPOOLERSTATUS = 0x2A;
//當button,combobox,listbox,menu的可視外觀改變時發送
public static int WM_DRAWITEM = 0x2B;
//當button, combo box, list box, list view control, or menu item 被建立時
public static int WM_MEASUREITEM = 0x2C;
//此訊息有一個LBS_WANTKEYBOARDINPUT風格的發出給它的所有者來響應WM_KEYDOWN訊息
public static int WM_VKEYTOITEM = 0x2E;
//此訊息由一個LBS_WANTKEYBOARDINPUT風格的列表框發送給他的所有者來響應WM_CHAR訊息
public static int WM_CHARTOITEM = 0x2F;
//當繪製文本時程式發送此訊息得到控制項要用的顏色
public static int WM_SETFONT = 0x30;
//應用程式發送此訊息得到當前控制項繪製文本的字型
public static int WM_GETFONT = 0x31;
//應用程式發送此訊息讓一個視窗與一個熱鍵相關連
public static int WM_SETHOTKEY = 0x32;
//應用程式發送此訊息來判斷熱鍵與某個視窗是否有關聯
public static int WM_GETHOTKEY = 0x33;
//此訊息發送給已最小化的視窗,當此視窗將要被拖放而它的類中沒有定義表徵圖,應用程式能返回一個表徵圖或游標的控制代碼,當使用者拖放表徵圖時系統顯示這個表徵圖或游標
public static int WM_QUERYDRAGICON = 0x37;
//發送此訊息來判定combobox或listbox新增加的項的相對位置
public static int WM_COMPAREITEM = 0x39;
//顯示記憶體已經很少了
public static int WM_COMPACTING = 0x41;
//發送此訊息給那個視窗的大小和位置將要被改變時,來調用setwindowpos函數或其它視窗管理函數
public static int WM_WINDOWPOSCHANGING = 0x46;
//發送此訊息給那個視窗的大小和位置已經被改變時,來調用setwindowpos函數或其它視窗管理函數
public static int WM_WINDOWPOSCHANGED = 0x47;
//當系統將要進入暫停狀態時發送此訊息
public static int WM_POWER = 0x48;
//當一個應用程式傳遞資料給另一個應用程式時發送此訊息
public static int WM_COPYDATA = 0x4A;
//當某個使用者取消程式日誌啟用狀態,提交此訊息給程式
public static int WM_CANCELJOURNA = 0x4B;
//當某個控制項的某個事件已經發生或這個控制項需要得到一些資訊時,發送此訊息給它的父視窗
public static int WM_NOTIFY = 0x4E;
//當使用者選擇某種輸入語言,或輸入語言的熱鍵改變
public static int WM_INPUTLANGCHANGEREQUEST = 0x50;
//當平台現場已經被改變後發送此訊息給受影響的最最上層視窗
public static int WM_INPUTLANGCHANGE = 0x51;
//當程式已經初始化windows協助常式時發送此訊息給應用程式
public static int WM_TCARD = 0x52;
//此訊息顯示使用者按下了F1,如果某個菜單是啟用的,就發送此訊息個此視窗關聯的菜單,否則就發送給有焦點的視窗,如果//當前都沒有焦點,就把此訊息發送給//當前啟用的視窗
public static int WM_HELP = 0x53;
//當使用者已經登入或退出後發送此訊息給所有的視窗,//當使用者登入或退出時系統更新使用者的具體設定資訊,在使用者更新設定時系統馬上發送此訊息
public static int WM_USERCHANGED = 0x54;
//公用控制項,自訂控制項和他們的父視窗通過此訊息來判斷控制項是使用ANSI還是UNICODE結構
public static int WM_NOTIFYFORMAT = 0x55;
//當使用者某個視窗中點擊了一下右鍵就發送此訊息給這個視窗
//public static int WM_CONTEXTMENU = ??;
//當調用SETWINDOWLONG函數將要改變一個或多個 視窗的風格時發送此訊息給那個視窗
public static int WM_STYLECHANGING = 0x7C;
//當調用SETWINDOWLONG函數一個或多個 視窗的風格後發送此訊息給那個視窗
public static int WM_STYLECHANGED = 0x7D;
//當顯示器的解析度改變後發送此訊息給所有的視窗
public static int WM_DISPLAYCHANGE = 0x7E;
//此訊息發送給某個視窗來返回與某個視窗有關連的大表徵圖或小表徵圖的控制代碼
public static int WM_GETICON = 0x7F;
//程式發送此訊息讓一個新的大表徵圖或小表徵圖與某個視窗關聯
public static int WM_SETICON = 0x80;
//當某個視窗第一次被建立時,此訊息在WM_CREATE訊息發送前發送
public static int WM_NCCREATE = 0x81;
//此訊息通知某個視窗,非客戶區正在銷毀
public static int WM_NCDESTROY = 0x82;
//當某個視窗的用戶端區域必須被核算時發送此訊息
public static int WM_NCCALCSIZE = 0x83;
//移動滑鼠,按住或釋放滑鼠時發生
public static int WM_NCHITTEST = 0x84;
//程式發送此訊息給某個視窗當它(視窗)的架構必須被繪製時
public static int WM_NCPAINT = 0x85;
//此訊息發送給某個視窗僅當它的非客戶區需要被改變來顯示是啟用還是非啟用狀態
public static int WM_NCACTIVATE = 0x86;
//發送此訊息給某個與對話方塊程式關聯的控制項,widdows控制方位鍵和TAB鍵使輸入進入此控制項通過應
public static int WM_GETDLGCODE = 0x87;
//當游標在一個視窗的非客戶區內移動時發送此訊息給這個視窗 非客戶區為:表單的標題列及窗 的邊框體
public static int WM_NCMOUSEMOVE = 0xA0;
//當游標在一個視窗的非客戶區同步選取滑鼠左鍵時提交此訊息
public static int WM_NCLBUTTONDOWN = 0xA1;
//當使用者釋放滑鼠左鍵同時游標某個視窗在非客戶區十發送此訊息
public static int WM_NCLBUTTONUP = 0xA2;
//當使用者雙擊滑鼠左鍵同時游標某個視窗在非客戶區十發送此訊息
public static int WM_NCLBUTTONDBLCLK = 0xA3;
//當使用者按下滑鼠右鍵同時游標又在視窗的非客戶區時發送此訊息
public static int WM_NCRBUTTONDOWN = 0xA4;
//當使用者釋放滑鼠右鍵同時游標又在視窗的非客戶區時發送此訊息
public static int WM_NCRBUTTONUP = 0xA5;
//當使用者雙擊滑鼠右鍵同時游標某個視窗在非客戶區十發送此訊息
public static int WM_NCRBUTTONDBLCLK = 0xA6;
//當使用者按下滑鼠中鍵同時游標又在視窗的非客戶區時發送此訊息
public static int WM_NCMBUTTONDOWN = 0xA7;
//當使用者釋放滑鼠中鍵同時游標又在視窗的非客戶區時發送此訊息
public static int WM_NCMBUTTONUP = 0xA8;
//當使用者雙擊滑鼠中鍵同時游標又在視窗的非客戶區時發送此訊息
public static int WM_NCMBUTTONDBLCLK = 0xA9;
[DllImport("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
//此處主要用來讓視窗置於最前(SetWindowPos(this.Handle,-1,0,0,0,0,0x4000|0x0001|0x0002);)
[System.Runtime.InteropServices.DllImport("user32.dll")]
public static extern bool SetWindowPos(IntPtr hWnd,
int hWndInsertAfter,
int X,
int Y,
int cx,
int cy,
int uFlags
);