src/NativeMethods.cs
Rama main · réplica de lectura del repositorio original.
using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace Clipman
{
internal static class NativeMethods
{
public const int WM_HOTKEY = 0x0312;
public const int WM_CLIPBOARDUPDATE = 0x031D;
public const int SW_SHOWNORMAL = 1;
public const int SW_RESTORE = 9;
public const int VK_CONTROL = 0x11;
public const int VK_SHIFT = 0x10;
public const int VK_MENU = 0x12;
public const int VK_LWIN = 0x5B;
public const int VK_RWIN = 0x5C;
public const int VK_V = 0x56;
public const int KEYEVENTF_KEYUP = 0x0002;
public const int INPUT_KEYBOARD = 1;
[StructLayout(LayoutKind.Sequential)]
public struct Input
{
public int Type;
public InputUnion Data;
public KeyboardInputData Keyboard
{
get { return Data.Keyboard; }
}
}
[StructLayout(LayoutKind.Explicit)]
public struct InputUnion
{
[FieldOffset(0)]
public KeyboardInputData Keyboard;
[FieldOffset(0)]
public MouseInputData Mouse;
}
[StructLayout(LayoutKind.Sequential)]
public struct KeyboardInputData
{
public ushort VirtualKey;
public ushort ScanCode;
public uint Flags;
public uint Time;
public UIntPtr ExtraInfo;
}
[StructLayout(LayoutKind.Sequential)]
public struct MouseInputData
{
public int X;
public int Y;
public uint MouseData;
public uint Flags;
public uint Time;
public UIntPtr ExtraInfo;
}
[Flags]
public enum Modifiers : uint
{
None = 0,
Alt = 0x0001,
Control = 0x0002,
Shift = 0x0004,
Windows = 0x0008,
NoRepeat = 0x4000
}
[DllImport("user32.dll")]
public static extern IntPtr GetForegroundWindow();
[DllImport("user32.dll")]
public static extern IntPtr GetClipboardOwner();
[DllImport("user32.dll")]
public static extern bool SetForegroundWindow(IntPtr hWnd);
[DllImport("user32.dll")]
public static extern bool IsWindow(IntPtr hWnd);
[DllImport("user32.dll")]
public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
[DllImport("user32.dll")]
public static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint processId);
[DllImport("user32.dll", SetLastError = true)]
public static extern bool RegisterHotKey(IntPtr hWnd, int id, Modifiers fsModifiers, Keys vk);
[DllImport("user32.dll", SetLastError = true)]
public static extern bool UnregisterHotKey(IntPtr hWnd, int id);
[DllImport("user32.dll", SetLastError = true)]
public static extern bool AddClipboardFormatListener(IntPtr hwnd);
[DllImport("user32.dll", SetLastError = true)]
public static extern bool RemoveClipboardFormatListener(IntPtr hwnd);
[DllImport("user32.dll")]
public static extern uint GetClipboardSequenceNumber();
[DllImport("user32.dll")]
public static extern int GetMessageTime();
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
public static extern uint RegisterClipboardFormat(string lpszFormat);
[DllImport("user32.dll")]
public static extern bool IsClipboardFormatAvailable(uint format);
[DllImport("user32.dll", SetLastError = true)]
public static extern bool OpenClipboard(IntPtr hWndNewOwner);
[DllImport("user32.dll", SetLastError = true)]
public static extern bool CloseClipboard();
[DllImport("user32.dll", SetLastError = true)]
public static extern IntPtr GetClipboardData(uint uFormat);
[DllImport("kernel32.dll", SetLastError = true)]
public static extern IntPtr GlobalLock(IntPtr hMem);
[DllImport("kernel32.dll", SetLastError = true)]
public static extern bool GlobalUnlock(IntPtr hMem);
[DllImport("kernel32.dll", SetLastError = true)]
public static extern UIntPtr GlobalSize(IntPtr hMem);
[DllImport("user32.dll")]
public static extern short GetAsyncKeyState(int vKey);
[DllImport("user32.dll", SetLastError = true)]
public static extern uint SendInput(uint inputCount, Input[] inputs, int inputSize);
}
}