using System; using System.Collections.Generic; using System.Runtime.InteropServices; using System.Text; namespace Apewer.Internals.Interop { [System.Security.SecuritySafeCritical] class User32 { /// <summary>窗体动画。</summary> /// <param name="hwnd">窗体句柄。</param> /// <param name="dwtime">动画时间(毫秒)。</param> /// <param name="dwflag">动画组合名称。</param> [DllImport("user32")] public static extern bool AnimateWindow(IntPtr hwnd, int dwtime, int dwflag); /// <summary></summary> /// <param name="idHook"></param> /// <param name="nCode"></param> /// <param name="wParam"></param> /// <param name="lParam"></param> /// <returns></returns> [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)] public static extern int CallNextHookEx(int idHook, int nCode, Int32 wParam, IntPtr lParam); /// <summary></summary> /// <param name="devMode"></param> /// <param name="flags"></param> /// <returns></returns> [DllImport("user32.dll")] public static extern int ChangeDisplaySettings(ref DevMode devMode, int flags); /// <summary>Destroys an icon and frees any memory the icon occupied.</summary> /// <remarks>details: https://msdn.microsoft.com/en-us/library/windows/desktop/ms648063(v=vs.85).aspx </remarks> /// <param name="hIcon">A handle to the icon to be destroyed. The icon must not be in use.</param> [DllImport("user32.dll")] public static extern bool DestroyIcon(IntPtr hIcon); [DllImport("user32.dll", ExactSpelling = true, SetLastError = true)] public static extern bool ExitWindowsEx(int flg, int rea); /// <summary></summary> /// <param name="deviceName"></param> /// <param name="modeNum"></param> /// <param name="devMode"></param> /// <returns></returns> [DllImport("user32.dll")] public static extern int EnumDisplaySettings(string deviceName, int modeNum, ref DevMode devMode); /// <summary></summary> /// <param name="x"></param> /// <param name="y"></param> /// <returns></returns> [DllImport("user32")] public static extern int EnumWindows(EnumWindowsCallBack x, int y); /// <summary></summary> [DllImport("User32.dll ", EntryPoint = "FindWindow")] public static extern IntPtr FindWindow(string lpClassName, string lpWindowName); /// <summary></summary> [DllImport("user32.dll")] public static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string strClass, string strWindow); /// <summary></summary> /// <param name="hwnd"></param> /// <param name="nIndex"></param> /// <returns></returns> [DllImport("user32.dll", CharSet = CharSet.Auto)] public static extern int GetClassLong(IntPtr hwnd, int nIndex); /// <summary></summary> /// <param name="hWnd"></param> /// <param name="lpString"></param> /// <param name="nMaxCount"></param> /// <returns></returns> [DllImport("user32.dll")] public static extern int GetClassNameW(IntPtr hWnd, [MarshalAs(UnmanagedType.LPWStr)] System.Text.StringBuilder lpString, int nMaxCount); /// <summary></summary> /// <param name="hwnd"></param> /// <returns></returns> [DllImport("user32.dll", ExactSpelling = true, SetLastError = true)] public static extern IntPtr GetDC(IntPtr hwnd); /// <summary></summary> /// <param name="pbKeyState"></param> /// <returns></returns> [DllImport("user32")] public static extern int GetKeyboardState(byte[] pbKeyState); /// <summary></summary> /// <param name="KeyCode"></param> /// <returns></returns> [DllImport("User32.dll", CharSet = CharSet.Auto, ExactSpelling = true)] public static extern short GetKeyState(int KeyCode); /// <summary></summary> /// <param name="hwnd"></param> /// <param name="nindex"></param> /// <returns></returns> [DllImport("user32", EntryPoint = "GetWindowLong")] public static extern int GetWindowLong(IntPtr hwnd, int nindex); /// <summary></summary> [DllImport("user32.dll")] public static extern bool GetWindowRect(HandleRef hwnd, out NativeRECT rect); /// <summary></summary> /// <param name="hWnd"></param> /// <param name="lpString"></param> /// <param name="nMaxCount"></param> /// <returns></returns> [DllImport("user32.dll")] public static extern int GetWindowTextW(IntPtr hWnd, [MarshalAs(UnmanagedType.LPWStr)] System.Text.StringBuilder lpString, int nMaxCount); /// <summary></summary> /// <param name="hWnd"></param> /// <returns></returns> [DllImport("user32.dll")] public static extern bool IsWindowVisible(int hWnd); /// <summary></summary> /// <param name="bVk"></param> /// <param name="bScan"></param> /// <param name="dwFlags"></param> /// <param name="dwExtraInfo"></param> [DllImport("user32.dll")] public static extern void keybd_Callback(byte bVk, byte bScan, uint dwFlags, uint dwExtraInfo); /// <summary></summary> /// <param name="type"></param> /// <returns></returns> [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)] public static extern bool MessageBeep(int type); /// <summary></summary> /// <param name="dwFlags"></param> /// <param name="dx"></param> /// <param name="dy"></param> /// <param name="dwData"></param> /// <param name="dwExtraInfo"></param> [DllImport("user32.dll")] public static extern void mouse_Callback(int dwFlags, int dx, int dy, int dwData, int dwExtraInfo); /// <summary></summary> /// <param name="flags"></param> /// <param name="dx"></param> /// <param name="dy"></param> /// <param name="data"></param> /// <param name="extraInfo"></param> [DllImport("user32.dll")] public static extern void mouse_Callback(MouseCallbackFlag flags, int dx, int dy, uint data, UIntPtr extraInfo); /// <summary>发送消息,不等待返回。</summary> /// <param name="hwnd"></param> /// <param name="wMsg"></param> /// <param name="wParam"></param> /// <param name="lParam"></param> /// <returns></returns> [DllImport("user32.dll ", CharSet = CharSet.Unicode)] public static extern IntPtr PostMessage(IntPtr hwnd, int wMsg, IntPtr wParam, IntPtr lParam); /// <summary> /// <para>Creates an array of handles to icons that are extracted from a specified file.</para> /// <para>This function extracts from executable (.exe), DLL (.dll), icon (.ico), cursor (.cur), animated cursor (.ani), and bitmap (.bmp) files. </para> /// <para>Extractions from Windows 3.x 16-bit executables (.exe or .dll) are also supported.</para> /// </summary> /// <remarks>details: https://msdn.microsoft.com/en-us/library/windows/desktop/ms648075(v=vs.85).aspx </remarks> /// <param name="lpszFile">file name</param> /// <param name="nIconIndex">The zero-based index of the first icon to extract.</param> /// <param name="cxIcon">The horizontal icon size wanted.</param> /// <param name="cyIcon">The vertical icon size wanted.</param> /// <param name="phicon">(out) A pointer to the returned array of icon handles.</param> /// <param name="piconid">(out) A pointer to a returned resource identifier.</param> /// <param name="nIcons">The number of icons to extract from the file. Only valid when *.exe and *.dll</param> /// <param name="flags">Specifies flags that control this function.</param> [DllImport("user32.dll")] public static extern int PrivateExtractIcons(string lpszFile, int nIconIndex, int cxIcon, int cyIcon, IntPtr[] phicon, int[] piconid, int nIcons, int flags); /// <summary>发送消息,不等待返回。</summary> /// <param name="hwnd"></param> /// <param name="wMsg"></param> /// <param name="wParam"></param> /// <param name="lParam"></param> /// <returns></returns> [DllImport("user32.dll ", CharSet = CharSet.Unicode)] public static extern IntPtr PostMessage(IntPtr hwnd, int wMsg, int wParam, int lParam); /// <summary></summary> /// <returns></returns> [DllImport("user32.dll", EntryPoint = "ReleaseCapture")] public static extern int ReleaseCapture(); /// <summary></summary> /// <param name="hwnd"></param> /// <param name="hdc"></param> /// <returns></returns> [DllImport("user32.dll", ExactSpelling = true)] public static extern int ReleaseDC(IntPtr hwnd, IntPtr hdc); /// <summary>发送消息,并等待返回。</summary> /// <param name="hwnd"></param> /// <param name="msg"></param> /// <param name="wparam"></param> /// <param name="lparam"></param> /// <returns></returns> [DllImport("user32.dll", EntryPoint = "SendMessage")] public static extern int SendMessage(IntPtr hwnd, int msg, IntPtr wparam, IntPtr lparam); /// <summary>发送消息,并等待返回。</summary> /// <param name="hWnd"></param> /// <param name="Msg"></param> /// <param name="wParam"></param> /// <param name="lParam"></param> /// <returns></returns> [DllImport("user32.dll")] [System.Security.SecuritySafeCritical] public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam); /// <summary></summary> /// <param name="hWnd"></param> /// <returns></returns> [DllImport("user32.dll")] public static extern IntPtr SetActiveWindow(IntPtr hWnd); /// <summary></summary> /// <param name="hwnd"></param> /// <param name="nIndex"></param> /// <param name="dwNewLong"></param> /// <returns></returns> [DllImport("user32.dll", CharSet = CharSet.Auto)] public static extern int SetClassLong(IntPtr hwnd, int nIndex, int dwNewLong); /// <summary></summary> /// <param name="X"></param> /// <param name="Y"></param> /// <returns></returns> [DllImport("user32.dll")] public static extern bool SetCursorPos(int X, int Y); /// <summary></summary> /// <param name="hWnd"></param> /// <returns></returns> [DllImport("user32.dll")] public static extern bool SetForegroundWindow(IntPtr hWnd); /// <summary></summary> /// <param name="idHook"></param> /// <param name="lpfn"></param> /// <param name="hInstance"></param> /// <param name="threadId"></param> /// <returns></returns> [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)] public static extern int SetWindowsHookEx(int idHook, SetWindowsHookExHookProc lpfn, IntPtr hInstance, int threadId); /// <summary></summary> /// <param name="hwnd"></param> /// <param name="nindex"></param> /// <param name="dwnewlong"></param> /// <returns></returns> [DllImport("user32.dll")] public static extern int SetWindowLong(IntPtr hwnd, int nindex, int dwnewlong); /// <summary></summary> /// <param name="hWnd"></param> /// <param name="hWndlnsertAfter"></param> /// <param name="X"></param> /// <param name="Y"></param> /// <param name="cx"></param> /// <param name="cy"></param> /// <param name="Flags"></param> /// <returns></returns> [DllImport("user32.dll")] public static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndlnsertAfter, int X, int Y, int cx, int cy, uint Flags); /// <summary></summary> /// <param name="hwnd"></param> /// <param name="hRgn"></param> /// <param name="bRedraw"></param> /// <returns></returns> [DllImport("user32.dll")] public static extern int SetWindowRgn(IntPtr hwnd, int hRgn, Boolean bRedraw); /// <summary></summary> /// <param name="hwnd"></param> /// <param name="nCmdShow"></param> /// <returns></returns> [DllImport("user32.dll", EntryPoint = "ShowWindow", CharSet = CharSet.Auto)] public static extern int ShowWindow(IntPtr hwnd, int nCmdShow); /// <summary></summary> /// <param name="uVirtKey"></param> /// <param name="uScanCode"></param> /// <param name="lpbKeyState"></param> /// <param name="lpwTransKey"></param> /// <param name="fuState"></param> /// <returns></returns> [DllImport("user32")] public static extern int ToAscii(int uVirtKey, int uScanCode, byte[] lpbKeyState, byte[] lpwTransKey, int fuState); /// <summary></summary> /// <param name="idHook"></param> /// <returns></returns> [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)] public static extern bool UnhookWindowsHookEx(int idHook); /// <summary></summary> /// <param name="hwnd"></param> /// <param name="hdcdst"></param> /// <param name="pptdst"></param> /// <param name="psize"></param> /// <param name="hdcsrc"></param> /// <param name="pptsrc"></param> /// <param name="crkey"></param> /// <param name="pblend"></param> /// <param name="dwflags"></param> /// <returns></returns> [DllImport("user32.dll", ExactSpelling = true, SetLastError = true)] public static extern int UpdateLayeredWindow(IntPtr hwnd, IntPtr hdcdst, ref Point pptdst, ref Size psize, IntPtr hdcsrc, ref Point pptsrc, Int32 crkey, ref BlendFunction pblend, Int32 dwflags); } }