win32

来源:互联网 发布:mac air能玩什么游戏 编辑:程序博客网 时间:2024/06/05 13:24
using System;using System.Runtime.InteropServices;using System.Drawing;using System.Text;namespace wsWin{    public class Win32    {        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 WM_NCCALCSIZE = 0x83;        public const int WM_WINDOWPOSCHANGING = 0x46;        public const int WM_PAINT = 0xF;        public const int WM_CREATE = 0x1;        public const int WM_NCCREATE = 0x81;        public const int WM_NCPAINT = 0x85;        public const int WM_PRINT = 0x317;        public const int WM_DESTROY = 0x2;        public const int WM_SHOWWINDOW = 0x18;        public const int WM_SHARED_MENU = 0x1E2;        public const int HC_ACTION = 0;        public const int WH_CALLWNDPROC = 4;        public const int GWL_WNDPROC = -4;        internal const int SE_PRIVILEGE_ENABLED = 0x00000002;        internal const int TOKEN_QUERY = 0x00000008;        internal const int TOKEN_ADJUST_PRIVILEGES = 0x00000020;        internal const string SE_SHUTDOWN_NAME = "SeShutdownPrivilege";        internal const int EWX_LOGOFF = 0x00000000;        internal const int EWX_SHUTDOWN = 0x00000001;        internal const int EWX_REBOOT = 0x00000002;        internal const int EWX_FORCE = 0x00000004;        internal const int EWX_POWEROFF = 0x00000008;        internal const int EWX_FORCEIFHUNG = 0x00000010;        public const int User = 0x0600;        public const int User_ParmSelect = 0x0601;//May Not Use        public const int User_ParmClear = 0x0602; //May Not Use        public const int User_Navigation = 0x603; //May Not Use        public const int User_Refersh = 0x610;        public const int User_subDisplayFormNew = 0x611;        public const int User_subDisplayFormClose = 0x612;        public const int User_subDisplayFormChange = 0x613;        //public const int User_subDisplayFormChange = 0x614;        public const int User_MonitorFormClose = 0x615;        #region [ Window API ]        [DllImport("kernel32")]        public static extern long WritePrivateProfileString(string section, string key, string val, string filePath);        [DllImport("kernel32")]        public static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);        [DllImport("user32.dll")]        public static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wPar, IntPtr lPar);        [DllImport("user32.dll", EntryPoint = "GetWindowLong", CharSet = CharSet.Auto)]        public static extern int GetWindowLong(HandleRef hWnd, int nIndex);        [DllImport("user32.dll", EntryPoint = "SetWindowLong", CharSet = CharSet.Auto)]        public static extern IntPtr SetWindowLong(HandleRef hWnd, int nIndex, int dwNewLong);        [DllImport("user32.dll")]        public static extern int GetForegroundWindow();        [DllImport("User32.dll", CharSet = CharSet.Auto)]        public static extern IntPtr GetWindowDC(IntPtr handle);        [DllImport("User32.dll", CharSet = CharSet.Auto)]        public static extern IntPtr ReleaseDC(IntPtr handle, IntPtr hDC);        [DllImport("Gdi32.dll", CharSet = CharSet.Auto)]        public static extern IntPtr CreateCompatibleDC(IntPtr hdc);        [DllImport("User32.dll", CharSet = CharSet.Auto)]        public static extern int GetClassName(IntPtr hwnd, char[] className, int maxCount);        [DllImport("User32.dll", CharSet = CharSet.Auto)]        public static extern IntPtr GetWindow(IntPtr hwnd, int uCmd);        [DllImport("User32.dll", CharSet = CharSet.Auto)]        public static extern bool IsWindowVisible(IntPtr hwnd);        [DllImport("user32", CharSet = CharSet.Auto)]        public static extern int GetClientRect(IntPtr hwnd, ref RECT lpRect);        [DllImport("user32", CharSet = CharSet.Auto)]        public static extern int GetClientRect(IntPtr hwnd, [In, Out] ref Rectangle rect);        [DllImport("user32", CharSet = CharSet.Auto)]        public static extern bool MoveWindow(IntPtr hwnd, int X, int Y, int nWidth, int nHeight, bool bRepaint);        [DllImport("user32", CharSet = CharSet.Auto)]        public static extern bool UpdateWindow(IntPtr hwnd);        [DllImport("user32", CharSet = CharSet.Auto)]        public static extern bool InvalidateRect(IntPtr hwnd, ref Rectangle rect, bool bErase);        [DllImport("user32", CharSet = CharSet.Auto)]        public static extern bool ValidateRect(IntPtr hwnd, ref Rectangle rect);        [DllImport("user32.dll", CharSet = CharSet.Auto)]        internal static extern bool GetWindowRect(IntPtr hWnd, [In, Out] ref Rectangle rect);        [StructLayout(LayoutKind.Sequential)]        public struct RECT        {            public int Left;            public int Top;            public int Right;            public int Bottom;        }        [StructLayout(LayoutKind.Sequential)]        public struct WINDOWPOS        {            public IntPtr hwnd;            public IntPtr hwndAfter;            public int x;            public int y;            public int cx;            public int cy;            public uint flags;        }        [StructLayout(LayoutKind.Sequential)]        public struct NCCALCSIZE_PARAMS        {            public RECT rgc;            public WINDOWPOS wndpos;        }        #endregion        [StructLayout(LayoutKind.Sequential, Pack = 1)]        internal struct TokPriv1Luid        {            public int Count;            public long Luid;            public int Attr;        }        [DllImport("kernel32.dll", ExactSpelling = true)]        internal static extern IntPtr GetCurrentProcess();        [DllImport("advapi32.dll", ExactSpelling = true, SetLastError = true)]        internal static extern bool OpenProcessToken(IntPtr h, int acc, ref IntPtr phtok);        [DllImport("advapi32.dll", SetLastError = true)]        internal static extern bool LookupPrivilegeValue(string host, string name, ref long pluid);        [DllImport("advapi32.dll", ExactSpelling = true, SetLastError = true)]        internal static extern bool AdjustTokenPrivileges(IntPtr htok, bool disall, ref TokPriv1Luid newst, int len, IntPtr prev, IntPtr relen);        [DllImport("user32.dll", ExactSpelling = true, SetLastError = true)]        internal static extern bool ExitWindowsEx(int DoFlag, int rea);        #region [ Shutdown Functions ]        private static void DoExitWin(int DoFlag)        {            bool ok;            TokPriv1Luid tp;            IntPtr hproc = GetCurrentProcess();            IntPtr htok = IntPtr.Zero;            ok = OpenProcessToken(hproc, TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, ref htok);            tp.Count = 1;            tp.Luid = 0;            tp.Attr = SE_PRIVILEGE_ENABLED;            ok = LookupPrivilegeValue(null, SE_SHUTDOWN_NAME, ref tp.Luid);            ok = AdjustTokenPrivileges(htok, false, ref tp, 0, IntPtr.Zero, IntPtr.Zero);            ok = ExitWindowsEx(DoFlag, 0);        }        public static void Reboot()        {            DoExitWin(EWX_FORCE | EWX_REBOOT);        }        public static void PowerOff()        {            DoExitWin(EWX_FORCE | EWX_POWEROFF);        }        public static void LogOff()        {            DoExitWin(EWX_FORCE | EWX_LOGOFF);        }        #endregion    }}

0 0
原创粉丝点击