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

327 lines
14 KiB

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);
}
}