⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 systemmenu.cs

📁 破解的飞信源代码
💻 CS
字号:
namespace Imps.Client.Pc.BizControls
{
    using System;
    using System.Runtime.InteropServices;
    using System.Windows.Forms;

    public class SystemMenu
    {
        private IntPtr m_SysMenu = IntPtr.Zero;
        internal const uint MF_OWNERDRAW = 0x100;
        internal const uint MF_STRING = 0;
        internal const uint MIIM_FTYPE = 0x100;

        [DllImport("USER32", EntryPoint="AppendMenuW", CharSet=CharSet.Unicode, SetLastError=true, ExactSpelling=true)]
        private static extern int apiAppendMenu(IntPtr MenuHandle, int Flags, int NewID, string Item);
        [DllImport("USER32", EntryPoint="GetSystemMenu", CharSet=CharSet.Unicode, SetLastError=true, ExactSpelling=true)]
        private static extern IntPtr apiGetSystemMenu(IntPtr WindowHandle, int bReset);
        [DllImport("USER32", EntryPoint="InsertMenuW", CharSet=CharSet.Unicode, SetLastError=true, ExactSpelling=true)]
        private static extern int apiInsertMenu(IntPtr hMenu, int Position, int Flags, int NewId, string Item);
        public bool AppendMenu(int ID, string Item)
        {
            return this.AppendMenu(ID, Item, ItemFlags.mfUnchecked);
        }

        public bool AppendMenu(int ID, string Item, ItemFlags Flags)
        {
            return (apiAppendMenu(this.m_SysMenu, (int) Flags, ID, Item) == 0);
        }

        public bool AppendSeparator()
        {
            return this.AppendMenu(0, "", ItemFlags.mfSeparator);
        }

        public static SystemMenu FromForm(Form Frm)
        {
            SystemMenu menu = new SystemMenu();
            menu.m_SysMenu = apiGetSystemMenu(Frm.Handle, 0);
            if (menu.m_SysMenu == IntPtr.Zero)
            {
                throw new NoSystemMenuException();
            }
            return menu;
        }

        public void GetMenuItem()
        {
            MENUITEMINFO lpmii = new MENUITEMINFO();
            lpmii.cbSize = (uint) Marshal.SizeOf(typeof(MENUITEMINFO));
            lpmii.cch = 0x100;
            lpmii.fMask = 0x100;
            lpmii.fType = 0;
            lpmii.dwTypeData = new string(' ', 0x100);
            GetMenuItemInfo(this.m_SysMenu, 4, true, ref lpmii);
        }

        [DllImport("user32.dll")]
        public static extern bool GetMenuItemInfo(IntPtr hMenu, uint uItem, bool fByPosition, ref MENUITEMINFO lpmii);
        public bool InsertMenu(int Pos, int ID, string Item)
        {
            return this.InsertMenu(Pos, ItemFlags.mfByPosition, ID, Item);
        }

        public bool InsertMenu(int Pos, ItemFlags Flags, int ID, string Item)
        {
            return (apiInsertMenu(this.m_SysMenu, Pos, (int) Flags, ID, Item) == 0);
        }

        public bool InsertSeparator(int Pos)
        {
            return this.InsertMenu(Pos, ItemFlags.mfSeparator | ItemFlags.mfByPosition, 0, "");
        }

        public static void ResetSystemMenu(Form Frm)
        {
            apiGetSystemMenu(Frm.Handle, 1);
        }

        public static bool VerifyItemID(int ID)
        {
            if (ID < 0xf000)
            {
                return (ID > 0);
            }
            return false;
        }

        [StructLayout(LayoutKind.Sequential)]
        public struct MENUITEMINFO
        {
            public uint cbSize;
            public uint fMask;
            public uint fType;
            public uint fState;
            public uint wID;
            public IntPtr hSubMenu;
            public IntPtr hbmpChecked;
            public IntPtr hbmpUnchecked;
            public string dwTypeData;
            public IntPtr dwItemData;
            public uint cch;
            public IntPtr hbmpItem;
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -