using System; namespace Microsoft.Win32 { /// /// Util /// public static partial class Util { /// /// 获取有符号低16位整数 /// /// 句柄 /// 有符号低16位整数 public static int GET_X_LPARAM(IntPtr lParam) { return LOWORD(lParam); } /// /// 获取有符号高十六位整数 /// /// 句柄 /// 有符号高十六位整数 public static int GET_Y_LPARAM(IntPtr lParam) { return HIWORD(lParam); } /// /// 获取无符号高8位整数 /// /// 无符号16位整数 /// 无符号高8位整数 public static byte HIBYTE(ushort wValue) { return (byte)((wValue >> 0x8) & 0xff); } /// /// 获取无符号低8位整数 /// /// 无符号16位整数 /// 无符号低8位整数 public static byte LOBYTE(ushort wValue) { return (byte)(wValue & 0xff); } /// /// 获取无符号高16位整数 /// /// 无符号32位整数 /// 无符号高16位整数 public static ushort HIWORD(uint dwValue) { return (ushort)((dwValue >> 0x10) & 0xffff); } /// /// 获取无符号低16位整数 /// /// 无符号32位整数 /// 无符号低16位整数 public static ushort LOWORD(uint dwValue) { return (ushort)(dwValue & 0xffff); } /// /// 将两个无符号8位整数合并为一个无符号16位整数 /// /// 无符号低8位整数 /// 无符号高8位整数 /// 无符号16位整数 public static ushort MAKEWORD(byte bLow, byte bHigh) { return (ushort)((((ushort)bHigh) << 0x8) | ((ushort)(bLow & 0xff))); } /// /// 将两个无符号16位整数合并为一个无符号32位整数 /// /// 无符号低16位整数 /// 无符号高16位整数 /// 无符号32位整数 public static uint MAKELONG(ushort wLow, ushort wHigh) { return ((((uint)wHigh) << 0x10) | ((uint)(wLow & 0xffff))); } /// /// 将两个无符号16位整数合并为一个有符号32位整数 /// /// 无符号低16位整数 /// 无符号高16位整数 /// 有符号32位整数 public static int MAKELPARAM(ushort wLow, ushort wHigh) { return (int)MAKELONG(wLow, wHigh); } /// /// 将两个无符号16位整数合并为一个有符号32位整数 /// /// 无符号低16位整数 /// 无符号高16位整数 /// 有符号32位整数 public static int MAKEWPARAM(ushort wLow, ushort wHigh) { return (int)MAKELONG(wLow, wHigh); } /// /// 将两个无符号16位整数合并为一个有符号句柄 /// /// 无符号低16位整数 /// 无符号高16位整数 /// 有符号句柄 public static IntPtr MAKELRESULT(ushort wLow, ushort wHigh) { return (IntPtr)MAKELONG(wLow, wHigh); } /// /// 获取无符号高16位整数 /// /// 32位有符号整数 /// 无符号高16位整数 public static int HIWORD(int n) { return ((n >> 0x10) & 0xffff); } /// /// 获取无符号高16位整数 /// /// 句柄 /// 无符号高16位整数 public static int HIWORD(IntPtr n) { return HIWORD((int)((long)n)); } /// /// 获取无符号低16位整数 /// /// 32位有符号整数 /// 无符号低16位整数 public static int LOWORD(int n) { return (n & 0xffff); } /// /// 获取无符号低16位整数 /// /// 句柄 /// 无符号低16位整数 public static int LOWORD(IntPtr n) { return LOWORD((int)((long)n)); } /// /// 获取有符号高16位整数 /// /// 32位有符号整数 /// 有符号高16位整数 public static int SignedHIWORD(int n) { return (short)((n >> 0x10) & 0xffff); } /// /// 获取有符号高16位整数 /// /// 句柄 /// 有符号高16位整数 public static int SignedHIWORD(IntPtr n) { return SignedHIWORD((int)((long)n)); } /// /// 获取有符号低16位整数 /// /// 32位有符号整数 /// 有符号低16位整数 public static int SignedLOWORD(int n) { return (short)(n & 0xffff); } /// /// 获取有符号低16位整数 /// /// 句柄 /// 有符号低16位整数 public static int SignedLOWORD(IntPtr n) { return SignedLOWORD((int)((long)n)); } /// /// 将两个16位整数合并为一个32位整数 /// /// 低16位整数 /// 高16为整数 /// 32位整数 public static int MAKELONG(int low, int high) { return ((high << 0x10) | (low & 0xffff)); } /// /// 将两个16位整数合并为句柄 /// /// 低16位整数 /// 高16为整数 /// LParam public static IntPtr MAKELPARAM(int low, int high) { return (IntPtr)((high << 0x10) | (low & 0xffff)); } } }