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

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Runtime.InteropServices;
  4. using System.Text;
  5. namespace Apewer.Internals.Interop
  6. {
  7. [System.Security.SecuritySafeCritical]
  8. class User32
  9. {
  10. /// <summary>窗体动画。</summary>
  11. /// <param name="hwnd">窗体句柄。</param>
  12. /// <param name="dwtime">动画时间(毫秒)。</param>
  13. /// <param name="dwflag">动画组合名称。</param>
  14. [DllImport("user32")]
  15. public static extern bool AnimateWindow(IntPtr hwnd, int dwtime, int dwflag);
  16. /// <summary></summary>
  17. /// <param name="idHook"></param>
  18. /// <param name="nCode"></param>
  19. /// <param name="wParam"></param>
  20. /// <param name="lParam"></param>
  21. /// <returns></returns>
  22. [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
  23. public static extern int CallNextHookEx(int idHook, int nCode, Int32 wParam, IntPtr lParam);
  24. /// <summary></summary>
  25. /// <param name="devMode"></param>
  26. /// <param name="flags"></param>
  27. /// <returns></returns>
  28. [DllImport("user32.dll")]
  29. public static extern int ChangeDisplaySettings(ref DevMode devMode, int flags);
  30. /// <summary>Destroys an icon and frees any memory the icon occupied.</summary>
  31. /// <remarks>details: https://msdn.microsoft.com/en-us/library/windows/desktop/ms648063(v=vs.85).aspx </remarks>
  32. /// <param name="hIcon">A handle to the icon to be destroyed. The icon must not be in use.</param>
  33. [DllImport("user32.dll")]
  34. public static extern bool DestroyIcon(IntPtr hIcon);
  35. [DllImport("user32.dll", ExactSpelling = true, SetLastError = true)]
  36. public static extern bool ExitWindowsEx(int flg, int rea);
  37. /// <summary></summary>
  38. /// <param name="deviceName"></param>
  39. /// <param name="modeNum"></param>
  40. /// <param name="devMode"></param>
  41. /// <returns></returns>
  42. [DllImport("user32.dll")]
  43. public static extern int EnumDisplaySettings(string deviceName, int modeNum, ref DevMode devMode);
  44. /// <summary></summary>
  45. /// <param name="x"></param>
  46. /// <param name="y"></param>
  47. /// <returns></returns>
  48. [DllImport("user32")]
  49. public static extern int EnumWindows(EnumWindowsCallBack x, int y);
  50. /// <summary></summary>
  51. [DllImport("User32.dll ", EntryPoint = "FindWindow")]
  52. public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
  53. /// <summary></summary>
  54. [DllImport("user32.dll")]
  55. public static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string strClass, string strWindow);
  56. /// <summary></summary>
  57. /// <param name="hwnd"></param>
  58. /// <param name="nIndex"></param>
  59. /// <returns></returns>
  60. [DllImport("user32.dll", CharSet = CharSet.Auto)]
  61. public static extern int GetClassLong(IntPtr hwnd, int nIndex);
  62. /// <summary></summary>
  63. /// <param name="hWnd"></param>
  64. /// <param name="lpString"></param>
  65. /// <param name="nMaxCount"></param>
  66. /// <returns></returns>
  67. [DllImport("user32.dll")]
  68. public static extern int GetClassNameW(IntPtr hWnd, [MarshalAs(UnmanagedType.LPWStr)] System.Text.StringBuilder lpString, int nMaxCount);
  69. /// <summary></summary>
  70. /// <param name="hwnd"></param>
  71. /// <returns></returns>
  72. [DllImport("user32.dll", ExactSpelling = true, SetLastError = true)]
  73. public static extern IntPtr GetDC(IntPtr hwnd);
  74. /// <summary></summary>
  75. /// <param name="pbKeyState"></param>
  76. /// <returns></returns>
  77. [DllImport("user32")]
  78. public static extern int GetKeyboardState(byte[] pbKeyState);
  79. /// <summary></summary>
  80. /// <param name="KeyCode"></param>
  81. /// <returns></returns>
  82. [DllImport("User32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
  83. public static extern short GetKeyState(int KeyCode);
  84. /// <summary></summary>
  85. /// <param name="hwnd"></param>
  86. /// <param name="nindex"></param>
  87. /// <returns></returns>
  88. [DllImport("user32", EntryPoint = "GetWindowLong")]
  89. public static extern int GetWindowLong(IntPtr hwnd, int nindex);
  90. /// <summary></summary>
  91. [DllImport("user32.dll")]
  92. public static extern bool GetWindowRect(HandleRef hwnd, out NativeRECT rect);
  93. /// <summary></summary>
  94. /// <param name="hWnd"></param>
  95. /// <param name="lpString"></param>
  96. /// <param name="nMaxCount"></param>
  97. /// <returns></returns>
  98. [DllImport("user32.dll")]
  99. public static extern int GetWindowTextW(IntPtr hWnd, [MarshalAs(UnmanagedType.LPWStr)] System.Text.StringBuilder lpString, int nMaxCount);
  100. /// <summary></summary>
  101. /// <param name="hWnd"></param>
  102. /// <returns></returns>
  103. [DllImport("user32.dll")]
  104. public static extern bool IsWindowVisible(int hWnd);
  105. /// <summary></summary>
  106. /// <param name="bVk"></param>
  107. /// <param name="bScan"></param>
  108. /// <param name="dwFlags"></param>
  109. /// <param name="dwExtraInfo"></param>
  110. [DllImport("user32.dll")]
  111. public static extern void keybd_Callback(byte bVk, byte bScan, uint dwFlags, uint dwExtraInfo);
  112. /// <summary></summary>
  113. /// <param name="type"></param>
  114. /// <returns></returns>
  115. [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
  116. public static extern bool MessageBeep(int type);
  117. /// <summary></summary>
  118. /// <param name="dwFlags"></param>
  119. /// <param name="dx"></param>
  120. /// <param name="dy"></param>
  121. /// <param name="dwData"></param>
  122. /// <param name="dwExtraInfo"></param>
  123. [DllImport("user32.dll")]
  124. public static extern void mouse_Callback(int dwFlags, int dx, int dy, int dwData, int dwExtraInfo);
  125. /// <summary></summary>
  126. /// <param name="flags"></param>
  127. /// <param name="dx"></param>
  128. /// <param name="dy"></param>
  129. /// <param name="data"></param>
  130. /// <param name="extraInfo"></param>
  131. [DllImport("user32.dll")]
  132. public static extern void mouse_Callback(MouseCallbackFlag flags, int dx, int dy, uint data, UIntPtr extraInfo);
  133. /// <summary>发送消息,不等待返回。</summary>
  134. /// <param name="hwnd"></param>
  135. /// <param name="wMsg"></param>
  136. /// <param name="wParam"></param>
  137. /// <param name="lParam"></param>
  138. /// <returns></returns>
  139. [DllImport("user32.dll ", CharSet = CharSet.Unicode)]
  140. public static extern IntPtr PostMessage(IntPtr hwnd, int wMsg, IntPtr wParam, IntPtr lParam);
  141. /// <summary>
  142. /// <para>Creates an array of handles to icons that are extracted from a specified file.</para>
  143. /// <para>This function extracts from executable (.exe), DLL (.dll), icon (.ico), cursor (.cur), animated cursor (.ani), and bitmap (.bmp) files. </para>
  144. /// <para>Extractions from Windows 3.x 16-bit executables (.exe or .dll) are also supported.</para>
  145. /// </summary>
  146. /// <remarks>details: https://msdn.microsoft.com/en-us/library/windows/desktop/ms648075(v=vs.85).aspx </remarks>
  147. /// <param name="lpszFile">file name</param>
  148. /// <param name="nIconIndex">The zero-based index of the first icon to extract.</param>
  149. /// <param name="cxIcon">The horizontal icon size wanted.</param>
  150. /// <param name="cyIcon">The vertical icon size wanted.</param>
  151. /// <param name="phicon">(out) A pointer to the returned array of icon handles.</param>
  152. /// <param name="piconid">(out) A pointer to a returned resource identifier.</param>
  153. /// <param name="nIcons">The number of icons to extract from the file. Only valid when *.exe and *.dll</param>
  154. /// <param name="flags">Specifies flags that control this function.</param>
  155. [DllImport("user32.dll")]
  156. public static extern int PrivateExtractIcons(string lpszFile, int nIconIndex, int cxIcon, int cyIcon, IntPtr[] phicon, int[] piconid, int nIcons, int flags);
  157. /// <summary>发送消息,不等待返回。</summary>
  158. /// <param name="hwnd"></param>
  159. /// <param name="wMsg"></param>
  160. /// <param name="wParam"></param>
  161. /// <param name="lParam"></param>
  162. /// <returns></returns>
  163. [DllImport("user32.dll ", CharSet = CharSet.Unicode)]
  164. public static extern IntPtr PostMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);
  165. /// <summary></summary>
  166. /// <returns></returns>
  167. [DllImport("user32.dll", EntryPoint = "ReleaseCapture")]
  168. public static extern int ReleaseCapture();
  169. /// <summary></summary>
  170. /// <param name="hwnd"></param>
  171. /// <param name="hdc"></param>
  172. /// <returns></returns>
  173. [DllImport("user32.dll", ExactSpelling = true)]
  174. public static extern int ReleaseDC(IntPtr hwnd, IntPtr hdc);
  175. /// <summary>发送消息,并等待返回。</summary>
  176. /// <param name="hwnd"></param>
  177. /// <param name="msg"></param>
  178. /// <param name="wparam"></param>
  179. /// <param name="lparam"></param>
  180. /// <returns></returns>
  181. [DllImport("user32.dll", EntryPoint = "SendMessage")]
  182. public static extern int SendMessage(IntPtr hwnd, int msg, IntPtr wparam, IntPtr lparam);
  183. /// <summary>发送消息,并等待返回。</summary>
  184. /// <param name="hWnd"></param>
  185. /// <param name="Msg"></param>
  186. /// <param name="wParam"></param>
  187. /// <param name="lParam"></param>
  188. /// <returns></returns>
  189. [DllImport("user32.dll")]
  190. [System.Security.SecuritySafeCritical]
  191. public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
  192. /// <summary></summary>
  193. /// <param name="hWnd"></param>
  194. /// <returns></returns>
  195. [DllImport("user32.dll")]
  196. public static extern IntPtr SetActiveWindow(IntPtr hWnd);
  197. /// <summary></summary>
  198. /// <param name="hwnd"></param>
  199. /// <param name="nIndex"></param>
  200. /// <param name="dwNewLong"></param>
  201. /// <returns></returns>
  202. [DllImport("user32.dll", CharSet = CharSet.Auto)]
  203. public static extern int SetClassLong(IntPtr hwnd, int nIndex, int dwNewLong);
  204. /// <summary></summary>
  205. /// <param name="X"></param>
  206. /// <param name="Y"></param>
  207. /// <returns></returns>
  208. [DllImport("user32.dll")]
  209. public static extern bool SetCursorPos(int X, int Y);
  210. /// <summary></summary>
  211. /// <param name="hWnd"></param>
  212. /// <returns></returns>
  213. [DllImport("user32.dll")]
  214. public static extern bool SetForegroundWindow(IntPtr hWnd);
  215. /// <summary></summary>
  216. /// <param name="idHook"></param>
  217. /// <param name="lpfn"></param>
  218. /// <param name="hInstance"></param>
  219. /// <param name="threadId"></param>
  220. /// <returns></returns>
  221. [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
  222. public static extern int SetWindowsHookEx(int idHook, SetWindowsHookExHookProc lpfn, IntPtr hInstance, int threadId);
  223. /// <summary></summary>
  224. /// <param name="hwnd"></param>
  225. /// <param name="nindex"></param>
  226. /// <param name="dwnewlong"></param>
  227. /// <returns></returns>
  228. [DllImport("user32.dll")]
  229. public static extern int SetWindowLong(IntPtr hwnd, int nindex, int dwnewlong);
  230. /// <summary></summary>
  231. /// <param name="hWnd"></param>
  232. /// <param name="hWndlnsertAfter"></param>
  233. /// <param name="X"></param>
  234. /// <param name="Y"></param>
  235. /// <param name="cx"></param>
  236. /// <param name="cy"></param>
  237. /// <param name="Flags"></param>
  238. /// <returns></returns>
  239. [DllImport("user32.dll")]
  240. public static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndlnsertAfter, int X, int Y, int cx, int cy, uint Flags);
  241. /// <summary></summary>
  242. /// <param name="hwnd"></param>
  243. /// <param name="hRgn"></param>
  244. /// <param name="bRedraw"></param>
  245. /// <returns></returns>
  246. [DllImport("user32.dll")]
  247. public static extern int SetWindowRgn(IntPtr hwnd, int hRgn, Boolean bRedraw);
  248. /// <summary></summary>
  249. /// <param name="hwnd"></param>
  250. /// <param name="nCmdShow"></param>
  251. /// <returns></returns>
  252. [DllImport("user32.dll", EntryPoint = "ShowWindow", CharSet = CharSet.Auto)]
  253. public static extern int ShowWindow(IntPtr hwnd, int nCmdShow);
  254. /// <summary></summary>
  255. /// <param name="uVirtKey"></param>
  256. /// <param name="uScanCode"></param>
  257. /// <param name="lpbKeyState"></param>
  258. /// <param name="lpwTransKey"></param>
  259. /// <param name="fuState"></param>
  260. /// <returns></returns>
  261. [DllImport("user32")]
  262. public static extern int ToAscii(int uVirtKey, int uScanCode, byte[] lpbKeyState, byte[] lpwTransKey, int fuState);
  263. /// <summary></summary>
  264. /// <param name="idHook"></param>
  265. /// <returns></returns>
  266. [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
  267. public static extern bool UnhookWindowsHookEx(int idHook);
  268. /// <summary></summary>
  269. /// <param name="hwnd"></param>
  270. /// <param name="hdcdst"></param>
  271. /// <param name="pptdst"></param>
  272. /// <param name="psize"></param>
  273. /// <param name="hdcsrc"></param>
  274. /// <param name="pptsrc"></param>
  275. /// <param name="crkey"></param>
  276. /// <param name="pblend"></param>
  277. /// <param name="dwflags"></param>
  278. /// <returns></returns>
  279. [DllImport("user32.dll", ExactSpelling = true, SetLastError = true)]
  280. 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);
  281. }
  282. }