Advertisement
Guest User

Untitled

a guest
Feb 9th, 2016
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 16.03 KB | None | 0 0
  1. ##
  2. ##
  3. Add-Type -Type @"
  4. using System;
  5. using System.Runtime.InteropServices;
  6. using System.Text;
  7.  
  8. namespace TE
  9. {
  10. public static class Win32Methods
  11. {
  12. internal const int GWL_EXSTYLE = -20;
  13. internal const int LWA_ALPHA = 0x2;
  14. internal const int LWA_COLORKEY = 0x1;
  15.  
  16. /// <summary>
  17. /// Window Styles.
  18. /// The following styles can be specified wherever a window style is required. After the control has been created,
  19. /// these styles cannot be modified, except as noted.
  20. /// </summary>
  21. [Flags]
  22. public enum WindowStyles : uint
  23. {
  24. /// <summary>The window has a thin-line border.</summary>
  25. WS_BORDER = 0x800000,
  26.  
  27. /// <summary>The window has a title bar (includes the WS_BORDER style).</summary>
  28. WS_CAPTION = 0xc00000,
  29.  
  30. /// <summary>
  31. /// The window is a child window. A window with this style cannot have a menu bar. This style cannot be used with
  32. /// the WS_POPUP style.
  33. /// </summary>
  34. WS_CHILD = 0x40000000,
  35.  
  36. /// <summary>
  37. /// Excludes the area occupied by child windows when drawing occurs within the parent window. This style is used
  38. /// when creating the parent window.
  39. /// </summary>
  40. WS_CLIPCHILDREN = 0x2000000,
  41.  
  42. /// <summary>
  43. /// Clips child windows relative to each other; that is, when a particular child window receives a WM_PAINT message,
  44. /// the WS_CLIPSIBLINGS style clips all other overlapping child windows out of the region of the child window to be
  45. /// updated.
  46. /// If WS_CLIPSIBLINGS is not specified and child windows overlap, it is possible, when drawing within the client area
  47. /// of a child window, to draw within the client area of a neighboring child window.
  48. /// </summary>
  49. WS_CLIPSIBLINGS = 0x4000000,
  50.  
  51. /// <summary>
  52. /// The window is initially disabled. A disabled window cannot receive input from the user. To change this after a
  53. /// window has been created, use the EnableWindow function.
  54. /// </summary>
  55. WS_DISABLED = 0x8000000,
  56.  
  57. /// <summary>
  58. /// The window has a border of a style typically used with dialog boxes. A window with this style cannot have a
  59. /// title bar.
  60. /// </summary>
  61. WS_DLGFRAME = 0x400000,
  62.  
  63. /// <summary>
  64. /// The window is the first control of a group of controls. The group consists of this first control and all controls
  65. /// defined after it, up to the next control with the WS_GROUP style.
  66. /// The first control in each group usually has the WS_TABSTOP style so that the user can move from group to group. The
  67. /// user can subsequently change the keyboard focus from one control in the group to the next control in the group by
  68. /// using the direction keys.
  69. /// You can turn this style on and off to change dialog box navigation. To change this style after a window has been
  70. /// created, use the SetWindowLong function.
  71. /// </summary>
  72. WS_GROUP = 0x20000,
  73.  
  74. /// <summary>The window has a horizontal scroll bar.</summary>
  75. WS_HSCROLL = 0x100000,
  76.  
  77. /// <summary>The window is initially maximized.</summary>
  78. WS_MAXIMIZE = 0x1000000,
  79.  
  80. /// <summary>
  81. /// The window has a maximize button. Cannot be combined with the WS_EX_CONTEXTHELP style. The WS_SYSMENU style
  82. /// must also be specified.
  83. /// </summary>
  84. WS_MAXIMIZEBOX = 0x10000,
  85.  
  86. /// <summary>The window is initially minimized.</summary>
  87. WS_MINIMIZE = 0x20000000,
  88.  
  89. /// <summary>
  90. /// The window has a minimize button. Cannot be combined with the WS_EX_CONTEXTHELP style. The WS_SYSMENU style
  91. /// must also be specified.
  92. /// </summary>
  93. WS_MINIMIZEBOX = 0x20000,
  94.  
  95. /// <summary>The window is an overlapped window. An overlapped window has a title bar and a border.</summary>
  96. WS_OVERLAPPED = 0x0,
  97.  
  98. /// <summary>The window is an overlapped window.</summary>
  99. WS_OVERLAPPEDWINDOW =
  100. WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_SIZEFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX,
  101.  
  102. /// <summary>The window is a pop-up window. This style cannot be used with the WS_CHILD style.</summary>
  103. WS_POPUP = 0x80000000u,
  104.  
  105. /// <summary>
  106. /// The window is a pop-up window. The WS_CAPTION and WS_POPUPWINDOW styles must be combined to make the window
  107. /// menu visible.
  108. /// </summary>
  109. WS_POPUPWINDOW = WS_POPUP | WS_BORDER | WS_SYSMENU,
  110.  
  111. /// <summary>The window has a sizing border.</summary>
  112. WS_SIZEFRAME = 0x40000,
  113.  
  114. /// <summary>The window has a window menu on its title bar. The WS_CAPTION style must also be specified.</summary>
  115. WS_SYSMENU = 0x80000,
  116.  
  117. /// <summary>
  118. /// The window is a control that can receive the keyboard focus when the user presses the TAB key.
  119. /// Pressing the TAB key changes the keyboard focus to the next control with the WS_TABSTOP style.
  120. /// You can turn this style on and off to change dialog box navigation. To change this style after a window has been
  121. /// created, use the SetWindowLong function.
  122. /// For user-created windows and modeless dialogs to work with tab stops, alter the message loop to call the
  123. /// IsDialogMessage function.
  124. /// </summary>
  125. WS_TABSTOP = 0x10000,
  126.  
  127. /// <summary>
  128. /// The window is initially visible. This style can be turned on and off by using the ShowWindow or SetWindowPos
  129. /// function.
  130. /// </summary>
  131. WS_VISIBLE = 0x10000000,
  132.  
  133. /// <summary>The window has a vertical scroll bar.</summary>
  134. WS_VSCROLL = 0x200000,
  135.  
  136. WS_THICKFRAME = 0x00040000
  137. }
  138.  
  139. [Flags]
  140. public enum WindowStylesEx : uint
  141. {
  142. /// <summary>
  143. /// Specifies that a window created with this style accepts drag-drop files.
  144. /// </summary>
  145. WS_EX_ACCEPTFILES = 0x00000010,
  146.  
  147. /// <summary>
  148. /// Forces a top-level window onto the taskbar when the window is visible.
  149. /// </summary>
  150. WS_EX_APPWINDOW = 0x00040000,
  151.  
  152. /// <summary>
  153. /// Specifies that a window has a border with a sunken edge.
  154. /// </summary>
  155. WS_EX_CLIENTEDGE = 0x00000200,
  156.  
  157. /// <summary>
  158. /// Windows XP: Paints all descendants of a window in bottom-to-top painting order using double-buffering. For more
  159. /// information, see Remarks. This cannot be used if the window has a class style of either CS_OWNDC or CS_CLASSDC.
  160. /// </summary>
  161. WS_EX_COMPOSITED = 0x02000000,
  162.  
  163. /// <summary>
  164. /// Includes a question mark in the title bar of the window. When the user clicks the question mark, the cursor changes
  165. /// to a question mark with a pointer. If the user then clicks a child window, the child receives a WM_HELP message.
  166. /// The child window should pass the message to the parent window procedure, which should call the WinHelp function
  167. /// using the HELP_WM_HELP command. The Help application displays a pop-up window that typically contains help for the
  168. /// child window.
  169. /// WS_EX_CONTEXTHELP cannot be used with the WS_MAXIMIZEBOX or WS_MINIMIZEBOX styles.
  170. /// </summary>
  171. WS_EX_CONTEXTHELP = 0x00000400,
  172.  
  173. /// <summary>
  174. /// The window itself contains child windows that should take part in dialog box navigation. If this style is
  175. /// specified, the dialog manager recurses into children of this window when performing navigation operations such as
  176. /// handling the TAB key, an arrow key, or a keyboard mnemonic.
  177. /// </summary>
  178. WS_EX_CONTROLPARENT = 0x00010000,
  179.  
  180. /// <summary>
  181. /// Creates a window that has a double border; the window can, optionally, be created with a title bar by specifying
  182. /// the WS_CAPTION style in the dwStyle parameter.
  183. /// </summary>
  184. WS_EX_DLGMODALFRAME = 0x00000001,
  185.  
  186. /// <summary>
  187. /// Windows 2000/XP: Creates a layered window. Note that this cannot be used for child windows. Also, this cannot be
  188. /// used if the window has a class style of either CS_OWNDC or CS_CLASSDC.
  189. /// </summary>
  190. WS_EX_LAYERED = 0x00080000,
  191.  
  192. /// <summary>
  193. /// Arabic and Hebrew versions of Windows 98/Me, Windows 2000/XP: Creates a window whose horizontal origin is on the
  194. /// right edge. Increasing horizontal values advance to the left.
  195. /// </summary>
  196. WS_EX_LAYOUTRTL = 0x00400000,
  197.  
  198. /// <summary>
  199. /// Creates a window that has generic left-aligned properties. This is the default.
  200. /// </summary>
  201. WS_EX_LEFT = 0x00000000,
  202.  
  203. /// <summary>
  204. /// If the shell language is Hebrew, Arabic, or another language that supports reading order alignment, the vertical
  205. /// scroll bar (if present) is to the left of the client area. For other languages, the style is ignored.
  206. /// </summary>
  207. WS_EX_LEFTSCROLLBAR = 0x00004000,
  208.  
  209. /// <summary>
  210. /// The window text is displayed using left-to-right reading-order properties. This is the default.
  211. /// </summary>
  212. WS_EX_LTRREADING = 0x00000000,
  213.  
  214. /// <summary>
  215. /// Creates a multiple-document interface (MDI) child window.
  216. /// </summary>
  217. WS_EX_MDICHILD = 0x00000040,
  218.  
  219. /// <summary>
  220. /// Windows 2000/XP: A top-level window created with this style does not become the foreground window when the user
  221. /// clicks it. The system does not bring this window to the foreground when the user minimizes or closes the foreground
  222. /// window.
  223. /// To activate the window, use the SetActiveWindow or SetForegroundWindow function.
  224. /// The window does not appear on the taskbar by default. To force the window to appear on the taskbar, use the
  225. /// WS_EX_APPWINDOW style.
  226. /// </summary>
  227. WS_EX_NOACTIVATE = 0x08000000,
  228.  
  229. /// <summary>
  230. /// Windows 2000/XP: A window created with this style does not pass its window layout to its child windows.
  231. /// </summary>
  232. WS_EX_NOINHERITLAYOUT = 0x00100000,
  233.  
  234. /// <summary>
  235. /// Specifies that a child window created with this style does not send the WM_PARENTNOTIFY message to its parent
  236. /// window when it is created or destroyed.
  237. /// </summary>
  238. WS_EX_NOPARENTNOTIFY = 0x00000004,
  239.  
  240. /// <summary>
  241. /// Combines the WS_EX_CLIENTEDGE and WS_EX_WINDOWEDGE styles.
  242. /// </summary>
  243. WS_EX_OVERLAPPEDWINDOW = WS_EX_WINDOWEDGE | WS_EX_CLIENTEDGE,
  244.  
  245. /// <summary>
  246. /// Combines the WS_EX_WINDOWEDGE, WS_EX_TOOLWINDOW, and WS_EX_TOPMOST styles.
  247. /// </summary>
  248. WS_EX_PALETTEWINDOW = WS_EX_WINDOWEDGE | WS_EX_TOOLWINDOW | WS_EX_TOPMOST,
  249.  
  250. /// <summary>
  251. /// The window has generic "right-aligned" properties. This depends on the window class. This style has an effect only
  252. /// if the shell language is Hebrew, Arabic, or another language that supports reading-order alignment; otherwise, the
  253. /// style is ignored.
  254. /// Using the WS_EX_RIGHT style for static or edit controls has the same effect as using the SS_RIGHT or ES_RIGHT
  255. /// style, respectively. Using this style with button controls has the same effect as using BS_RIGHT and BS_RIGHTBUTTON
  256. /// styles.
  257. /// </summary>
  258. WS_EX_RIGHT = 0x00001000,
  259.  
  260. /// <summary>
  261. /// Vertical scroll bar (if present) is to the right of the client area. This is the default.
  262. /// </summary>
  263. WS_EX_RIGHTSCROLLBAR = 0x00000000,
  264.  
  265. /// <summary>
  266. /// If the shell language is Hebrew, Arabic, or another language that supports reading-order alignment, the window text
  267. /// is displayed using right-to-left reading-order properties. For other languages, the style is ignored.
  268. /// </summary>
  269. WS_EX_RTLREADING = 0x00002000,
  270.  
  271. /// <summary>
  272. /// Creates a window with a three-dimensional border style intended to be used for items that do not accept user input.
  273. /// </summary>
  274. WS_EX_STATICEDGE = 0x00020000,
  275.  
  276. /// <summary>
  277. /// Creates a tool window; that is, a window intended to be used as a floating toolbar. A tool window has a title bar
  278. /// that is shorter than a normal title bar, and the window title is drawn using a smaller font. A tool window does not
  279. /// appear in the taskbar or in the dialog that appears when the user presses ALT+TAB. If a tool window has a system
  280. /// menu, its icon is not displayed on the title bar. However, you can display the system menu by right-clicking or by
  281. /// typing ALT+SPACE.
  282. /// </summary>
  283. WS_EX_TOOLWINDOW = 0x00000080,
  284.  
  285. /// <summary>
  286. /// Specifies that a window created with this style should be placed above all non-topmost windows and should stay
  287. /// above them, even when the window is deactivated. To add or remove this style, use the SetWindowPos function.
  288. /// </summary>
  289. WS_EX_TOPMOST = 0x00000008,
  290.  
  291. /// <summary>
  292. /// Specifies that a window created with this style should not be painted until siblings beneath the window (that were
  293. /// created by the same thread) have been painted. The window appears transparent because the bits of underlying
  294. /// sibling windows have already been painted.
  295. /// To achieve transparency without these restrictions, use the SetWindowRgn function.
  296. /// </summary>
  297. WS_EX_TRANSPARENT = 0x00000020,
  298.  
  299. /// <summary>
  300. /// Specifies that a window has a border with a raised edge.
  301. /// </summary>
  302. WS_EX_WINDOWEDGE = 0x00000100
  303. }
  304.  
  305. [DllImport("user32.dll")]
  306. internal static extern bool SetLayeredWindowAttributes(IntPtr hwnd, uint crKey, byte bAlpha, uint dwFlags);
  307.  
  308. [DllImport("user32.dll")]
  309. internal static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong);
  310.  
  311. [DllImport("user32.dll")]
  312. internal static extern int GetWindowLong(IntPtr hWnd, int nIndex);
  313.  
  314. public static void SetWindowTransparent(IntPtr hWnd)
  315. {
  316. // Set layered ex style
  317. SetWindowLong(hWnd, GWL_EXSTYLE, GetWindowLong(hWnd, GWL_EXSTYLE) ^ (int)WindowStylesEx.WS_EX_LAYERED);
  318. SetLayeredWindowAttributes(hWnd, 0, 230, LWA_ALPHA);
  319. }
  320.  
  321. public static void SetWindowCaptionStyle(IntPtr hWnd)
  322. {
  323. // TODO: set correct style
  324. SetWindowLong(hWnd, GWL_EXSTYLE, GetWindowLong(hWnd, GWL_EXSTYLE) ^ (int)WindowStylesEx.WS_EX_LAYERED);
  325. SetLayeredWindowAttributes(hWnd, 0, 230, LWA_ALPHA);
  326. }
  327. }
  328. }
  329.  
  330. "@
  331. $hwnd = (Get-Process -Name SwingCatalyst).MainWindowHandle
  332. [TE.Win32Methods]::SetWindowCaptionStyle($hwnd)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement