2020-11-29 12:20:28 -05:00
|
|
|
|
using NUnit.Framework;
|
|
|
|
|
using System;
|
|
|
|
|
using System.Runtime.InteropServices;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using Vanara.InteropServices;
|
|
|
|
|
using Vanara.PInvoke;
|
|
|
|
|
using Vanara.PInvoke.Tests;
|
|
|
|
|
using static Vanara.PInvoke.Shell32;
|
|
|
|
|
using static Vanara.PInvoke.User32;
|
|
|
|
|
|
|
|
|
|
namespace Vanara.Windows.Shell.Tests
|
|
|
|
|
{
|
|
|
|
|
[TestFixture]
|
|
|
|
|
public class ShellContextMenuTests
|
|
|
|
|
{
|
|
|
|
|
[Test]
|
|
|
|
|
public void CreateTest()
|
|
|
|
|
{
|
2021-01-24 21:02:12 -05:00
|
|
|
|
using var shi = ShellItem.Open(TestCaseSources.TempDir);
|
2021-01-21 11:51:54 -05:00
|
|
|
|
using var menu = new ShellContextMenu(shi);
|
2021-01-24 21:02:12 -05:00
|
|
|
|
var items = menu.GetItems(CMF.CMF_EXTENDEDVERBS | CMF.CMF_EXPLORE | CMF.CMF_CANRENAME | CMF.CMF_ITEMMENU);
|
2020-11-29 12:20:28 -05:00
|
|
|
|
for (var i = 0; i < items.Length; i++)
|
|
|
|
|
ShowMII(items[i], i);
|
2021-02-04 16:24:14 -05:00
|
|
|
|
}
|
2020-11-29 12:20:28 -05:00
|
|
|
|
|
2021-02-04 16:24:14 -05:00
|
|
|
|
[Test]
|
|
|
|
|
public void CreateTest2()
|
|
|
|
|
{
|
|
|
|
|
using var shi = ShellItem.Open(TestCaseSources.ImageFile);
|
|
|
|
|
using var shi2 = ShellItem.Open(TestCaseSources.Image2File);
|
|
|
|
|
using var menu = new ShellContextMenu(shi, shi2);
|
|
|
|
|
var items = menu.GetItems(CMF.CMF_EXTENDEDVERBS | CMF.CMF_EXPLORE | CMF.CMF_CANRENAME | CMF.CMF_ITEMMENU);
|
|
|
|
|
for (var i = 0; i < items.Length; i++)
|
|
|
|
|
ShowMII(items[i], i);
|
|
|
|
|
}
|
|
|
|
|
|
2021-02-08 17:33:48 -05:00
|
|
|
|
[Test]
|
|
|
|
|
public void TestRepeatFail()
|
|
|
|
|
{
|
|
|
|
|
for (int i = 0; i < 20; i++)
|
|
|
|
|
{
|
|
|
|
|
using ShellItem Item = ShellItem.Open(TestCaseSources.ImageFile);
|
|
|
|
|
using ShellContextMenu ContextMenu = new ShellContextMenu(Item);
|
|
|
|
|
TestContext.WriteLine(ContextMenu.ComInterface.GetType().Name);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2021-02-04 16:24:14 -05:00
|
|
|
|
static void ShowMII(ShellContextMenu.MenuItemInfo mii, int c, int indent = 0)
|
|
|
|
|
{
|
|
|
|
|
TestContext.WriteLine($"{new string(' ', indent * 3)}{c + 1}) \"{mii.Text}\" (#{mii.Id}) - Type={mii.Type}; State={mii.State}; Verb={mii.Verb}; Tooltip={mii.HelpText}; IconLoc={mii.VerbIconLocation}");
|
|
|
|
|
for (int j = 0; j < mii.SubMenus.Length; j++)
|
|
|
|
|
ShowMII(mii.SubMenus[j], j, indent + 1);
|
2020-11-29 12:20:28 -05:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|