12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- using System;
- using System.Runtime.InteropServices;
- namespace Hardcodet.Wpf.TaskbarNotification.Interop
- {
- /// <summary>
- /// Win32 API imports.
- /// </summary>
- internal static class WinApi
- {
- private const string User32 = "user32.dll";
- /// <summary>
- /// Creates, updates or deletes the taskbar icon.
- /// </summary>
- [DllImport("shell32.Dll", CharSet = CharSet.Unicode)]
- public static extern bool Shell_NotifyIcon(NotifyCommand cmd, [In] ref NotifyIconData data);
- /// <summary>
- /// Creates the helper window that receives messages from the taskar icon.
- /// </summary>
- [DllImport(User32, EntryPoint = "CreateWindowExW", SetLastError = true)]
- public static extern IntPtr CreateWindowEx(int dwExStyle, [MarshalAs(UnmanagedType.LPWStr)] string lpClassName,
- [MarshalAs(UnmanagedType.LPWStr)] string lpWindowName, int dwStyle, int x, int y,
- int nWidth, int nHeight, IntPtr hWndParent, IntPtr hMenu, IntPtr hInstance,
- IntPtr lpParam);
- /// <summary>
- /// Processes a default windows procedure.
- /// </summary>
- [DllImport(User32)]
- public static extern IntPtr DefWindowProc(IntPtr hWnd, uint msg, IntPtr wparam, IntPtr lparam);
- /// <summary>
- /// Registers the helper window class.
- /// </summary>
- [DllImport(User32, EntryPoint = "RegisterClassW", SetLastError = true)]
- public static extern short RegisterClass(ref WindowClass lpWndClass);
- /// <summary>
- /// Registers a listener for a window message.
- /// </summary>
- /// <param name="lpString"></param>
- /// <returns>uint</returns>
- [DllImport(User32, EntryPoint = "RegisterWindowMessageW")]
- public static extern uint RegisterWindowMessage([MarshalAs(UnmanagedType.LPWStr)] string lpString);
- /// <summary>
- /// Used to destroy the hidden helper window that receives messages from the
- /// taskbar icon.
- /// </summary>
- /// <param name="hWnd"></param>
- /// <returns>bool</returns>
- [DllImport(User32, SetLastError = true)]
- public static extern bool DestroyWindow(IntPtr hWnd);
- /// <summary>
- /// Gives focus to a given window.
- /// </summary>
- /// <param name="hWnd"></param>
- /// <returns>bool</returns>
- [DllImport(User32)]
- public static extern bool SetForegroundWindow(IntPtr hWnd);
- /// <summary>
- /// Gets the maximum number of milliseconds that can elapse between a
- /// first click and a second click for the OS to consider the
- /// mouse action a double-click.
- /// </summary>
- /// <returns>The maximum amount of time, in milliseconds, that can
- /// elapse between a first click and a second click for the OS to
- /// consider the mouse action a double-click.</returns>
- [DllImport(User32, CharSet = CharSet.Auto, ExactSpelling = true)]
- public static extern int GetDoubleClickTime();
- /// <summary>
- /// Gets the screen coordinates of the current mouse position.
- /// </summary>
- [DllImport(User32, SetLastError = true)]
- public static extern bool GetPhysicalCursorPos(ref Point lpPoint);
- [DllImport(User32, SetLastError = true)]
- public static extern bool GetCursorPos(ref Point lpPoint);
- }
- }
|