From b78e0144de7997644ba061dd01baa96bd3c3cc6f Mon Sep 17 00:00:00 2001 From: bao-qian Date: Wed, 6 Jan 2016 06:03:50 +0000 Subject: [PATCH] Remove unused files --- Wox/ShellContext/Enums.cs | 209 -------------------- Wox/ShellContext/Guids.cs | 29 --- Wox/ShellContext/IContextMenu.cs | 30 --- Wox/ShellContext/IEnumIDList.cs | 24 --- Wox/ShellContext/IShellFolder.cs | 77 -------- Wox/ShellContext/ShellAPI.cs | 195 ------------------ Wox/ShellContext/ShellContextMenuManager.cs | 98 --------- Wox/ShellContext/Structs.cs | 71 ------- 8 files changed, 733 deletions(-) delete mode 100644 Wox/ShellContext/Enums.cs delete mode 100644 Wox/ShellContext/Guids.cs delete mode 100644 Wox/ShellContext/IContextMenu.cs delete mode 100644 Wox/ShellContext/IEnumIDList.cs delete mode 100644 Wox/ShellContext/IShellFolder.cs delete mode 100644 Wox/ShellContext/ShellAPI.cs delete mode 100644 Wox/ShellContext/ShellContextMenuManager.cs delete mode 100644 Wox/ShellContext/Structs.cs diff --git a/Wox/ShellContext/Enums.cs b/Wox/ShellContext/Enums.cs deleted file mode 100644 index 859c637d43..0000000000 --- a/Wox/ShellContext/Enums.cs +++ /dev/null @@ -1,209 +0,0 @@ -using System; - -namespace Wox.ShellContext -{ - [Flags()] - public enum SHCONTF - { - FOLDERS = 0x20, - NONFOLDERS = 0x40, - INCLUDEHIDDEN = 0x80, - INIT_ON_FIRST_NEXT = 0x100, - NETPRINTERSRCH = 0x200, - SHAREABLE = 0x400, - STORAGE = 0x800 - } - - [Flags()] - public enum SFGAO - { - CANCOPY = 0x1, - CANMOVE = 0x2, - CANLINK = 0x4, - STORAGE = 0x8, - CANRENAME = 0x10, - CANDELETE = 0x20, - HASPROPSHEET = 0x40, - DROPTARGET = 0x100, - CAPABILITYMASK = 0x177, - ENCRYPTED = 0x2000, - ISSLOW = 0x4000, - GHOSTED = 0x8000, - LINK = 0x10000, - SHARE = 0x20000, - READONLY = 0x40000, - HIDDEN = 0x80000, - DISPLAYATTRMASK = 0xFC000, - FILESYSANCESTOR = 0x10000000, - FOLDER = 0x20000000, - FILESYSTEM = 0x40000000, - HASSUBFOLDER = unchecked((int)0x80000000), - CONTENTSMASK = unchecked((int)0x80000000), - VALIDATE = 0x1000000, - REMOVABLE = 0x2000000, - COMPRESSED = 0x4000000, - BROWSABLE = 0x8000000, - NONENUMERATED = 0x100000, - NEWCONTENT = 0x200000, - CANMONIKER = 0x400000, - HASSTORAGE = 0x400000, - STREAM = 0x400000, - STORAGEANCESTOR = 0x800000, - STORAGECAPMASK = 0x70C50008 - } - - [Flags()] - public enum SHGNO - { - NORMAL = 0x0, - INFOLDER = 0x1, - FOREDITING = 0x1000, - FORADDRESSBAR = 0x4000, - FORPARSING = 0x8000, - } - - [Flags()] - public enum CSIDL - { - ADMINTOOLS = 0x30, - ALTSTARTUP = 0x1d, - APPDATA = 0x1a, - BITBUCKET = 10, - CDBURN_AREA = 0x3b, - COMMON_ADMINTOOLS = 0x2f, - COMMON_ALTSTARTUP = 30, - COMMON_APPDATA = 0x23, - COMMON_DESKTOPDIRECTORY = 0x19, - COMMON_DOCUMENTS = 0x2e, - COMMON_FAVORITES = 0x1f, - COMMON_MUSIC = 0x35, - COMMON_PICTURES = 0x36, - COMMON_PROGRAMS = 0x17, - COMMON_STARTMENU = 0x16, - COMMON_STARTUP = 0x18, - COMMON_TEMPLATES = 0x2d, - COMMON_VIDEO = 0x37, - CONTROLS = 3, - COOKIES = 0x21, - DESKTOP = 0, - DESKTOPDIRECTORY = 0x10, - DRIVES = 0x11, - FAVORITES = 6, - FLAG_CREATE = 0x8000, - FONTS = 20, - HISTORY = 0x22, - INTERNET = 1, - INTERNET_CACHE = 0x20, - LOCAL_APPDATA = 0x1c, - MYDOCUMENTS = 12, - MYMUSIC = 13, - MYPICTURES = 0x27, - MYVIDEO = 14, - NETHOOD = 0x13, - NETWORK = 0x12, - PERSONAL = 5, - PRINTERS = 4, - PRINTHOOD = 0x1b, - PROFILE = 40, - PROFILES = 0x3e, - PROGRAM_FILES = 0x26, - PROGRAM_FILES_COMMON = 0x2b, - PROGRAMS = 2, - RECENT = 8, - SENDTO = 9, - STARTMENU = 11, - STARTUP = 7, - SYSTEM = 0x25, - TEMPLATES = 0x15, - WINDOWS = 0x24 - } - - [Flags()] - public enum SHGFI : uint - { - ADDOVERLAYS = 0x20, - ATTR_SPECIFIED = 0x20000, - ATTRIBUTES = 0x800, - DISPLAYNAME = 0x200, - EXETYPE = 0x2000, - ICON = 0x100, - ICONLOCATION = 0x1000, - LARGEICON = 0, - LINKOVERLAY = 0x8000, - OPENICON = 2, - OVERLAYINDEX = 0x40, - PIDL = 8, - SELECTED = 0x10000, - SHELLICONSIZE = 4, - SMALLICON = 1, - SYSICONINDEX = 0x4000, - TYPENAME = 0x400, - USEFILEATTRIBUTES = 0x10 - } - - [Flags] - public enum FILE_ATTRIBUTE - { - READONLY = 0x00000001, - HIDDEN = 0x00000002, - SYSTEM = 0x00000004, - DIRECTORY = 0x00000010, - ARCHIVE = 0x00000020, - DEVICE = 0x00000040, - NORMAL = 0x00000080, - TEMPORARY = 0x00000100, - SPARSE_FILE = 0x00000200, - REPARSE_POINT = 0x00000400, - COMPRESSED = 0x00000800, - OFFLINE = 0x00001000, - NOT_CONTENT_INDEXED = 0x00002000, - ENCRYPTED = 0x00004000 - } - - public enum GetCommandStringInformations - { - VERB = 0x00000004, - HELPTEXT = 0x00000005, - VALIDATE = 0x00000006, - } - - [Flags] - public enum CMF : uint - { - NORMAL = 0x00000000, - DEFAULTONLY = 0x00000001, - VERBSONLY = 0x00000002, - EXPLORE = 0x00000004, - NOVERBS = 0x00000008, - CANRENAME = 0x00000010, - NODEFAULT = 0x00000020, - INCLUDESTATIC = 0x00000040, - EXTENDEDVERBS = 0x00000100, - RESERVED = 0xffff0000 - } - - [Flags] - public enum TPM : uint - { - LEFTBUTTON = 0x0000, - RIGHTBUTTON = 0x0002, - LEFTALIGN = 0x0000, - CENTERALIGN = 0x0004, - RIGHTALIGN = 0x0008, - TOPALIGN = 0x0000, - VCENTERALIGN = 0x0010, - BOTTOMALIGN = 0x0020, - HORIZONTAL = 0x0000, - VERTICAL = 0x0040, - NONOTIFY = 0x0080, - RETURNCMD = 0x0100, - RECURSE = 0x0001, - HORPOSANIMATION = 0x0400, - HORNEGANIMATION = 0x0800, - VERPOSANIMATION = 0x1000, - VERNEGANIMATION = 0x2000, - NOANIMATION = 0x4000, - LAYOUTRTL = 0x8000 - } - -} diff --git a/Wox/ShellContext/Guids.cs b/Wox/ShellContext/Guids.cs deleted file mode 100644 index d8a44e3956..0000000000 --- a/Wox/ShellContext/Guids.cs +++ /dev/null @@ -1,29 +0,0 @@ -using System; - -namespace Wox.ShellContext -{ - public class Guids - { - public static Guid IID_DesktopGUID = new Guid("{00021400-0000-0000-C000-000000000046}"); - - public static Guid IID_IShellFolder = new Guid("{000214E6-0000-0000-C000-000000000046}"); - public static Guid IID_IContextMenu = new Guid("{000214e4-0000-0000-c000-000000000046}"); - public static Guid IID_IContextMenu2 = new Guid("{000214f4-0000-0000-c000-000000000046}"); - public static Guid IID_IContextMenu3 = new Guid("{bcfce0a0-ec17-11d0-8d10-00a0c90f2719}"); - - public static Guid IID_IDropTarget = new Guid("{00000122-0000-0000-C000-000000000046}"); - public static Guid IID_IDataObject = new Guid("{0000010e-0000-0000-C000-000000000046}"); - - public static Guid IID_IQueryInfo = new Guid("{00021500-0000-0000-C000-000000000046}"); - public static Guid IID_IPersistFile = new Guid("{0000010b-0000-0000-C000-000000000046}"); - - public static Guid CLSID_DragDropHelper = new Guid("{4657278A-411B-11d2-839A-00C04FD918D0}"); - public static Guid CLSID_NewMenu = new Guid("{D969A300-E7FF-11d0-A93B-00A0C90F2719}"); - public static Guid IID_IDragSourceHelper = new Guid("{DE5BF786-477A-11d2-839D-00C04FD918D0}"); - public static Guid IID_IDropTargetHelper = new Guid("{4657278B-411B-11d2-839A-00C04FD918D0}"); - - public static Guid IID_IShellExtInit = new Guid("{000214e8-0000-0000-c000-000000000046}"); - public static Guid IID_IStream = new Guid("{0000000c-0000-0000-c000-000000000046}"); - public static Guid IID_IStorage = new Guid("{0000000B-0000-0000-C000-000000000046}"); - } -} diff --git a/Wox/ShellContext/IContextMenu.cs b/Wox/ShellContext/IContextMenu.cs deleted file mode 100644 index 2fe5e67bb2..0000000000 --- a/Wox/ShellContext/IContextMenu.cs +++ /dev/null @@ -1,30 +0,0 @@ -using System; -using System.Runtime.InteropServices; -using System.Text; - -namespace Wox.ShellContext -{ - [ComImport(), InterfaceType(ComInterfaceType.InterfaceIsIUnknown), Guid("000214e4-0000-0000-c000-000000000046")] - public interface IContextMenu - { - [PreserveSig()] - Int32 QueryContextMenu( - IntPtr hmenu, - uint iMenu, - uint idCmdFirst, - uint idCmdLast, - CMF uFlags); - - [PreserveSig()] - Int32 InvokeCommand( - ref CMINVOKECOMMANDINFOEX info); - - [PreserveSig()] - void GetCommandString( - int idcmd, - GetCommandStringInformations uflags, - int reserved, - StringBuilder commandstring, - int cch); - } -} diff --git a/Wox/ShellContext/IEnumIDList.cs b/Wox/ShellContext/IEnumIDList.cs deleted file mode 100644 index e32d22f06b..0000000000 --- a/Wox/ShellContext/IEnumIDList.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System; -using System.Runtime.InteropServices; - -namespace Wox.ShellContext -{ - [ComImport(), - Guid("000214F2-0000-0000-C000-000000000046"), - InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] - public interface IEnumIDList - { - [PreserveSig()] - uint Next( - uint celt, - out IntPtr rgelt, - out int pceltFetched); - - void Skip( - uint celt); - - void Reset(); - - IEnumIDList Clone(); - } -} diff --git a/Wox/ShellContext/IShellFolder.cs b/Wox/ShellContext/IShellFolder.cs deleted file mode 100644 index cd7812bdc4..0000000000 --- a/Wox/ShellContext/IShellFolder.cs +++ /dev/null @@ -1,77 +0,0 @@ -锘縰sing System; -using System.Runtime.InteropServices; - -namespace Wox.ShellContext -{ - [ComImport] - [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] - [Guid("000214E6-0000-0000-C000-000000000046")] - public interface IShellFolder - { - void ParseDisplayName( - IntPtr hwnd, - IntPtr pbc, - [MarshalAs(UnmanagedType.LPWStr)] string pszDisplayName, - out uint pchEaten, - out IntPtr ppidl, - ref uint pdwAttributes); - - [PreserveSig] - int EnumObjects(IntPtr hWnd, SHCONTF flags, out IntPtr enumIDList); - - void BindToObject( - IntPtr pidl, - IntPtr pbc, - [In()] ref Guid riid, - out IShellFolder ppv); - - void BindToStorage( - IntPtr pidl, - IntPtr pbc, - [In()] ref Guid riid, - [MarshalAs(UnmanagedType.Interface)] out object ppv); - - [PreserveSig()] - uint CompareIDs( - int lParam, - IntPtr pidl1, - IntPtr pidl2); - - void CreateViewObject( - IntPtr hwndOwner, - [In()] ref Guid riid, - [MarshalAs(UnmanagedType.Interface)] out object ppv); - - void GetAttributesOf( - uint cidl, - [In(), MarshalAs(UnmanagedType.LPArray)] IntPtr[] apidl, - ref SFGAO rgfInOut); - - //[PreserveSig] - //Int32 GetUIObjectOf( - // IntPtr hwndOwner, - // uint cidl, - // [MarshalAs(UnmanagedType.LPArray)] - // IntPtr[] apidl, - // Guid riid, - // IntPtr rgfReserved, - // out IntPtr ppv); - IntPtr GetUIObjectOf( - IntPtr hwndOwner, - uint cidl, - [MarshalAs(UnmanagedType.LPArray)] IntPtr[] apidl, - [In()] ref Guid riid, - out IntPtr rgfReserved); - - void GetDisplayNameOf( - IntPtr pidl, - SHGNO uFlags, - IntPtr lpName); - - IntPtr SetNameOf( - IntPtr hwnd, - IntPtr pidl, - [MarshalAs(UnmanagedType.LPWStr)] string pszName, - SHGNO uFlags); - } -} diff --git a/Wox/ShellContext/ShellAPI.cs b/Wox/ShellContext/ShellAPI.cs deleted file mode 100644 index d1f3d58852..0000000000 --- a/Wox/ShellContext/ShellAPI.cs +++ /dev/null @@ -1,195 +0,0 @@ -using System; -using System.IO; -using System.Runtime.InteropServices; -using System.Text; - -namespace Wox.ShellContext -{ - public class ShellAPI - { - #region API 导入 - - - public const int MAX_PATH = 260; - public const int S_OK = 0; - public const int S_FALSE = 1; - public const uint CMD_FIRST = 1; - public const uint CMD_LAST = 30000; - - public const Int32 MF_BYPOSITION = 0x400; - [DllImport("user32.dll")] - public static extern bool DeleteMenu(IntPtr hMenu, uint uPosition, uint uFlags); - [DllImport("user32.dll")] - public static extern int GetMenuItemCount(IntPtr hMenu); - - [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] - public class MENUITEMINFO - { - public int cbSize = Marshal.SizeOf(typeof(MENUITEMINFO)); - public int fMask; - public int fType; - public int fState; - public int wID; - public IntPtr hSubMenu; - public IntPtr hbmpChecked; - public IntPtr hbmpUnchecked; - public IntPtr dwItemData; - public string dwTypeData; - public int cch; - } - - [DllImport("user32.dll", CharSet = CharSet.Auto)] - public static extern bool GetMenuItemInfo(HandleRef hMenu, int uItem, bool fByPosition, [In, Out] MENUITEMINFO lpmii); - - - [DllImport("user32.dll")] - public static extern int GetMenuString(IntPtr hMenu, uint uIDItem, [Out, MarshalAs(UnmanagedType.LPStr)] StringBuilder lpString, int nMaxCount, uint uFlag); - - - [DllImport("shell32.dll")] - public static extern Int32 SHGetDesktopFolder(out IntPtr ppshf); - - [DllImport("Shlwapi.Dll", CharSet = CharSet.Auto)] - public static extern Int32 StrRetToBuf(IntPtr pstr, IntPtr pidl, StringBuilder pszBuf, int cchBuf); - - [DllImport("shell32.dll")] - public static extern int SHGetSpecialFolderLocation(IntPtr handle, CSIDL nFolder, out IntPtr ppidl); - - [DllImport("shell32", - EntryPoint = "SHGetFileInfo", - ExactSpelling = false, - CharSet = CharSet.Auto, - SetLastError = true)] - public static extern IntPtr SHGetFileInfo( - IntPtr ppidl, - FILE_ATTRIBUTE dwFileAttributes, - ref SHFILEINFO sfi, - int cbFileInfo, - SHGFI uFlags); - - [DllImport("user32", - SetLastError = true, - CharSet = CharSet.Auto)] - public static extern IntPtr CreatePopupMenu(); - - [DllImport("user32.dll", - ExactSpelling = true, - CharSet = CharSet.Auto)] - public static extern uint TrackPopupMenuEx( - IntPtr hmenu, - TPM flags, - int x, - int y, - IntPtr hwnd, - IntPtr lptpm); - - #endregion - - /// - /// 获得桌面 Shell - /// - public static IShellFolder GetDesktopFolder(out IntPtr ppshf) - { - SHGetDesktopFolder(out ppshf); - Object obj = Marshal.GetObjectForIUnknown(ppshf); - return (IShellFolder)obj; - } - - /// - /// 获取显示名称 - /// - public static string GetNameByIShell(IShellFolder Root, IntPtr pidlSub) - { - IntPtr strr = Marshal.AllocCoTaskMem(MAX_PATH * 2 + 4); - Marshal.WriteInt32(strr, 0, 0); - StringBuilder buf = new StringBuilder(MAX_PATH); - Root.GetDisplayNameOf(pidlSub, SHGNO.INFOLDER, strr); - ShellAPI.StrRetToBuf(strr, pidlSub, buf, MAX_PATH); - return buf.ToString(); - } - - /// - /// 根据 PIDL 获取显示名称 - /// - public static string GetNameByPIDL(IntPtr pidl) - { - SHFILEINFO info = new SHFILEINFO(); - ShellAPI.SHGetFileInfo(pidl, 0, ref info, Marshal.SizeOf(typeof(SHFILEINFO)), - SHGFI.PIDL | SHGFI.DISPLAYNAME | SHGFI.TYPENAME); - return info.szDisplayName; - } - - public static PIDLShellFolder GetPIDLAndParentIShellFolder(string path) - { - - if (Directory.Exists(path)) - { - return GetPIDLAndParentIshellFolderForFolder(path); - } - else if (File.Exists(path)) - { - return GetPIDLAndParentIshellFolderForFile(path); - } - - return null; - } - - private static PIDLShellFolder GetPIDLAndParentIshellFolderForFolder(string folderPath) - { - return null; - } - - /// - /// Get PIDL and parent shellfolder for given file path - /// - /// - /// - private static PIDLShellFolder GetPIDLAndParentIshellFolderForFile(string filePath) - { - //get desktopPtr first - IntPtr desktopPtr; - IShellFolder desktop = GetDesktopFolder(out desktopPtr); - - string fileName = Path.GetFileName(filePath); - IShellFolder parentShellFolder; - string FolderPath = Directory.GetParent(filePath).FullName; - IntPtr Pidl = IntPtr.Zero; - uint i, j = 0; - desktop.ParseDisplayName(IntPtr.Zero, IntPtr.Zero, FolderPath, out i, out Pidl, ref j); - desktop.BindToObject(Pidl, IntPtr.Zero, ref Guids.IID_IShellFolder, out parentShellFolder); - Marshal.ReleaseComObject(desktop); - - IEnumIDList fileEnum = null; - IEnumIDList folderEnum = null; - IntPtr fileEnumPtr = IntPtr.Zero; - IntPtr folderEnumPtr = IntPtr.Zero; - IntPtr pidlSub; - int celtFetched; - - if (parentShellFolder.EnumObjects(IntPtr.Zero, SHCONTF.NONFOLDERS | SHCONTF.INCLUDEHIDDEN, out folderEnumPtr) == ShellAPI.S_OK) - { - folderEnum = (IEnumIDList)Marshal.GetObjectForIUnknown(folderEnumPtr); - while (folderEnum.Next(1, out pidlSub, out celtFetched) == 0 && celtFetched == ShellAPI.S_FALSE) - { - string name = ShellAPI.GetNameByPIDL(pidlSub); - if (name == fileName) - { - PIDLShellFolder ps = new PIDLShellFolder { PIDL = pidlSub, ShellFolder = parentShellFolder }; - Marshal.ReleaseComObject(parentShellFolder); - return ps; - } - } - } - - Marshal.ReleaseComObject(parentShellFolder); - return null; - } - - } - - public class PIDLShellFolder - { - public IShellFolder ShellFolder { get; set; } - public IntPtr PIDL { get; set; } - } -} diff --git a/Wox/ShellContext/ShellContextMenuManager.cs b/Wox/ShellContext/ShellContextMenuManager.cs deleted file mode 100644 index 873ce36c52..0000000000 --- a/Wox/ShellContext/ShellContextMenuManager.cs +++ /dev/null @@ -1,98 +0,0 @@ -锘縰sing System; -using System.Diagnostics; -using System.IO; -using System.Runtime.InteropServices; -using System.Text; - -namespace Wox.ShellContext -{ - public class ShellContextMenuManager - { - public void GetContextMenus(string path) - { - IntPtr desktopPtr; - IShellFolder desktop = ShellAPI.GetDesktopFolder(out desktopPtr); - - IntPtr ownerHwnd = IntPtr.Zero; - IShellFolder Root; - string FolderPath = Directory.GetParent(path).FullName; - IntPtr Pidl = IntPtr.Zero; - IShellFolder parent; - uint i, j = 0; - desktop.ParseDisplayName(ownerHwnd, IntPtr.Zero, FolderPath, out i, out Pidl, ref j); - desktop.BindToObject(Pidl, IntPtr.Zero, ref Guids.IID_IShellFolder, out Root); - Marshal.ReleaseComObject(desktop); - - IEnumIDList fileEnum = null; - IEnumIDList folderEnum = null; - IntPtr fileEnumPtr = IntPtr.Zero; - IntPtr folderEnumPtr = IntPtr.Zero; - IntPtr pidlSub; - int celtFetched; - - if (Root.EnumObjects(ownerHwnd, SHCONTF.FOLDERS | SHCONTF.INCLUDEHIDDEN, out fileEnumPtr) == ShellAPI.S_OK) - { - fileEnum = (IEnumIDList)Marshal.GetObjectForIUnknown(fileEnumPtr); - while (fileEnum.Next(1, out pidlSub, out celtFetched) == 0 && celtFetched == ShellAPI.S_FALSE) - { - string name = ShellAPI.GetNameByPIDL(pidlSub); - } - } - - if (Root.EnumObjects(ownerHwnd, SHCONTF.NONFOLDERS | SHCONTF.INCLUDEHIDDEN, out folderEnumPtr) == ShellAPI.S_OK) - { - folderEnum = (IEnumIDList)Marshal.GetObjectForIUnknown(folderEnumPtr); - while (folderEnum.Next(1, out pidlSub, out celtFetched) == 0 && celtFetched == ShellAPI.S_FALSE) - { - string name = ShellAPI.GetNameByPIDL(pidlSub); - if (Path.GetFileName(path) == name) - { - IntPtr PIDL = pidlSub; - IShellFolder IParent = Root; - IntPtr[] pidls = new IntPtr[1]; - pidls[0] = PIDL; - - //get IContextMenu interface - IntPtr iContextMenuPtr = IntPtr.Zero; - iContextMenuPtr = IParent.GetUIObjectOf(IntPtr.Zero, (uint)pidls.Length, - pidls, ref Guids.IID_IContextMenu, out iContextMenuPtr); - IContextMenu iContextMenu = (IContextMenu)Marshal.GetObjectForIUnknown(iContextMenuPtr); - - IntPtr contextMenu = ShellAPI.CreatePopupMenu(); - iContextMenu.QueryContextMenu(contextMenu, 0, ShellAPI.CMD_FIRST, ShellAPI.CMD_LAST, CMF.NORMAL | CMF.EXPLORE); - ParseMenu(contextMenu); - } - } - } - - Marshal.ReleaseComObject(Root); - } - - private void ParseMenu(IntPtr contextMenu) - { - var menuItemCount = ShellAPI.GetMenuItemCount(contextMenu); - for (uint k = 0; k < menuItemCount - 1; k++) - { - StringBuilder menuName = new StringBuilder(320); - ShellAPI.GetMenuString(contextMenu, k, menuName, 320, ShellAPI.MF_BYPOSITION); - Debug.WriteLine(menuName.Replace("&", "")); - - //https://msdn.microsoft.com/en-us/library/windows/desktop/ms647578(v=vs.85).aspx - ShellAPI.MENUITEMINFO menuiteminfo_t; - int MIIM_SUBMENU = 0x00000004; - int MIIM_STRING = 0x00000040; - int MIIM_FTYPE = 0x00000100; - menuiteminfo_t = new ShellAPI.MENUITEMINFO(); - menuiteminfo_t.fMask = MIIM_SUBMENU | MIIM_STRING | MIIM_FTYPE; - menuiteminfo_t.dwTypeData = new string('\0', 320); - menuiteminfo_t.cch = menuiteminfo_t.dwTypeData.Length - 1; - bool result = ShellAPI.GetMenuItemInfo(new HandleRef(null, contextMenu), (int)k, true, menuiteminfo_t); - if (menuiteminfo_t.hSubMenu != IntPtr.Zero) - { - ParseMenu(menuiteminfo_t.hSubMenu); - } - ShellAPI.DeleteMenu(contextMenu, k, ShellAPI.MF_BYPOSITION); - } - } - } -} diff --git a/Wox/ShellContext/Structs.cs b/Wox/ShellContext/Structs.cs deleted file mode 100644 index 00dfae4001..0000000000 --- a/Wox/ShellContext/Structs.cs +++ /dev/null @@ -1,71 +0,0 @@ -using System; -using System.Runtime.InteropServices; - -namespace Wox.ShellContext -{ - [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] - public struct SHFILEINFO - { - public IntPtr hIcon; - public int iIcon; - public SFGAO dwAttributes; - [MarshalAs(UnmanagedType.ByValTStr, SizeConst = ShellAPI.MAX_PATH)] - public string szDisplayName; - [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 80)] - public string szTypeName; - } - - [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] - public struct CMINVOKECOMMANDINFO - { - public int cbSize; // sizeof(CMINVOKECOMMANDINFO) - public int fMask; // any combination of CMIC_MASK_* - public IntPtr hwnd; // might be NULL (indicating no owner window) - public IntPtr lpVerb; // either a string or MAKEINTRESOURCE(idOffset) - public IntPtr lpParameters; // might be NULL (indicating no parameter) - public IntPtr lpDirectory; // might be NULL (indicating no specific directory) - public int nShow; // one of SW_ values for ShowWindow() API - public int dwHotKey; - public IntPtr hIcon; - } - - [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] - public struct CMINVOKECOMMANDINFOEX - { - public int cbSize; - public uint fMask; - public IntPtr hwnd; - public IntPtr lpVerb; - [MarshalAs(UnmanagedType.LPStr)] - public string lpParameters; - [MarshalAs(UnmanagedType.LPStr)] - public string lpDirectory; - public int nShow; - public int dwHotKey; - public IntPtr hIcon; - [MarshalAs(UnmanagedType.LPStr)] - public string lpTitle; - public IntPtr lpVerbW; - [MarshalAs(UnmanagedType.LPWStr)] - public string lpParametersW; - [MarshalAs(UnmanagedType.LPWStr)] - public string lpDirectoryW; - [MarshalAs(UnmanagedType.LPWStr)] - public string lpTitleW; - public POINT ptInvoke; - } - - [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] - public struct POINT - { - public POINT(int x, int y) - { - this.x = x; - this.y = y; - } - - public int x; - public int y; - } - -}