mirror of https://github.com/dahall/Vanara.git
80 lines
2.4 KiB
C#
80 lines
2.4 KiB
C#
using NUnit.Framework;
|
|
using NUnit.Framework.Internal;
|
|
using System;
|
|
using System.Text;
|
|
using System.Runtime.InteropServices;
|
|
using static Vanara.PInvoke.Imm32;
|
|
|
|
namespace Vanara.PInvoke.Tests
|
|
{
|
|
[TestFixture]
|
|
public class MSImmTests
|
|
{
|
|
#if ILANG
|
|
IFELanguage ilang = null;
|
|
|
|
[OneTimeSetUp]
|
|
public void _Setup()
|
|
{
|
|
CLSIDFromString("MSIME.Japan", out var clsid).ThrowIfFailed();
|
|
CoCreateInstance(clsid, default, 5, typeof(IFELanguage).GUID, out var olang).ThrowIfFailed();
|
|
ilang = Marshal.GetTypedObjectForIUnknown(olang, typeof(IFELanguage)) as IFELanguage;
|
|
ilang.Open();
|
|
}
|
|
|
|
[OneTimeTearDown]
|
|
public void _TearDown()
|
|
{
|
|
ilang?.Close();
|
|
ilang = null;
|
|
}
|
|
|
|
[Test]
|
|
public void LangTest()
|
|
{
|
|
Assert.That(() => ilang.GetConversionModeCaps(out var caps), Throws.Nothing);
|
|
}
|
|
|
|
[DllImport("ole32.dll", SetLastError = false, ExactSpelling = true)]
|
|
private static extern HRESULT CLSIDFromString([MarshalAs(UnmanagedType.LPWStr)] string lpsz, out Guid pclsid);
|
|
|
|
[DllImport("ole32.dll", SetLastError = false, ExactSpelling = true)]
|
|
private static extern HRESULT CoCreateInstance(in Guid rclsid, IntPtr pUnkOuter, uint dwClsContext, in Guid riid, out IntPtr ppv);
|
|
#endif
|
|
|
|
[Test]
|
|
public void PlugInDictDictionaryListTest()
|
|
{
|
|
var idlist = new ImePlugInDictDictionaryList1041() as IImePlugInDictDictionaryList;
|
|
Assert.That(() => idlist.GetDictionariesInUse(out var guids, out var dt, out var enc), Throws.Nothing);
|
|
}
|
|
|
|
[Test]
|
|
public void CommonTest()
|
|
{
|
|
IFECommon iCommon = GetIFECommon();
|
|
Assert.That(iCommon.InvokeWordRegDialog(new(User32.GetDesktopWindow(), "Testing")), ResultIs.Successful);
|
|
}
|
|
|
|
[Test]
|
|
public void DictTest()
|
|
{
|
|
//IFEDictionary dict = GetIFECommon() as IFEDictionary;
|
|
//Assert.That(dict, Is.Not.Null);
|
|
//var sb = new StringBuilder(@"%APPDATA%\Microsoft\IME\15.0\IMEJP\UserDict\imjp15cu.dic");
|
|
//Assert.That(() => dict.GetHeader(sb, out var shf, out var fmt, out var typ), Throws.Nothing);
|
|
}
|
|
|
|
private static IFECommon GetIFECommon()
|
|
{
|
|
using var lib = Kernel32.LoadLibrary(@"C:\Windows\System32\IME\IMEJP\IMJPAPI.DLL");
|
|
Assert.That(lib, ResultIs.ValidHandle);
|
|
IntPtr pAddr = Kernel32.GetProcAddress(lib, "CreateIFECommonInstance");
|
|
Assert.That(pAddr, Is.Not.EqualTo(IntPtr.Zero));
|
|
var cci = Marshal.GetDelegateForFunctionPointer<CreateIFECommonInstance>(pAddr);
|
|
Assert.That(cci, Is.Not.Null);
|
|
Assert.That(cci.Invoke(out var iCommon), ResultIs.Successful);
|
|
return iCommon;
|
|
}
|
|
}
|
|
} |