private void ShowMenu(ShellItem[] files, bool allFolders) { CreateHandle(new CreateParams()); if (EnvironmentHelper.IsWindows10DarkModeSupported) { NativeMethods.AllowDarkModeForWindow(Handle, true); } uint selected = Interop.TrackPopupMenuEx( nativeMenuPtr, TPM.RETURNCMD, x, y, Handle, IntPtr.Zero); HandleMenuCommand(files, selected, allFolders); DestroyHandle(); }
private void ShowMenu(ShellFolder folder, IntPtr contextMenu) { CreateHandle(new CreateParams()); if (EnvironmentHelper.IsWindows10DarkModeSupported) { NativeMethods.AllowDarkModeForWindow(Handle, true); } uint selected = Interop.TrackPopupMenuEx( contextMenu, TPM.RETURNCMD, x, y, Handle, IntPtr.Zero); if (selected >= Interop.CMD_FIRST) { if (selected <= Interop.CMD_LAST) { // custom commands are greater than CMD_LAST, so this must be a sub menu item foreach (var subMenu in ShellNewMenus) { if (subMenu.iContextMenu != null) { InvokeCommand( subMenu.iContextMenu, folder.IsFolder && folder.IsFileSystem ? folder.Path : null, selected - Interop.CMD_FIRST, new Point(x, y)); } } } folderItemSelected?.Invoke(selected, folder.Path); } DestroyHandle(); }