#region using System; using System.Runtime.InteropServices; using System.Text; #endregion namespace CSFrameworkV5.Common { /// /// WinAPI函数库 /// public class WinAPI { /// /// 枚举窗体的回调函数 /// /// /// /// public delegate bool EnumWindowsProc(IntPtr hWnd, IntPtr lParam); public delegate bool WNDENUMPROC(IntPtr hwnd, uint lParam); public const int SW_SHOWNORMAL = 1; public const int SW_SHOWMINIMIZED = 2; public const int SW_SHOWMAXIMIZED = 3; public const int SW_SHOWNOACTIVATE = 4; //用最近的大小和位置显示一个窗口,同时不改变活动窗口 public const int SW_SHOW = 5; //用当前的大小和位置显示一个窗口,同时令其进入活动状态 public const int SW_MINIMIZE = 6; //最小化窗口,活动状态给令一个窗口 public const int SW_SHOWMINNOACTIVE = 7; //最小化一个窗口,同时不改变活动窗口 public const int SW_SHOWNA = 8; //用当前的大小和位置显示一个窗口,不改变活动窗口 public const int SW_RESTORE = 9; //与 SW_SHOWNORMAL 1 相同 public const int SW_SHOWDEFAULT = 10; public const int SW_FORCEMINIMIZE = 11; public const int SW_MAX = 11; public const int WM_SYSCOMMAND = 0x112; public const int SC_MINIMIZE = 0xF020; public const int SC_MAXIMIZE = 0xF030; private const int SC_CLOSE = 0xF060; private const int MF_GRAYED = 0x1; public static void DisableCloseButton(IntPtr hwnd) { EnableMenuItem(GetSystemMenu(hwnd, false), SC_CLOSE, MF_GRAYED); } [DllImport("user32.dll")] private static extern int EnableMenuItem(IntPtr hMenu, int wIDEnableItem, int wEnable); [DllImport("user32.dll", EntryPoint = "EnumWindows", SetLastError = true)] public static extern bool EnumWindows(WNDENUMPROC lpEnumFunc, uint lParam); [DllImport("user32")] public static extern int EnumWindows(EnumWindowsProc hWnd, IntPtr lParam); //使用:PostMessage(Handle, WM_SYSCOMMAND, SC_MINIMIZE, 0); [DllImport("User32.dll ")] public static extern IntPtr FindWindowEx(IntPtr parent, IntPtr childe, string strclass, string strname); [DllImport("user32.dll", EntryPoint = "GetParent", SetLastError = true)] public static extern IntPtr GetParent(IntPtr hWnd); [DllImport("user32.dll")] private static extern IntPtr GetSystemMenu(IntPtr hWnd, bool bRevert); [DllImport("user32", SetLastError = true)] public static extern int GetWindowText( IntPtr hWnd, //窗口句柄 StringBuilder lpString, //标题 int nMaxCount //最大值 ); [DllImport("user32.dll", EntryPoint = "GetWindowThreadProcessId")] public static extern uint GetWindowThreadProcessId(IntPtr hWnd, ref uint lpdwProcessId); [DllImport("user32.dll", EntryPoint = "IsWindow")] public static extern bool IsWindow(IntPtr hWnd); [DllImport("user32.dll", EntryPoint = "PostMessage")] public static extern int PostMessage(IntPtr hwnd, int wMsg, int wParam, int lParam); public static void RestoreWindow(IntPtr hwnd) { ShowWindow(hwnd, SW_RESTORE); } [DllImport("user32", EntryPoint = "SetActiveWindow")] public static extern int SetActiveWindow(int hwnd); [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)] public static extern bool SetForegroundWindow(IntPtr hWnd); //WINAPI 设置当前活动窗体的句柄 [DllImport("kernel32.dll", EntryPoint = "SetLastError")] public static extern void SetLastError(uint dwErrCode); //使用:IntPtr p=FindWindowEx(System.IntPtr.Zero,System.IntPtr.Zero,null,"窗口标题"); [DllImport("user32.dll", EntryPoint = "ShowWindow", CharSet = CharSet.Auto)] public static extern int ShowWindow(IntPtr hwnd, int nCmdShow); [DllImport("User32.dll")] public static extern bool ShowWindowAsync(IntPtr hWnd, int cmdShow); #region 窗体边框阴影效果变量申明 public const int CS_DropSHADOW = 0x20000; public const int GCL_STYLE = -26; //声明Win32 API [DllImport("user32.dll", CharSet = CharSet.Auto)] public static extern int SetClassLong(IntPtr hwnd, int nIndex, int dwNewLong); [DllImport("user32.dll", CharSet = CharSet.Auto)] public static extern int GetClassLong(IntPtr hwnd, int nIndex); #endregion } }