You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

328 lines
18 KiB
C#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Windows.Forms;
namespace demo.ClassHelper
{
/// <summary>
/// win32消息及其他常量定义
/// </summary>
public static class NativeConst
{
public const int WM_CREATE = 0x0001;
public const int WM_DESTROY = 0x0002;
public const int WM_MOVE = 0x0003;
public const int WM_SIZE = 0x0005;
public const int WM_ACTIVATE = 0x0006;
public const int WM_SETFOCUS = 0x0007;
public const int WM_KILLFOCUS = 0x0008;
public const int WM_ENABLE = 0x000A;
public const int WM_SETREDRAW = 0x000B;
public const int WM_SETTEXT = 0x000C;
public const int WM_GETTEXT = 0x000D;
public const int WM_GETTEXTLENGTH = 0x000E;
public const int WM_PAINT = 0x000F;
public const int WM_CLOSE = 0x0010;
public const int WM_QUERYENDSESSION = 0x0011;
public const int WM_QUIT = 0x0012;
public const int WM_QUERYOPEN = 0x0013;
public const int WM_ERASEBKGND = 0x0014;
public const int WM_SYSCOLORCHANGE = 0x0015;
public const int WM_ENDSESSION = 0x0016;
public const int WM_SHOWWINDOW = 0x0018;
public const int WM_ACTIVATEAPP = 0x001C;
public const int WM_FONTCHANGE = 0x001D;
public const int WM_TIMECHANGE = 0x001E;
public const int WM_CANCELMODE = 0x001F;
public const int WM_SETCURSOR = 0x0020;
public const int WM_MOUSEACTIVATE = 0x0021;
public const int WM_CHILDACTIVATE = 0x0022;
public const int WM_QUEUESYNC = 0x0023;
public const int WM_GETMINMAXINFO = 0x0024;
public const int WM_PAINTICON = 0x0026;
public const int WM_ICONERASEBKGND = 0x0027;
public const int WM_NEXTDLGCTL = 0x0028;
public const int WM_SPOOLERSTATUS = 0x002A;
public const int WM_DRAWITEM = 0x002B;
public const int WM_MEASUREITEM = 0x002C;
public const int WM_VKEYTOITEM = 0x002E;
public const int WM_CHARTOITEM = 0x002F;
public const int WM_SETFONT = 0x0030;
public const int WM_GETFONT = 0x0031;
public const int WM_SETHOTKEY = 0x0032;
public const int WM_GETHOTKEY = 0x0033;
public const int WM_QUERYDRAGICON = 0x0037;
public const int WM_COMPAREITEM = 0x0039;
public const int WM_COMPACTING = 0x0041;
public const int WM_WINDOWPOSCHANGING = 0x0046;
public const int WM_WINDOWPOSCHANGED = 0x0047;
public const int WM_POWER = 0x0048;
public const int WM_COPYDATA = 0x004A;
public const int WM_CANCELJOURNA = 0x004B;
public const int WM_NOTIFY = 0x004E;
public const int WM_INPUTLANGCHANGEREQUEST = 0x0050;
public const int WM_INPUTLANGCHANGE = 0x0051;
public const int WM_TCARD = 0x0052;
public const int WM_HELP = 0x0053;
public const int WM_USERCHANGED = 0x0054;
public const int WM_NOTIFYFORMAT = 0x0055;
public const int WM_CONTEXTMENU = 0x007B;
public const int WM_STYLECHANGING = 0x007C;
public const int WM_STYLECHANGED = 0x007D;
public const int WM_DISPLAYCHANGE = 0x007E;
public const int WM_GETICON = 0x007F;
public const int WM_SETICON = 0x0080;
public const int WM_NCCREATE = 0x0081;
public const int WM_NCDESTROY = 0x0082;
public const int WM_NCCALCSIZE = 0x0083;
public const int WM_NCHITTEST = 0x0084;
public const int WM_NCPAINT = 0x0085;
public const int WM_NCACTIVATE = 0x0086;
public const int WM_GETDLGCODE = 0x0087;
public const int WM_NCMOUSEMOVE = 0x00A0;
public const int WM_NCLBUTTONDOWN = 0x00A1;
public const int WM_NCLBUTTONUP = 0x00A2;
public const int WM_NCLBUTTONDBLCLK = 0x00A3;
public const int WM_NCRBUTTONDOWN = 0x00A4;
public const int WM_NCRBUTTONUP = 0x00A5;
public const int WM_NCRBUTTONDBLCLK = 0x00A6;
public const int WM_NCMBUTTONDOWN = 0x00A7;
public const int WM_NCMBUTTONUP = 0x00A8;
public const int WM_NCMBUTTONDBLCLK = 0x00A9;
public const int WM_KEYFIRST = 0x0100;
public const int WM_KEYUP = 0x0101;
public const int WM_CHAR = 0x0102;
public const int WM_DEADCHAR = 0x0103;
public const int WM_SYSKEYDOWN = 0x0104;
public const int WM_SYSKEYUP = 0x0105;
public const int WM_SYSCHAR = 0x0106;
public const int WM_SYSDEADCHAR = 0x0107;
public const int WM_INITDIALOG = 0x0110;
public const int WM_COMMAND = 0x0111;
public const int WM_SYSCOMMAND = 0x0112;
public const int WM_TIMER = 0x0113;
public const int WM_HSCROLL = 0x0114;
public const int WM_VSCROLL = 0x0115;
public const int WM_INITMENU = 0x0116;
public const int WM_INITMENUPOPUP = 0x0117;
public const int WM_MENUSELECT = 0x011F;
public const int WM_MENUCHAR = 0x0120;
public const int WM_ENTERIDLE = 0x0121;
public const int WM_CTLCOLORMSGBOX = 0x0132;
public const int WM_CTLCOLOREDIT = 0x0133;
public const int WM_CTLCOLORLISTBOX = 0x0134;
public const int WM_CTLCOLORBTN = 0x0135;
public const int WM_CTLCOLORDLG = 0x0136;
public const int WM_CTLCOLORSCROLLBAR = 0x0137;
public const int WM_CTLCOLORSTATIC = 0x0138;
public const int WM_SHARED_MENU = 0x01E2;
public const int WM_MOUSEFIRST = 0x0200;
public const int WM_MOUSEMOVE = 0x0200;
public const int WM_LBUTTONDOWN = 0x0201;
public const int WM_LBUTTONUP = 0x0202;
public const int WM_LBUTTONDBLCLK = 0x0203;
public const int WM_RBUTTONDOWN = 0x0204;
public const int WM_RBUTTONUP = 0x0205;
public const int WM_RBUTTONDBLCLK = 0x0206;
public const int WM_MBUTTONDOWN = 0x0207;
public const int WM_MBUTTONUP = 0x0208;
public const int WM_MBUTTONDBLCLK = 0x0209;
public const int WM_MOUSEWHEEL = 0x020A;
public const int WM_PRINT = 0x0317;
public const int HC_ACTION = 0;
public const int WH_CALLWNDPROC = 4;
//LONG GetWindowLong(HWND hWndint nlndex)函数nIndex取值,以及
//LONG SetWindowLongHWND hWndint nlndexLONG dwNewLong函数nIndex取值
public const int GWL_EXSTYLE = -20;
public const int GWL_STYLE = -16;
public const int GWL_WNDPROC = -4;
public const int GWL_HINSTANCE = -6;
public const int GWL_HWNDPARENT = -8;
public const int GWL_ID = -12;
public const int GWL_USERDATA = -21;
//在hWnd参数标识了一个对话框时也可用下列值
public const int DWL_DLGPROC = 4;
public const int DWL_MSGRESULT = 0;
public const int DWL_USER = 8;
//Extended Window Styles
public const long WS_EX_ACCEPTFILES = 0x00000010;
public const long WS_EX_APPWINDOW = 0x00040000;
public const long WS_EX_CLIENTEDGE = 0x00000200;
public const long WS_EX_COMPOSITED = 0x02000000;
public const long WS_EX_CONTEXTHELP = 0x00000400;
public const long WS_EX_CONTROLPARENT = 0x00010000;
public const long WS_EX_DLGMODALFRAME = 0x00000001;
public const long WS_EX_LAYERED = 0x00080000;
public const long WS_EX_LAYOUTRTL = 0x00400000;
public const long WS_EX_LEFT = 0x00000000;
public const long WS_EX_LEFTSCROLLBAR = 0x00004000;
public const long WS_EX_LTRREADING = 0x00000000;
public const long WS_EX_MDICHILD = 0x00000040;
public const long WS_EX_NOACTIVATE = 0x08000000;
public const long WS_EX_NOINHERITLAYOUT = 0x00100000;
public const long WS_EX_NOPARENTNOTIFY = 0x00000004;
public const long WS_EX_NOREDIRECTIONBITMAP = 0x00200000;
public const long WS_EX_OVERLAPPEDWINDOW = (WS_EX_WINDOWEDGE | WS_EX_CLIENTEDGE);
public const long WS_EX_PALETTEWINDOW = (WS_EX_WINDOWEDGE | WS_EX_TOOLWINDOW | WS_EX_TOPMOST);
public const long WS_EX_RIGHT = 0x00001000;
public const long WS_EX_RIGHTSCROLLBAR = 0x00000000;
public const long WS_EX_RTLREADING = 0x00002000;
public const long WS_EX_STATICEDGE = 0x00020000;
public const long WS_EX_TOOLWINDOW = 0x00000080;
public const long WS_EX_TOPMOST = 0x00000008;
public const long WS_EX_TRANSPARENT = 0x00000020;
public const long WS_EX_WINDOWEDGE = 0x00000100;
//Window Styles
public const long WS_BORDER = 0x00800000;
public const long WS_CAPTION = 0x00C00000;
public const long WS_CHILD = 0x40000000;
public const long WS_CHILDWINDOW = 0x40000000;
public const long WS_CLIPCHILDREN = 0x02000000;
public const long WS_CLIPSIBLINGS = 0x04000000;
public const long WS_DISABLED = 0x08000000;
public const long WS_DLGFRAME = 0x00400000;
public const long WS_GROUP = 0x00020000;
public const long WS_HSCROLL = 0x00100000;
public const long WS_ICONIC = 0x20000000;
public const long WS_MAXIMIZE = 0x01000000;
public const long WS_MAXIMIZEBOX = 0x00010000;
public const long WS_MINIMIZE = 0x20000000;
public const long WS_MINIMIZEBOX = 0x00020000;
public const long WS_OVERLAPPED = 0x00000000;
public const long WS_OVERLAPPEDWINDOW = (WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX);
public const long WS_POPUP = 0x80000000;
public const long WS_POPUPWINDOW = (WS_POPUP | WS_BORDER | WS_SYSMENU);
public const long WS_SIZEBOX = 0x00040000;
public const long WS_SYSMENU = 0x00080000;
public const long WS_TABSTOP = 0x00010000;
public const long WS_THICKFRAME = 0x00040000;
public const long WS_TILED = 0x00000000;
public const long WS_TILEDWINDOW = (WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX);
public const long WS_VISIBLE = 0x10000000;
public const long WS_VSCROLL = 0x00200000;
public const int GW_HWNDFIRST = 0;
public const int GW_HWNDLAST = 1;
public const int GW_HWNDNEXT = 2;
public const int GW_HWNDPREV = 3;
public const int GW_OWNER = 4;
public const int GW_CHILD = 5;
public const int SC_RESTORE = 0xF120; //还原
public const int SC_MOVE = 0xF010; //移动
public const int SC_SIZE = 0xF000; //大小
public const int SC_MINIMIZE = 0xF020; //最小化
public const int SC_MAXIMIZE = 0xF030; //最大化
public const int SC_CLOSE = 0xF060; //关闭
//WM_NCHITTEST消息处理返回值
public const int HTERROR = -2;
public const int HTTRANSPARENT = -1;
public const int HTNOWHERE = 0;
public const int HTCLIENT = 1;
public const int HTCAPTION = 2;
public const int HTSYSMENU = 3;
public const int HTGROWBOX = 4;
public const int HTSIZE = HTGROWBOX;
public const int HTMENU = 5;
public const int HTHSCROLL = 6;
public const int HTVSCROLL = 7;
public const int HTMINBUTTON = 8;
public const int HTMAXBUTTON = 9;
public const int HTLEFT = 10;
public const int HTRIGHT = 11;
public const int HTTOP = 12;
public const int HTTOPLEFT = 13;
public const int HTTOPRIGHT = 14;
public const int HTBOTTOM = 15;
public const int HTBOTTOMLEFT = 16;
public const int HTBOTTOMRIGHT = 17;
public const int HTBORDER = 18;
public const int HTREDUCE = HTMINBUTTON;
public const int HTZOOM = HTMAXBUTTON;
public const int HTSIZEFIRST = HTLEFT;
public const int HTSIZELAST = HTBOTTOMRIGHT;
public const int HTOBJECT = 19;
public const int HTCLOSE = 20;
public const int HTHELP = 21;
//GetSystemMetrics参数
public const int SM_CXSCREEN = 0;
public const int SM_CYSCREEN = 1;
public const int SM_CXFULLSCREEN = 16;
public const int SM_CYFULLSCREEN = 17;
public const int SM_CYMENU = 15;
public const int SM_CYCAPTION = 4;
public const int SM_CXFRAME = 32;
public const int SM_CYFRAME = 33;
public const int SM_CXHSCROLL = 21;
public const int SM_CYHSCROLL = 3;
public const int SM_CXVSCROLL = 2;
public const int SM_CYVSCROLL = 20;
public const int SM_CXSIZE = 30;
public const int SM_CYSIZE = 31;
public const int SM_CXCURSOR = 13;
public const int SM_CYCURSOR = 14;
public const int SM_CXBORDER = 5;
public const int SM_CYBORDER = 6;
public const int SM_CXDOUBLECLICK = 36;
public const int SM_CYDOUBLECLICK = 37;
public const int SM_CXDLGFRAME = 7;
public const int SM_CXFIXEDFRAME = SM_CXDLGFRAME;
public const int SM_CYDLGFRAME = 8;
public const int SM_CYFIXEDFRAME = SM_CYDLGFRAME;
public const int SM_CXICON = 11;
public const int SM_CYICON = 12;
public const int SM_CXICONSPACING = 38;
public const int SM_CYICONSPACING = 39;
public const int SM_CXMIN = 28;
public const int SM_CYMIN = 29;
public const int SM_CXMINTRACK = 34;
public const int SM_CYMINTRACK = 35;
public const int SM_CXHTHUMB = 10;
public const int SM_CYVTHUMB = 9;
public const int SM_DBCSENABLED = 42;
public const int SM_DEBUG = 22;
public const int SM_MENUDROPALIGNMENT = 40;
public const int SM_MOUSEPRESENT = 19;
public const int SM_PENWINDOWS = 41;
public const int SM_SWAPBUTTON = 23;
public const int MF_REMOVE = 0x1000;
/// <summary>
/// 贴图选项:将源矩形区域直接拷贝到目标矩形区域
/// </summary>
public const int ROP_SRCCOPY = 0x00CC0020;
}
public class HotKey
{
[DllImport("user32")]
public static extern bool RegisterHotKey(IntPtr hWnd, int id, uint control, Keys vk);
//解除注册热键的api
[DllImport("user32")]
public static extern bool UnregisterHotKey(IntPtr hWnd, int id);
}
}