mirror of https://github.com/dahall/Vanara.git
1586 lines
60 KiB
C#
1586 lines
60 KiB
C#
#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member
|
|
|
|
using System;
|
|
using System.Runtime.InteropServices;
|
|
using System.Text;
|
|
using Vanara.InteropServices;
|
|
|
|
namespace Vanara.PInvoke
|
|
{
|
|
/// <summary>Items from the Imm32.dll</summary>
|
|
public static partial class Imm32
|
|
{
|
|
/// <summary>invalid dictionary format</summary>
|
|
public static readonly HRESULT IFED_E_INVALID_FORMAT = HRESULT.Make(true, HRESULT.FacilityCode.FACILITY_ITF, 0x7301);
|
|
|
|
/// <summary>no entry found in dictionary</summary>
|
|
public static readonly HRESULT IFED_E_NO_ENTRY = HRESULT.Make(true, HRESULT.FacilityCode.FACILITY_ITF, 0x7304);
|
|
|
|
/// <summary>dictionary is not found</summary>
|
|
public static readonly HRESULT IFED_E_NOT_FOUND = HRESULT.Make(true, HRESULT.FacilityCode.FACILITY_ITF, 0x7300);
|
|
|
|
/// <summary>not supported</summary>
|
|
public static readonly HRESULT IFED_E_NOT_SUPPORTED = HRESULT.Make(true, HRESULT.FacilityCode.FACILITY_ITF, 0x7307);
|
|
|
|
/// <summary>not a user dictionary</summary>
|
|
public static readonly HRESULT IFED_E_NOT_USER_DIC = HRESULT.Make(true, HRESULT.FacilityCode.FACILITY_ITF, 0x7306);
|
|
|
|
/// <summary>failed to open file</summary>
|
|
public static readonly HRESULT IFED_E_OPEN_FAILED = HRESULT.Make(true, HRESULT.FacilityCode.FACILITY_ITF, 0x7302);
|
|
|
|
/// <summary>dictionary is disconnected</summary>
|
|
public static readonly HRESULT IFED_E_REGISTER_DISCONNECTED = HRESULT.Make(true, HRESULT.FacilityCode.FACILITY_ITF, 0x730b);
|
|
|
|
/// <summary>this routines doesn't support the current dictionary</summary>
|
|
public static readonly HRESULT IFED_E_REGISTER_FAILED = HRESULT.Make(true, HRESULT.FacilityCode.FACILITY_ITF, 0x7305);
|
|
|
|
/// <summary>improper POS is to be registered</summary>
|
|
public static readonly HRESULT IFED_E_REGISTER_ILLEGAL_POS = HRESULT.Make(true, HRESULT.FacilityCode.FACILITY_ITF, 0x7309);
|
|
|
|
/// <summary>improper word is to be registered</summary>
|
|
public static readonly HRESULT IFED_E_REGISTER_IMPROPER_WORD = HRESULT.Make(true, HRESULT.FacilityCode.FACILITY_ITF, 0x730a);
|
|
|
|
/// <summary>failed to insert user comment</summary>
|
|
public static readonly HRESULT IFED_E_USER_COMMENT = HRESULT.Make(true, HRESULT.FacilityCode.FACILITY_ITF, 0x7308);
|
|
|
|
/// <summary>failed to write to file</summary>
|
|
public static readonly HRESULT IFED_E_WRITE_FAILED = HRESULT.Make(true, HRESULT.FacilityCode.FACILITY_ITF, 0x7303);
|
|
|
|
/// <summary>word already exists in dictionary but only comment data is updated</summary>
|
|
public static readonly HRESULT IFED_S_COMMENT_CHANGED = HRESULT.Make(false, HRESULT.FacilityCode.FACILITY_ITF, 0x7203);
|
|
|
|
/// <summary>dictionary is empty, no header information is returned</summary>
|
|
public static readonly HRESULT IFED_S_EMPTY_DICTIONARY = HRESULT.Make(false, HRESULT.FacilityCode.FACILITY_ITF, 0x7201);
|
|
|
|
/// <summary>no more entries in the dictionary</summary>
|
|
public static readonly HRESULT IFED_S_MORE_ENTRIES = HRESULT.Make(false, HRESULT.FacilityCode.FACILITY_ITF, 0x7200);
|
|
|
|
/// <summary>word already exists in dictionary</summary>
|
|
public static readonly HRESULT IFED_S_WORD_EXISTS = HRESULT.Make(false, HRESULT.FacilityCode.FACILITY_ITF, 0x7202);
|
|
|
|
/// <summary>Returns a pointer to an IFECommon interface.</summary>
|
|
/// <param name="ppvObj">Address of the pointer variable that receives the IFECommon interface pointer of the object created.</param>
|
|
/// <returns><c>S_OK</c> if successful, otherwise an OLE-defined error code.</returns>
|
|
/// <remarks>
|
|
/// There is no import library available that defines this function. It is necessary to manually obtain a pointer to this function
|
|
/// using LoadLibrary and GetProcAddress.
|
|
/// </remarks>
|
|
// https://docs.microsoft.com/en-us/windows/win32/api/msime/nf-msime-createifecommoninstance HRESULT CreateIFECommonInstance( [out]
|
|
// VOID **ppvObj );
|
|
[UnmanagedFunctionPointer(CallingConvention.Winapi)]
|
|
[PInvokeData("msime.h", MSDNShortId = "NF:msime.CreateIFECommonInstance")]
|
|
public delegate HRESULT CreateIFECommonInstance(out IFECommon ppvObj);
|
|
|
|
/// <summary>Returns a pointer to an IFEDictionary interface.</summary>
|
|
/// <param name="ppvObj">Address of the pointer variable that receives the IFEDictionary interface pointer of the object created.</param>
|
|
/// <returns><c>S_OK</c> if successful, otherwise an OLE-defined error code.</returns>
|
|
/// <remarks>
|
|
/// There is no import library available that defines this function. It is necessary to manually obtain a pointer to this function
|
|
/// using LoadLibrary and GetProcAddress.
|
|
/// </remarks>
|
|
// https://docs.microsoft.com/en-us/windows/win32/api/msime/nf-msime-createifedictionaryinstance HRESULT CreateIFEDictionaryInstance(
|
|
// [out] VOID **ppvObj );
|
|
[UnmanagedFunctionPointer(CallingConvention.Winapi)]
|
|
[PInvokeData("msime.h", MSDNShortId = "NF:msime.CreateIFEDictionaryInstance")]
|
|
public delegate HRESULT CreateIFEDictionaryInstance(out IFEDictionary ppvObj);
|
|
|
|
/// <summary>Returns a pointer to an IFELanguage interface.</summary>
|
|
/// <param name="clsid">Reserved. Must be set to <c>NULL</c>.</param>
|
|
/// <param name="ppvObj">Address of the pointer variable that receives the IFELanguage interface pointer of the object created.</param>
|
|
/// <returns><c>S_OK</c> if successful, otherwise an OLE-defined error code.</returns>
|
|
// https://docs.microsoft.com/en-us/windows/win32/api/msime/nf-msime-createifelanguageinstance HRESULT CreateIFELanguageInstance(
|
|
// [in] REFCLSID clsid, [out] VOID **ppvObj );
|
|
[UnmanagedFunctionPointer(CallingConvention.Winapi)]
|
|
[PInvokeData("msime.h", MSDNShortId = "NF:msime.CreateIFELanguageInstance")]
|
|
public delegate HRESULT CreateIFELanguageInstance([In, Optional] IntPtr clsid, out IFELanguage ppvObj);
|
|
|
|
[PInvokeData("msime.h")]
|
|
[UnmanagedFunctionPointer(CallingConvention.Winapi)]
|
|
public delegate bool PFNLOG(ref IMEDP a, HRESULT hr);
|
|
|
|
/// <summary>The information for each column</summary>
|
|
[PInvokeData("msime.h")]
|
|
[Flags]
|
|
public enum FELANG_CLMN : uint
|
|
{
|
|
FELANG_CLMN_WBREAK = 0x01,
|
|
FELANG_CLMN_NOWBREAK = 0x02,
|
|
FELANG_CLMN_PBREAK = 0x04,
|
|
FELANG_CLMN_NOPBREAK = 0x08,
|
|
FELANG_CLMN_FIXR = 0x10,
|
|
FELANG_CLMN_FIXD = 0x20,
|
|
}
|
|
|
|
/// <summary>Specifies the conversion output characters and conversion options.</summary>
|
|
[PInvokeData("msime.h")]
|
|
[Flags]
|
|
public enum FELANG_CMODE : uint
|
|
{
|
|
/// <summary>Mono-ruby.</summary>
|
|
FELANG_CMODE_MONORUBY = 0x00000002,
|
|
|
|
/// <summary>No pruning.</summary>
|
|
FELANG_CMODE_NOPRUNING = 0x00000004,
|
|
|
|
/// <summary>Katakana output.</summary>
|
|
FELANG_CMODE_KATAKANAOUT = 0x00000008,
|
|
|
|
/// <summary>Default output.</summary>
|
|
FELANG_CMODE_HIRAGANAOUT = 0x00000000,
|
|
|
|
/// <summary>Half-width output.</summary>
|
|
FELANG_CMODE_HALFWIDTHOUT = 0x00000010,
|
|
|
|
/// <summary>Full-width output.</summary>
|
|
FELANG_CMODE_FULLWIDTHOUT = 0x00000020,
|
|
|
|
FELANG_CMODE_BOPOMOFO = 0x00000040,
|
|
FELANG_CMODE_HANGUL = 0x00000080,
|
|
FELANG_CMODE_PINYIN = 0x00000100,
|
|
|
|
/// <summary>Do conversion as follows:</summary>
|
|
FELANG_CMODE_PRECONV = 0x00000200,
|
|
|
|
FELANG_CMODE_RADICAL = 0x00000400,
|
|
FELANG_CMODE_UNKNOWNREADING = 0x00000800,
|
|
|
|
/// <summary>Merge display with the same candidate.</summary>
|
|
FELANG_CMODE_MERGECAND = 0x00001000,
|
|
|
|
FELANG_CMODE_ROMAN = 0x00002000,
|
|
|
|
/// <summary>Make only the first best.</summary>
|
|
FELANG_CMODE_BESTFIRST = 0x00004000,
|
|
|
|
/// <summary>Use invalid revword on REV/RECONV.</summary>
|
|
FELANG_CMODE_USENOREVWORDS = 0x00008000,
|
|
|
|
/// <summary>IME_SMODE_NONE</summary>
|
|
FELANG_CMODE_NONE = 0x01000000,
|
|
|
|
/// <summary>IME_SMODE_PLAURALCLAUSE</summary>
|
|
FELANG_CMODE_PLAURALCLAUSE = 0x02000000,
|
|
|
|
/// <summary>IME_SMODE_SINGLECONVERT</summary>
|
|
FELANG_CMODE_SINGLECONVERT = 0x04000000,
|
|
|
|
/// <summary>IME_SMODE_AUTOMATIC</summary>
|
|
FELANG_CMODE_AUTOMATIC = 0x08000000,
|
|
|
|
/// <summary>IME_SMODE_PHRASEPREDICT</summary>
|
|
FELANG_CMODE_PHRASEPREDICT = 0x10000000,
|
|
|
|
/// <summary>IME_SMODE_CONVERSATION</summary>
|
|
FELANG_CMODE_CONVERSATION = 0x20000000,
|
|
|
|
/// <summary>Name mode (MSKKIME).</summary>
|
|
FELANG_CMODE_NAME = FELANG_CMODE_PHRASEPREDICT,
|
|
|
|
/// <summary>Remove invisible chars (for example, the tone mark).</summary>
|
|
FELANG_CMODE_NOINVISIBLECHAR = 0x40000000,
|
|
}
|
|
|
|
/// <summary>The conversion request.</summary>
|
|
[PInvokeData("msime.h", MSDNShortId = "NN:msime.IFELanguage")]
|
|
public enum FELANG_REQ
|
|
{
|
|
FELANG_REQ_CONV = 0x00010000,
|
|
FELANG_REQ_RECONV = 0x00020000,
|
|
FELANG_REQ_REV = 0x00030000,
|
|
}
|
|
|
|
/// <summary></summary>
|
|
[PInvokeData("msime.h", MSDNShortId = "NN:msime.IFEDictionary")]
|
|
[Flags]
|
|
public enum IFED_POS : uint
|
|
{
|
|
IFED_POS_NONE = 0x00000000,
|
|
IFED_POS_NOUN = 0x00000001,
|
|
IFED_POS_VERB = 0x00000002,
|
|
IFED_POS_ADJECTIVE = 0x00000004,
|
|
IFED_POS_ADJECTIVE_VERB = 0x00000008,
|
|
IFED_POS_ADVERB = 0x00000010,
|
|
IFED_POS_ADNOUN = 0x00000020,
|
|
IFED_POS_CONJUNCTION = 0x00000040,
|
|
IFED_POS_INTERJECTION = 0x00000080,
|
|
IFED_POS_INDEPENDENT = 0x000000ff,
|
|
IFED_POS_INFLECTIONALSUFFIX = 0x00000100,
|
|
IFED_POS_PREFIX = 0x00000200,
|
|
IFED_POS_SUFFIX = 0x00000400,
|
|
IFED_POS_AFFIX = 0x00000600,
|
|
IFED_POS_TANKANJI = 0x00000800,
|
|
IFED_POS_IDIOMS = 0x00001000,
|
|
IFED_POS_SYMBOLS = 0x00002000,
|
|
IFED_POS_PARTICLE = 0x00004000,
|
|
IFED_POS_AUXILIARY_VERB = 0x00008000,
|
|
IFED_POS_SUB_VERB = 0x00010000,
|
|
IFED_POS_DEPENDENT = 0x0001c000,
|
|
IFED_POS_ALL = 0x0001ffff,
|
|
}
|
|
|
|
/// <summary></summary>
|
|
[PInvokeData("msime.h", MSDNShortId = "NN:msime.IFEDictionary")]
|
|
[Flags]
|
|
public enum IFED_REG : uint
|
|
{
|
|
IFED_REG_NONE = 0x00000000,
|
|
IFED_REG_USER = 0x00000001,
|
|
IFED_REG_AUTO = 0x00000002,
|
|
IFED_REG_GRAMMAR = 0x00000004,
|
|
IFED_REG_ALL = 0x00000007,
|
|
}
|
|
|
|
/// <summary></summary>
|
|
[PInvokeData("msime.h", MSDNShortId = "NN:msime.IFEDictionary")]
|
|
[Flags]
|
|
public enum IFED_SELECT : uint
|
|
{
|
|
IFED_SELECT_NONE = 0x00000000,
|
|
IFED_SELECT_READING = 0x00000001,
|
|
IFED_SELECT_DISPLAY = 0x00000002,
|
|
IFED_SELECT_POS = 0x00000004,
|
|
IFED_SELECT_COMMENT = 0x00000008,
|
|
IFED_SELECT_ALL = 0x0000000f,
|
|
}
|
|
|
|
/// <summary>The dictionary type.</summary>
|
|
[PInvokeData("msime.h", MSDNShortId = "NN:msime.IFEDictionary")]
|
|
[Flags]
|
|
public enum IFED_TYPE : uint
|
|
{
|
|
/// <summary>Undefined.</summary>
|
|
IFED_TYPE_NONE = 0x00000000,
|
|
|
|
/// <summary>General dictionary.</summary>
|
|
IFED_TYPE_GENERAL = 0x00000001,
|
|
|
|
/// <summary>Name/place dictionary.</summary>
|
|
IFED_TYPE_NAMEPLACE = 0x00000002,
|
|
|
|
/// <summary>Speech dictionary.</summary>
|
|
IFED_TYPE_SPEECH = 0x00000004,
|
|
|
|
/// <summary>Reverse dictionary.</summary>
|
|
IFED_TYPE_REVERSE = 0x00000008,
|
|
|
|
/// <summary>English dictionary.</summary>
|
|
IFED_TYPE_ENGLISH = 0x00000010,
|
|
|
|
/// <summary>All of the above types.</summary>
|
|
IFED_TYPE_ALL = 0x0000001f,
|
|
}
|
|
|
|
[PInvokeData("msime.h")]
|
|
public enum IMEFMT
|
|
{
|
|
IFED_UNKNOWN,
|
|
IFED_MSIME2_BIN_SYSTEM,
|
|
IFED_MSIME2_BIN_USER,
|
|
IFED_MSIME2_TEXT_USER,
|
|
IFED_MSIME95_BIN_SYSTEM,
|
|
IFED_MSIME95_BIN_USER,
|
|
IFED_MSIME95_TEXT_USER,
|
|
IFED_MSIME97_BIN_SYSTEM,
|
|
IFED_MSIME97_BIN_USER,
|
|
IFED_MSIME97_TEXT_USER,
|
|
IFED_MSIME98_BIN_SYSTEM,
|
|
IFED_MSIME98_BIN_USER,
|
|
IFED_MSIME98_TEXT_USER,
|
|
IFED_ACTIVE_DICT,
|
|
IFED_ATOK9,
|
|
IFED_ATOK10,
|
|
IFED_NEC_AI_,
|
|
IFED_WX_II,
|
|
IFED_WX_III,
|
|
IFED_VJE_20,
|
|
IFED_MSIME98_SYSTEM_CE,
|
|
IFED_MSIME_BIN_SYSTEM,
|
|
IFED_MSIME_BIN_USER,
|
|
IFED_MSIME_TEXT_USER,
|
|
IFED_PIME2_BIN_USER,
|
|
IFED_PIME2_BIN_SYSTEM,
|
|
IFED_PIME2_BIN_STANDARD_SYSTEM,
|
|
}
|
|
|
|
[PInvokeData("msime.h")]
|
|
public enum IMEREG
|
|
{
|
|
IFED_REG_HEAD,
|
|
IFED_REG_TAIL,
|
|
IFED_REG_DEL,
|
|
}
|
|
|
|
[PInvokeData("msime.h")]
|
|
public enum IMEREL
|
|
{
|
|
IFED_REL_NONE,
|
|
IFED_REL_NO,
|
|
IFED_REL_GA,
|
|
IFED_REL_WO,
|
|
IFED_REL_NI,
|
|
IFED_REL_DE,
|
|
IFED_REL_YORI,
|
|
IFED_REL_KARA,
|
|
IFED_REL_MADE,
|
|
IFED_REL_HE,
|
|
IFED_REL_TO,
|
|
IFED_REL_IDEOM,
|
|
IFED_REL_FUKU_YOUGEN, //p2_1
|
|
IFED_REL_KEIYOU_YOUGEN, //p2_2
|
|
IFED_REL_KEIDOU1_YOUGEN, //p2_3
|
|
IFED_REL_KEIDOU2_YOUGEN, //p2_4
|
|
IFED_REL_TAIGEN, //p2_5
|
|
IFED_REL_YOUGEN, //p2_6
|
|
IFED_REL_RENTAI_MEI, //p3_1
|
|
IFED_REL_RENSOU, //p3_2
|
|
IFED_REL_KEIYOU_TO_YOUGEN, //p3_3
|
|
IFED_REL_KEIYOU_TARU_YOUGEN,//p3_4
|
|
IFED_REL_UNKNOWN1, //p3_5
|
|
IFED_REL_UNKNOWN2, //p3_6
|
|
IFED_REL_ALL, //any type
|
|
}
|
|
|
|
/// <summary>Type of user comment in a IMEWRD structure.</summary>
|
|
// https://docs.microsoft.com/en-us/windows/win32/api/msime/ne-msime-imeuct typedef enum { IFED_UCT_NONE, IFED_UCT_STRING_SJIS,
|
|
// IFED_UCT_STRING_UNICODE, IFED_UCT_USER_DEFINED, IFED_UCT_MAX } IMEUCT;
|
|
[PInvokeData("msime.h", MSDNShortId = "NE:msime.__unnamed_enum_2")]
|
|
public enum IMEUCT
|
|
{
|
|
IFED_UCT_NONE,
|
|
IFED_UCT_STRING_SJIS,
|
|
IFED_UCT_STRING_UNICODE,
|
|
IFED_UCT_USER_DEFINED,
|
|
IFED_UCT_MAX,
|
|
}
|
|
|
|
/// <summary>
|
|
/// The IFECommon interface provides IME-related services that are common for different languages.
|
|
/// <para>IFECommon allows the developer to control very basic functions of IMEs.</para>
|
|
/// </summary>
|
|
/// <remarks>Create an instance of this interface with the CreateIFECommonInstance function.</remarks>
|
|
// https://docs.microsoft.com/en-us/windows/win32/api/msime/nn-msime-ifecommon
|
|
[PInvokeData("msime.h", MSDNShortId = "NN:msime.IFECommon")]
|
|
[ComImport, Guid("019F7151-E6DB-11d0-83C3-00C04FDDB82E"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
|
|
public interface IFECommon
|
|
{
|
|
/// <summary>
|
|
/// Determines if the IME specified by the class ID is the default IME on a local computer.
|
|
/// <para>The name of the IME is obtained from the Win32 keyboard layout API.</para>
|
|
/// </summary>
|
|
/// <param name="szName">The name of the IME for the specified class ID. Can be <c>NULL</c>.</param>
|
|
/// <param name="cszName">The size of <c>szName</c> in bytes.</param>
|
|
/// <returns>
|
|
/// <list type="bullet">
|
|
/// <item>
|
|
/// <term><c>S_OK</c> if this Microsoft IME is already the default IME.</term>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>S_FALSE</c> if this Microsoft IME is not the default IME.</term>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term>Otherwise <c>E_FAIL</c>.</term>
|
|
/// </item>
|
|
/// </list>
|
|
/// </returns>
|
|
// https://docs.microsoft.com/en-us/windows/win32/api/msime/nf-msime-ifecommon-isdefaultime HRESULT IsDefaultIME( [out] const
|
|
// CHAR *szName, [in] INT cszName );
|
|
[PreserveSig]
|
|
HRESULT IsDefaultIME([Out, Optional, MarshalAs(UnmanagedType.LPStr)] StringBuilder szName, [In] int cszName);
|
|
|
|
/// <summary>
|
|
/// Allows the Microsoft IME to become the default IME in the keyboard layout.
|
|
/// <para>This method only applies when Microsoft IME uses the Input Method Manager(IMM) of the operating system.</para>
|
|
/// </summary>
|
|
/// <returns>
|
|
/// <list type="bullet">
|
|
/// <item>
|
|
/// <term><c>S_OK</c> if successful.</term>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>IFEC_S_ALREADY_DEFAULT</c> if this Microsoft IME is already the default IME.</term>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term>Otherwise <c>E_FAIL</c>.</term>
|
|
/// </item>
|
|
/// </list>
|
|
/// </returns>
|
|
// https://docs.microsoft.com/en-us/windows/win32/api/msime/nf-msime-ifecommon-setdefaultime HRESULT SetDefaultIME();
|
|
[PreserveSig]
|
|
HRESULT SetDefaultIME();
|
|
|
|
/// <summary>Invokes the Microsoft IME Word Register Dialog Window from the app.</summary>
|
|
/// <param name="pimedlg">Pointer to an IMEDLG structure.</param>
|
|
/// <returns><c>S_OK</c> if successful, otherwise <c>E_FAIL</c>.</returns>
|
|
// https://docs.microsoft.com/en-us/windows/win32/api/msime/nf-msime-ifecommon-invokewordregdialog HRESULT InvokeWordRegDialog(
|
|
// [in] IMEDLG *pimedlg );
|
|
[PreserveSig]
|
|
HRESULT InvokeWordRegDialog(in IMEDLG pimedlg);
|
|
|
|
/// <summary>Invokes the Microsoft IME's Dictionary Tool from the app.</summary>
|
|
/// <param name="pimedlg">Pointer to an IMEDLG structure.</param>
|
|
/// <returns><c>S_OK</c> if successful, otherwise <c>E_FAIL</c>.</returns>
|
|
// https://docs.microsoft.com/en-us/windows/win32/api/msime/nf-msime-ifecommon-invokedicttooldialog HRESULT InvokeDictToolDialog(
|
|
// [in] IMEDLG *pimedlg );
|
|
[PreserveSig]
|
|
HRESULT InvokeDictToolDialog(in IMEDLG pimedlg);
|
|
}
|
|
|
|
/// <summary>
|
|
/// <para>The IFEDictionary interface allows clients to access a Microsoft IME user dictionary.</para>
|
|
/// <para>
|
|
/// This API enables your apps to access and use the data contained in the Microsoft IME dictionaries(including personal name and
|
|
/// geographical name dictionaries), or user dictionary.You can develop and sell such applications, provided that:
|
|
/// </para>
|
|
/// <list type="bullet">
|
|
/// <item>You do not create an application that accesses a dictionary that is not a Microsoft IME dictionary through this API.</item>
|
|
/// <item>
|
|
/// You do not dump, copy, or distribute the dictionary data contained in the Microsoft IME. You must use this API only for the
|
|
/// purpose of developing applications for users who already have the Microsoft IME.
|
|
/// </item>
|
|
/// </list>
|
|
/// </summary>
|
|
/// <remarks>Create an instance of this interface with the CreateIFEDictionaryInstance function.</remarks>
|
|
// https://docs.microsoft.com/en-us/windows/win32/api/msime/nn-msime-ifedictionary
|
|
[PInvokeData("msime.h", MSDNShortId = "NN:msime.IFEDictionary")]
|
|
[ComImport, Guid("019F7153-E6DB-11d0-83C3-00C04FDDB82E"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
|
|
public interface IFEDictionary
|
|
{
|
|
/// <summary>
|
|
/// This method opens an existing dictionary file and associates it with this IFEDictionary object. To implement a multiple
|
|
/// dictionary facility, multiple open and release procedures must be carried out.
|
|
/// </summary>
|
|
/// <param name="pchDictPath">
|
|
/// Points to a <c>NULL</c>-terminated file name string to be opened. If <c>pchDictPath</c> is <c>NULL</c> or an empty string,
|
|
/// the user dictionary opened by the IME kernel will be used. If <c>pchDictPath</c> is an empty string, the name of user
|
|
/// dictionary will be copied into <c>pchDictPath</c>, in which case the size of <c>pchDictPath</c> must be <c>MAX_PATH</c>.
|
|
/// </param>
|
|
/// <param name="pshf">The IMESHF header of the opened file. Can be <c>NULL</c>.</param>
|
|
// https://docs.microsoft.com/en-us/windows/win32/api/msime/nf-msime-ifedictionary-open HRESULT Open( [in, optional] CHAR
|
|
// *pchDictPath, [out] IMESHF *pshf );
|
|
void Open([Optional, MarshalAs(UnmanagedType.LPStr)] string pchDictPath, out IMESHF pshf);
|
|
|
|
/// <summary>This method closes the file associated to this IFEDictionary object.</summary>
|
|
// https://docs.microsoft.com/en-us/windows/win32/api/msime/nf-msime-ifedictionary-close HRESULT Close();
|
|
void Close();
|
|
|
|
/// <summary>Gets a dictionary header from a dictionary file without opening the dictionary.</summary>
|
|
/// <param name="pchDictPath">A <c>NULL</c>-terminated string containing the path and name of the dictionary file.</param>
|
|
/// <param name="pshf">The IMESHF header of the file. Can be <c>NULL</c>.</param>
|
|
/// <param name="pjfmt">
|
|
/// <para>The dictionary format. This can be one of the following values:</para>
|
|
/// <list type="bullet">
|
|
/// <item>IFED_UNKNOWN</item>
|
|
/// <item>IFED_MSIME2_BIN_SYSTEM</item>
|
|
/// <item>IFED_MSIME2_BIN_USER</item>
|
|
/// <item>IFED_MSIME2_TEXT_USER</item>
|
|
/// <item>IFED_MSIME95_BIN_SYSTEM</item>
|
|
/// <item>IFED_MSIME95_BIN_USER</item>
|
|
/// <item>IFED_MSIME95_TEXT_USER</item>
|
|
/// <item>IFED_MSIME97_BIN_SYSTEM</item>
|
|
/// <item>IFED_MSIME97_BIN_USER</item>
|
|
/// <item>IFED_MSIME97_TEXT_USER</item>
|
|
/// <item>IFED_MSIME98_BIN_SYSTEM</item>
|
|
/// <item>IFED_MSIME98_BIN_USER</item>
|
|
/// <item>IFED_MSIME98_TEST_USER</item>
|
|
/// <item>IFED_ACTIVE_DICT</item>
|
|
/// <item>IFED_ATOK9</item>
|
|
/// <item>IFED_ATOK10</item>
|
|
/// <item>IFED_NEC_AI_</item>
|
|
/// <item>IFED_WX_II</item>
|
|
/// <item>IFED_WX_III</item>
|
|
/// <item>IFED_VJE_20</item>
|
|
/// <item>IFED_MSIME98_SYSTEM_CE</item>
|
|
/// <item>IFED_MSIME_BIN_SYSTEM</item>
|
|
/// <item>IFED_MSIME_BIN_USER</item>
|
|
/// <item>IFED_MSIME_TEXT_USER</item>
|
|
/// <item>IFED_PIME2_BIN_USER</item>
|
|
/// <item>IFED_PIME2_BIN_SYSTEM</item>
|
|
/// <item>IFED_PIME2_BIN_STANDARD_SYSTEM</item>
|
|
/// </list>
|
|
/// </param>
|
|
/// <param name="pulType">
|
|
/// <para>The dictionary type. This is a combination of one or more of the following flags:</para>
|
|
/// <list type="table">
|
|
/// <listheader>
|
|
/// <term>Value</term>
|
|
/// <term>Meaning</term>
|
|
/// </listheader>
|
|
/// <item>
|
|
/// <description><c>IFED_TYPE_NONE</c></description>
|
|
/// <description>Undefined.</description>
|
|
/// </item>
|
|
/// <item>
|
|
/// <description><c>IFED_TYPE_GENERAL</c></description>
|
|
/// <description>General dictionary.</description>
|
|
/// </item>
|
|
/// <item>
|
|
/// <description><c>IFED_TYPE_NAMEPLACE</c></description>
|
|
/// <description>Name/place dictionary.</description>
|
|
/// </item>
|
|
/// <item>
|
|
/// <description><c>IFED_TYPE_SPEECH</c></description>
|
|
/// <description>Speech dictionary.</description>
|
|
/// </item>
|
|
/// <item>
|
|
/// <description><c>IFED_TYPE_REVERSE</c></description>
|
|
/// <description>Reverse dictionary.</description>
|
|
/// </item>
|
|
/// <item>
|
|
/// <description><c>IFED_TYPE_ENGLISH</c></description>
|
|
/// <description>English dictionary.</description>
|
|
/// </item>
|
|
/// <item>
|
|
/// <description><c>IFED_TYPE_ALL</c></description>
|
|
/// <description>All of the above types.</description>
|
|
/// </item>
|
|
/// </list>
|
|
/// </param>
|
|
// https://docs.microsoft.com/en-us/windows/win32/api/msime/nf-msime-ifedictionary-getheader HRESULT GetHeader( [in, out,
|
|
// optional] CHAR *pchDictPath, [out] IMESHF *pshf, [out] IMEFMT *pjfmt, [out] ULONG *pulType );
|
|
void GetHeader([MarshalAs(UnmanagedType.LPStr)] StringBuilder pchDictPath, out IMESHF pshf, out IMEFMT pjfmt, out IFED_TYPE pulType);
|
|
|
|
/// <summary>This method is obsolete starting with Windows 8, and is no longer supported.</summary>
|
|
/// <param name="hwnd">The parent window handle.</param>
|
|
// https://docs.microsoft.com/en-us/windows/win32/api/msime/nf-msime-ifedictionary-displayproperty HRESULT DisplayProperty( [in]
|
|
// HWND hwnd );
|
|
void DisplayProperty(HWND hwnd);
|
|
|
|
/// <summary>Obtains the public POS (Part of Speech) table.</summary>
|
|
/// <param name="prgPosTbl">Pointer to the array of POSTBL structures.</param>
|
|
/// <param name="pcPosTbl">Pointer to the number of POSTBL structures in the returned array. Can be <c>NULL</c>.</param>
|
|
// https://docs.microsoft.com/en-us/windows/win32/api/msime/nf-msime-ifedictionary-getpostable HRESULT GetPosTable( [out] POSTBL
|
|
// **prgPosTbl, [out] int *pcPosTbl );
|
|
void GetPosTable([MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 1)] out POSTBL[] prgPosTbl, out int pcPosTbl);
|
|
|
|
/// <summary>
|
|
/// <para>The selection of a word entry can be performed by a combination of</para>
|
|
/// <list type="bullet">
|
|
/// <item>A string with Japanese phonetic characters, with or without a wildcard at the end of the string.</item>
|
|
/// <item>A word, with or without a wildcard at its end.</item>
|
|
/// <item>A Part of Speech</item>
|
|
/// </list>
|
|
/// <para>
|
|
/// In addition, retrievals by a string with Japanese phonetic characters can be performed by specifying a range in the Hiragana
|
|
/// 50-on ordering.
|
|
/// </para>
|
|
/// </summary>
|
|
/// <param name="pwchFirst">
|
|
/// <para>A text string against which IFEDictionary entries are matched; the value must be one of the following:</para>
|
|
/// <list type="table">
|
|
/// <listheader>
|
|
/// <term>Value</term>
|
|
/// <term>Meaning</term>
|
|
/// </listheader>
|
|
/// <item>
|
|
/// <description><c>NULL</c></description>
|
|
/// <description>Low-value.</description>
|
|
/// </item>
|
|
/// <item>
|
|
/// <description></description>
|
|
/// <description>Hiragana string (full text to be retrieved).</description>
|
|
/// </item>
|
|
/// <item>
|
|
/// <description></description>
|
|
/// <description>
|
|
/// Hiragana string ending in "*" (specifying only leading characters of text). This can be an initial text string when a range
|
|
/// of words is to be retrieved, in which case a wildcard must not be used.
|
|
/// </description>
|
|
/// </item>
|
|
/// </list>
|
|
/// </param>
|
|
/// <param name="pwchLast">
|
|
/// <para>
|
|
/// A text string that is used to end a text string. This must contain the same value as <c>pwchReading</c> in the IMEWRD
|
|
/// structure when a retrieval is performed by a single value; that is, not by a range value. The value must be one of the following:
|
|
/// </para>
|
|
/// <list type="table">
|
|
/// <listheader>
|
|
/// <term>Value</term>
|
|
/// <term>Meaning</term>
|
|
/// </listheader>
|
|
/// <item>
|
|
/// <description><c>NULL</c></description>
|
|
/// <description>High-value.</description>
|
|
/// </item>
|
|
/// <item>
|
|
/// <description></description>
|
|
/// <description>Hiragana string (full text to be retrieved).</description>
|
|
/// </item>
|
|
/// <item>
|
|
/// <description></description>
|
|
/// <description>Hiragana string ending in "*" (specifying only leading characters of text).</description>
|
|
/// </item>
|
|
/// </list>
|
|
/// </param>
|
|
/// <param name="pwchDisplay">
|
|
/// <para>A display string against which IFEDictionary entries are matched; the value must be one of the following:</para>
|
|
/// <list type="table">
|
|
/// <listheader>
|
|
/// <term>Value</term>
|
|
/// <term>Meaning</term>
|
|
/// </listheader>
|
|
/// <item>
|
|
/// <description><c>NULL</c></description>
|
|
/// <description>Means "*".</description>
|
|
/// </item>
|
|
/// <item>
|
|
/// <description></description>
|
|
/// <description>Any Japanese string.</description>
|
|
/// </item>
|
|
/// <item>
|
|
/// <description></description>
|
|
/// <description>Japanese string ending in "*".</description>
|
|
/// </item>
|
|
/// </list>
|
|
/// </param>
|
|
/// <param name="ulPos">
|
|
/// <para>Filter(s) on the Microsoft IME public Parts of Speech. This is a combination of one or more of the following flags:</para>
|
|
/// <list type="bullet">
|
|
/// <item>IFED_POS_NONE</item>
|
|
/// <item>IFED_POS_NOUN</item>
|
|
/// <item>IFED_POS_VERB</item>
|
|
/// <item>IFED_POS_ADJECTIVE</item>
|
|
/// <item>IFED_POS_ADJECTIVE_VERB</item>
|
|
/// <item>IFED_POS_ADVERB</item>
|
|
/// <item>IFED_POS_ADNOUN</item>
|
|
/// <item>IFED_POS_CONJUNCTION</item>
|
|
/// <item>IFED_POS_INTERJECTION</item>
|
|
/// <item>IFED_POS_INDEPENDENT</item>
|
|
/// <item>IFED_POS_INFLECTIONALSUFFIX</item>
|
|
/// <item>IFED_POS_PREFIX</item>
|
|
/// <item>IFED_POS_SUFFIX</item>
|
|
/// <item>IFED_POS_AFFIX</item>
|
|
/// <item>IFED_POS_TANKANJI</item>
|
|
/// <item>IFED_POS_IDIOMS</item>
|
|
/// <item>IFED_POS_SYMBOLS</item>
|
|
/// <item>IFED_POS_PARTICLE</item>
|
|
/// <item>IFED_POS_AUXILIARY_VERB</item>
|
|
/// <item>IFED_POS_SUB_VERB</item>
|
|
/// <item>IFED_POS_DEPENDENT</item>
|
|
/// <item>IFED_POS_ALL</item>
|
|
/// </list>
|
|
/// </param>
|
|
/// <param name="ulSelect">
|
|
/// <para>Specifies the query output of a word. This is a combination of one or more of the following flags:</para>
|
|
/// <list type="bullet">
|
|
/// <item>IFED_SELECT_NONE</item>
|
|
/// <item>IFED_SELECT_READING</item>
|
|
/// <item>IFED_SELECT_DISPLAY</item>
|
|
/// <item>IFED_SELECT_POS</item>
|
|
/// <item>IFED_SELECT_COMMENT</item>
|
|
/// <item>IFED_SELECT_ALL</item>
|
|
/// </list>
|
|
/// </param>
|
|
/// <param name="ulWordSrc">
|
|
/// <para>
|
|
/// Specifies the word source. When the IFEDictionary is a user dictionary, this is a combination of one or more of the following flags:
|
|
/// </para>
|
|
/// <list type="bullet">
|
|
/// <item>IFED_REG_NONE</item>
|
|
/// <item>IFED_REG_USER</item>
|
|
/// <item>IFED_REG_AUTO</item>
|
|
/// <item>IFED_REG_GRAMMAR</item>
|
|
/// <item>IFED_REG_ALL</item>
|
|
/// </list>
|
|
/// </param>
|
|
/// <param name="pchBuffer">Buffer provided by the caller to receive the data.</param>
|
|
/// <param name="cbBuffer">The size of <c>pchBuffer</c>.</param>
|
|
/// <param name="pcWrd">
|
|
/// The number of IMEWRD structures returned in <c>pchBuffer</c>. If more entries are found than <c>pchBuffer</c> can store,
|
|
/// <c>IFED_S_MORE_ENTRIES</c> will be returned.
|
|
/// </param>
|
|
/// <returns>
|
|
/// <para>This method can return one of these values.</para>
|
|
/// <list type="table">
|
|
/// <listheader>
|
|
/// <term>Return code</term>
|
|
/// <term>Description</term>
|
|
/// </listheader>
|
|
/// <item>
|
|
/// <description><c>S_OK</c></description>
|
|
/// <description></description>
|
|
/// </item>
|
|
/// <item>
|
|
/// <description><c>IFED_S_MORE_ENTRIES</c></description>
|
|
/// <description>The client must call NextWords to get additional IMEWRD structures.</description>
|
|
/// </item>
|
|
/// <item>
|
|
/// <description><c>IFED_E_NO_ENTRY</c></description>
|
|
/// <description></description>
|
|
/// </item>
|
|
/// <item>
|
|
/// <description><c>E_OUTOFMEMORY</c></description>
|
|
/// <description></description>
|
|
/// </item>
|
|
/// <item>
|
|
/// <description><c>E_FAIL</c></description>
|
|
/// <description></description>
|
|
/// </item>
|
|
/// </list>
|
|
/// </returns>
|
|
// https://docs.microsoft.com/en-us/windows/win32/api/msime/nf-msime-ifedictionary-getwords HRESULT GetWords( [in] const WCHAR
|
|
// *pwchFirst, [in] const WCHAR *pwchLast, [in] const WCHAR *pwchDisplay, [in] ULONG ulPos, [in] ULONG ulSelect, [in] ULONG
|
|
// ulWordSrc, [in, out] UCHAR *pchBuffer, [in] ULONG cbBuffer, [out] ULONG *pcWrd );
|
|
[PreserveSig]
|
|
HRESULT GetWords([MarshalAs(UnmanagedType.LPWStr)] string pwchFirst, [MarshalAs(UnmanagedType.LPWStr)] string pwchLast,
|
|
[MarshalAs(UnmanagedType.LPWStr)] string pwchDisplay, IFED_POS ulPos, IFED_SELECT ulSelect, IFED_REG ulWordSrc,
|
|
IntPtr pchBuffer, uint cbBuffer, out uint pcWrd);
|
|
|
|
/// <summary>This method is used only after GetWords to get additional words.</summary>
|
|
/// <param name="pchBuffer">Buffer provided by the caller to receive the data.</param>
|
|
/// <param name="cbBuffer">The size of <c>pchBuffer</c>.</param>
|
|
/// <param name="pcWrd">
|
|
/// The number of IMEWRD structures returned in <c>pchBuffer</c>. If more entries are found than <c>pchBuffer</c> can store,
|
|
/// <c>IFED_S_MORE_ENTRIES</c> will be returned.
|
|
/// </param>
|
|
/// <returns>
|
|
/// <para>This method can return one of these values.</para>
|
|
/// <list type="table">
|
|
/// <listheader>
|
|
/// <term>Return code</term>
|
|
/// <term>Description</term>
|
|
/// </listheader>
|
|
/// <item>
|
|
/// <term><c>S_OK</c></term>
|
|
/// <term/>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>IFED_S_MORE_ENTRIES</c></term>
|
|
/// <term>The client must call NextWords to get additional IMEWRD structures.</term>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>E_FAIL</c></term>
|
|
/// <term/>
|
|
/// </item>
|
|
/// </list>
|
|
/// </returns>
|
|
// https://docs.microsoft.com/en-us/windows/win32/api/msime/nf-msime-ifedictionary-nextwords HRESULT NextWords( [in, out] UCHAR
|
|
// *pchBuffer, [in] ULONG cbBuffer, [out] ULONG *pcWrd );
|
|
[PreserveSig]
|
|
HRESULT NextWords(IntPtr pchBuffer, uint cbBuffer, out uint pcWrd);
|
|
|
|
/// <summary>Creates a new dictionary file.</summary>
|
|
/// <param name="pchDictPath">
|
|
/// A <c>NULL</c>-terminated string containing the path and name for the new dictionary file to be created.
|
|
/// </param>
|
|
/// <param name="pshf">The IMESHF header for the new dictionary.</param>
|
|
// https://docs.microsoft.com/en-us/windows/win32/api/msime/nf-msime-ifedictionary-create HRESULT Create( [in] const CHAR
|
|
// *pchDictPath, [in] IMESHF *pshf );
|
|
void Create([MarshalAs(UnmanagedType.LPStr)] string pchDictPath, in IMESHF pshf);
|
|
|
|
/// <summary>This method sets or modifies the dictionary header of this IFEDictionary object.</summary>
|
|
/// <param name="pshf">The IMESHF header to set.</param>
|
|
// https://docs.microsoft.com/en-us/windows/win32/api/msime/nf-msime-ifedictionary-setheader HRESULT SetHeader( [in] IMESHF *pshf );
|
|
void SetHeader(in IMESHF pshf);
|
|
|
|
/// <summary>Determines if the specified word exists in IFEDictionary.</summary>
|
|
/// <param name="pwrd">An IMEWRD structure specifying the word to check.</param>
|
|
/// <returns>
|
|
/// <para>This method can return one of these values.</para>
|
|
/// <list type="table">
|
|
/// <listheader>
|
|
/// <term>Return code</term>
|
|
/// <term>Description</term>
|
|
/// </listheader>
|
|
/// <item>
|
|
/// <term><c>S_OK</c></term>
|
|
/// <term>The word exists.</term>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>S_FALSE</c></term>
|
|
/// <term>The word does not exist.</term>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>E_FAIL</c></term>
|
|
/// <term>An unexpected error.</term>
|
|
/// </item>
|
|
/// </list>
|
|
/// </returns>
|
|
// https://docs.microsoft.com/en-us/windows/win32/api/msime/nf-msime-ifedictionary-existword HRESULT ExistWord( [in] IMEWRD *pwrd );
|
|
[PreserveSig]
|
|
HRESULT ExistWord(in IMEWRD pwrd);
|
|
|
|
/// <summary>See if dependency pair exist in dictionary</summary>
|
|
/// <param name="pdp">The dependency pair.</param>
|
|
/// <returns>
|
|
/// <para>This method can return one of these values.</para>
|
|
/// <list type="table">
|
|
/// <listheader>
|
|
/// <term>Return code</term>
|
|
/// <term>Description</term>
|
|
/// </listheader>
|
|
/// <item>
|
|
/// <term><c>S_OK</c></term>
|
|
/// <term>The pair exists.</term>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>S_FALSE</c></term>
|
|
/// <term>The pair does not exist.</term>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>E_FAIL</c></term>
|
|
/// <term>An unexpected error.</term>
|
|
/// </item>
|
|
/// </list>
|
|
/// </returns>
|
|
[PreserveSig]
|
|
HRESULT ExistDependency(in IMEDP pdp);
|
|
|
|
/// <summary>Registers a new word or deletes an existing word in the IFEDictionary.</summary>
|
|
/// <param name="reg">
|
|
/// <para>Type of operation to perform. This can be one of the following values:</para>
|
|
/// <list type="table">
|
|
/// <listheader>
|
|
/// <term>Value</term>
|
|
/// <term>Meaning</term>
|
|
/// </listheader>
|
|
/// <item>
|
|
/// <term><c>IFED_REG_HEAD</c></term>
|
|
/// <term>Register the word at the head of the dictionary.</term>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>IFED_REG_TAIL</c></term>
|
|
/// <term>Register the word at the tail of the dictionary.</term>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>IFED_REG_DEL</c></term>
|
|
/// <term>Delete the word from the dictionary.</term>
|
|
/// </item>
|
|
/// </list>
|
|
/// </param>
|
|
/// <param name="pwrd">An IMEWRD structure specifying the word to register or delete.</param>
|
|
/// <returns>
|
|
/// <para>This method can return one of these values.</para>
|
|
/// <list type="table">
|
|
/// <listheader>
|
|
/// <term>Return code</term>
|
|
/// <term>Description</term>
|
|
/// </listheader>
|
|
/// <item>
|
|
/// <term><c>S_OK</c></term>
|
|
/// <term>The method was successful.</term>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>IFED_E_NOT_USER_DIC</c></term>
|
|
/// <term>This IFEDictionary object is not a user dictionary.</term>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>IFED_S_WORD_EXISTS</c></term>
|
|
/// <term>The word is already registered.</term>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>IFED_E_USER_COMMENT</c></term>
|
|
/// <term>Failed to insert the user comment.</term>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>S_FALSE</c></term>
|
|
/// <term>Failed to register or delete the word.</term>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>E_FAIL</c></term>
|
|
/// <term>An unexpected error.</term>
|
|
/// </item>
|
|
/// </list>
|
|
/// </returns>
|
|
// https://docs.microsoft.com/en-us/windows/win32/api/msime/nf-msime-ifedictionary-registerword HRESULT RegisterWord( [in] IMEREG
|
|
// reg, [in] IMEWRD *pwrd );
|
|
[PreserveSig]
|
|
HRESULT RegisterWord(IMEREG reg, in IMEWRD pwrd);
|
|
|
|
/// <summary>Registers a new dependency or deletes an existing dependency in the IFEDictionary.</summary>
|
|
/// <param name="reg">
|
|
/// <para>Type of operation to perform. This can be one of the following values:</para>
|
|
/// <list type="table">
|
|
/// <listheader>
|
|
/// <term>Value</term>
|
|
/// <term>Meaning</term>
|
|
/// </listheader>
|
|
/// <item>
|
|
/// <term><c>IFED_REG_HEAD</c></term>
|
|
/// <term>Register the dependency at the head of the dictionary.</term>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>IFED_REG_TAIL</c></term>
|
|
/// <term>Register the dependency at the tail of the dictionary.</term>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>IFED_REG_DEL</c></term>
|
|
/// <term>Delete the dependency from the dictionary.</term>
|
|
/// </item>
|
|
/// </list>
|
|
/// </param>
|
|
/// <param name="pdp">An IMEDP structure specifying the dependency to register or delete.</param>
|
|
/// <returns>
|
|
/// <para>This method can return one of these values.</para>
|
|
/// <list type="table">
|
|
/// <listheader>
|
|
/// <term>Return code</term>
|
|
/// <term>Description</term>
|
|
/// </listheader>
|
|
/// <item>
|
|
/// <term><c>S_OK</c></term>
|
|
/// <term>The method was successful.</term>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>IFED_E_NOT_USER_DIC</c></term>
|
|
/// <term>This IFEDictionary object is not a user dictionary.</term>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>IFED_S_WORD_EXISTS</c></term>
|
|
/// <term>The dependency is already registered.</term>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>IFED_E_USER_COMMENT</c></term>
|
|
/// <term>Failed to insert the user comment.</term>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>S_FALSE</c></term>
|
|
/// <term>Failed to register or delete the dependency.</term>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>E_FAIL</c></term>
|
|
/// <term>An unexpected error.</term>
|
|
/// </item>
|
|
/// </list>
|
|
/// </returns>
|
|
// https://docs.microsoft.com/en-us/windows/win32/api/msime/nf-msime-ifedictionary-registerword HRESULT RegisterWord( [in] IMEREG
|
|
// reg, [in] IMEWRD *pwrd );
|
|
[PreserveSig]
|
|
HRESULT RegisterDependency(IMEREG reg, in IMEDP pdp);
|
|
|
|
/// <summary>Undocumented</summary>
|
|
/// <param name="pwchKakariReading">The kakarigo reading.</param>
|
|
/// <param name="pwchKakariDisplay">The kakarigo display.</param>
|
|
/// <param name="ulKakariPos">The part of speech for kakarigo.</param>
|
|
/// <param name="pwchUkeReading">The ukego reading.</param>
|
|
/// <param name="pwchUkeDisplay">The ukego display.</param>
|
|
/// <param name="ulUkePos">The part of speech for uke.</param>
|
|
/// <param name="jrel">The relation type.</param>
|
|
/// <param name="ulWordSrc">
|
|
/// <para>
|
|
/// Specifies the word source. When the IFEDictionary is a user dictionary, this is a combination of one or more of the following flags:
|
|
/// </para>
|
|
/// <list type="bullet">
|
|
/// <item>IFED_REG_NONE</item>
|
|
/// <item>IFED_REG_USER</item>
|
|
/// <item>IFED_REG_AUTO</item>
|
|
/// <item>IFED_REG_GRAMMAR</item>
|
|
/// <item>IFED_REG_ALL</item>
|
|
/// </list>
|
|
/// </param>
|
|
/// <param name="pchBuffer">Buffer provided by the caller to receive the data.</param>
|
|
/// <param name="cbBuffer">The size of <c>pchBuffer</c>.</param>
|
|
/// <param name="pcdp">
|
|
/// The number of IMEDP structures returned in <c>pchBuffer</c>. If more entries are found than <c>pchBuffer</c> can store,
|
|
/// <c>IFED_S_MORE_ENTRIES</c> will be returned.
|
|
/// </param>
|
|
/// <returns>
|
|
/// <para>This method can return one of these values.</para>
|
|
/// <list type="table">
|
|
/// <listheader>
|
|
/// <term>Return code</term>
|
|
/// <term>Description</term>
|
|
/// </listheader>
|
|
/// <item>
|
|
/// <description><c>S_OK</c></description>
|
|
/// <description></description>
|
|
/// </item>
|
|
/// <item>
|
|
/// <description><c>IFED_S_MORE_ENTRIES</c></description>
|
|
/// <description>The client must call NextWords to get additional IMEDP structures.</description>
|
|
/// </item>
|
|
/// <item>
|
|
/// <description><c>IFED_E_NO_ENTRY</c></description>
|
|
/// <description></description>
|
|
/// </item>
|
|
/// <item>
|
|
/// <description><c>E_OUTOFMEMORY</c></description>
|
|
/// <description></description>
|
|
/// </item>
|
|
/// <item>
|
|
/// <description><c>E_FAIL</c></description>
|
|
/// <description></description>
|
|
/// </item>
|
|
/// </list>
|
|
/// </returns>
|
|
[PreserveSig]
|
|
HRESULT GetDependencies([MarshalAs(UnmanagedType.LPWStr)] string pwchKakariReading, [MarshalAs(UnmanagedType.LPWStr)] string pwchKakariDisplay,
|
|
uint ulKakariPos, [MarshalAs(UnmanagedType.LPWStr)] string pwchUkeReading, [MarshalAs(UnmanagedType.LPWStr)] string pwchUkeDisplay,
|
|
uint ulUkePos, IMEREL jrel, IFED_REG ulWordSrc, IntPtr pchBuffer, uint cbBuffer, out uint pcdp);
|
|
|
|
/// <summary>This method is used only after GetWords to get additional dependencies.</summary>
|
|
/// <param name="pchBuffer">Buffer provided by the caller to receive the data.</param>
|
|
/// <param name="cbBuffer">The size of <c>pchBuffer</c>.</param>
|
|
/// <param name="pcdp">
|
|
/// The number of IMEDP structures returned in <c>pchBuffer</c>. If more entries are found than <c>pchBuffer</c> can store,
|
|
/// <c>IFED_S_MORE_ENTRIES</c> will be returned.
|
|
/// </param>
|
|
/// <returns>
|
|
/// <para>This method can return one of these values.</para>
|
|
/// <list type="table">
|
|
/// <listheader>
|
|
/// <term>Return code</term>
|
|
/// <term>Description</term>
|
|
/// </listheader>
|
|
/// <item>
|
|
/// <term><c>S_OK</c></term>
|
|
/// <term/>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>IFED_S_MORE_ENTRIES</c></term>
|
|
/// <term>The client must call NextWords to get additional IMEDP structures.</term>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>E_FAIL</c></term>
|
|
/// <term/>
|
|
/// </item>
|
|
/// </list>
|
|
/// </returns>
|
|
[PreserveSig]
|
|
HRESULT NextDependencies(IntPtr pchBuffer, uint cbBuffer, out uint pcdp);
|
|
|
|
/// <summary>Undocumented</summary>
|
|
/// <param name="pchDic">old ime user dictionary path</param>
|
|
/// <param name="pfnLog">pointer to log function</param>
|
|
/// <param name="reg">word registration info</param>
|
|
/// <returns></returns>
|
|
[PreserveSig]
|
|
HRESULT ConvertFromOldMSIME([MarshalAs(UnmanagedType.LPStr)] string pchDic, PFNLOG pfnLog, IMEREG reg);
|
|
|
|
/// <summary>Undocumented</summary>
|
|
/// <returns></returns>
|
|
[PreserveSig]
|
|
HRESULT ConvertFromUserToSys();
|
|
}
|
|
|
|
/// <summary>The IFELanguage interface provides language processing services using the Microsoft IME.</summary>
|
|
/// <remarks>Create an instance of this interface with the CreateIFELanguageInstance function.</remarks>
|
|
// https://docs.microsoft.com/en-us/windows/win32/api/msime/nn-msime-ifelanguage
|
|
[PInvokeData("msime.h", MSDNShortId = "NN:msime.IFELanguage")]
|
|
[ComImport, Guid("019F7152-E6DB-11d0-83C3-00C04FDDB82E"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
|
|
public interface IFELanguage
|
|
{
|
|
/// <summary>This method must be called before any use of the IFELanguage object.</summary>
|
|
// https://docs.microsoft.com/en-us/windows/win32/api/msime/nf-msime-ifelanguage-open HRESULT Open();
|
|
void Open();
|
|
|
|
/// <summary>This method must be called after your last use of the IFELanguage object.</summary>
|
|
// https://docs.microsoft.com/en-us/windows/win32/api/msime/nf-msime-ifelanguage-close HRESULT Close();
|
|
void Close();
|
|
|
|
/// <summary>Gets morphological analysis results.</summary>
|
|
/// <param name="dwRequest">
|
|
/// <para>The conversion request. It can be one of the following values:</para>
|
|
/// <para>FELANG_REQ_CONV</para>
|
|
/// <para>FELANG_REQ_RECONV</para>
|
|
/// <para>FELANG_REQ_REV</para>
|
|
/// </param>
|
|
/// <param name="dwCMode">
|
|
/// <para>
|
|
/// Specifies the conversion output characters and conversion options. This value is a combination of one or more of the
|
|
/// following flags:
|
|
/// </para>
|
|
/// <list type="table">
|
|
/// <listheader>
|
|
/// <term>Value</term>
|
|
/// <term>Meaning</term>
|
|
/// </listheader>
|
|
/// <item>
|
|
/// <term><c>FELANG_CMODE_MONORUBY</c></term>
|
|
/// <term>Mono-ruby.</term>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>FELANG_CMODE_NOPRUNING</c></term>
|
|
/// <term>No pruning.</term>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>FELANG_CMODE_KATAKANAOUT</c></term>
|
|
/// <term>Katakana output.</term>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>FELANG_CMODE_HIRAGANAOUT</c></term>
|
|
/// <term>Default output.</term>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>FELANG_CMODE_HALFWIDTHOUT</c></term>
|
|
/// <term>Half-width output.</term>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>FELANG_CMODE_FULLWIDTHOUT</c></term>
|
|
/// <term>Full-width output.</term>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>FELANG_CMODE_BOPOMOFO</c></term>
|
|
/// <term/>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>FELANG_CMODE_HANGUL</c></term>
|
|
/// <term/>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>FELANG_CMODE_PINYIN</c></term>
|
|
/// <term/>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>FELANG_CMODE_PRECONV</c></term>
|
|
/// <term>Do conversion as follows:</term>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>FELANG_CMODE_RADICAL</c></term>
|
|
/// <term/>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>FELANG_CMODE_UNKNOWNREADING</c></term>
|
|
/// <term/>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>FELANG_CMODE_MERGECAND</c></term>
|
|
/// <term>Merge display with the same candidate.</term>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>FELANG_CMODE_ROMAN</c></term>
|
|
/// <term/>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>FELANG_CMODE_BESTFIRST</c></term>
|
|
/// <term>Make only the first best.</term>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>FELANG_CMODE_USENOREVWORDS</c></term>
|
|
/// <term>Use invalid revword on REV/RECONV.</term>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>FELANG_CMODE_NONE</c></term>
|
|
/// <term>IME_SMODE_NONE</term>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>FELANG_CMODE_PLAURALCLAUSE</c></term>
|
|
/// <term>IME_SMODE_PLAURALCLAUSE</term>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>FELANG_CMODE_SINGLECONVERT</c></term>
|
|
/// <term>IME_SMODE_SINGLECONVERT</term>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>FELANG_CMODE_AUTOMATIC</c></term>
|
|
/// <term>IME_SMODE_AUTOMATIC</term>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>FELANG_CMODE_PHRASEPREDICT</c></term>
|
|
/// <term>IME_SMODE_PHRASEPREDICT</term>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>FELANG_CMODE_CONVERSATION</c></term>
|
|
/// <term>IME_SMODE_CONVERSATION</term>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>FELANG_CMODE_NAME</c></term>
|
|
/// <term>Name mode (MSKKIME).</term>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>FELANG_CMODE_NOINVISIBLECHAR</c></term>
|
|
/// <term>Remove invisible chars (for example, the tone mark).</term>
|
|
/// </item>
|
|
/// </list>
|
|
/// </param>
|
|
/// <param name="cwchInput">The number of characters in <c>pwchInput</c>.</param>
|
|
/// <param name="pwchInput">
|
|
/// <para>Input characters to be converted by the morphology engine. This must be a UNICODE string.</para>
|
|
/// <para>
|
|
/// Set this parameter to <c>NULL</c> to get the next entry for the previously input string, with the next rank. The order in
|
|
/// which next entries are returned is defined by the implementation.
|
|
/// </para>
|
|
/// </param>
|
|
/// <param name="pfCInfo">
|
|
/// <para>
|
|
/// The information for each column, where each <c>pfCInfo[x]</c> corresponds to <c>pwchInput[x]</c>. Each <c>DWORD</c> can be a
|
|
/// combination of the flags below:
|
|
/// </para>
|
|
/// <para>FELANG_CLMN_WBREAK</para>
|
|
/// <para>FELANG_CLMN_NOWBREAK</para>
|
|
/// <para>FELANG_CLMN_PBREAK</para>
|
|
/// <para>FELANG_CLMN_NOPBREAK</para>
|
|
/// <para>FELANG_CLMN_FIXR</para>
|
|
/// <para>FELANG_CLMN_FIXD</para>
|
|
/// </param>
|
|
/// <param name="ppResult">
|
|
/// <para>The address of a MORRSLT structure that receives the morphology result data.</para>
|
|
/// <para>
|
|
/// <c>GetJMorphResult</c> allocates memory using the OLE task allocator for the returned data, and sets the <c>pResult</c> to
|
|
/// point to the memory. The application must free the memory pointed to by <c>pResult</c>, by using the CoTaskMemFree.
|
|
/// </para>
|
|
/// </param>
|
|
/// <returns>
|
|
/// <para>This method can return one of these values.</para>
|
|
/// <list type="table">
|
|
/// <listheader>
|
|
/// <term>Return code</term>
|
|
/// <term>Description</term>
|
|
/// </listheader>
|
|
/// <item>
|
|
/// <term><c>S_OK</c></term>
|
|
/// <term>
|
|
/// More candidates exist. If you call this function again with <c>pwchInput</c> equal to <c>NULL</c>, it will get the next best
|
|
/// candidate for the previous <c>pwchInput</c>.
|
|
/// </term>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>S_FALSE</c></term>
|
|
/// <term>No result.</term>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>E_NOCAND</c></term>
|
|
/// <term>No more candidates.</term>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>E_LARGEINPUT</c></term>
|
|
/// <term>input too large.</term>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>ERROR_SEM_TIMEOUT</c></term>
|
|
/// <term>Mutex timeout is occurred.</term>
|
|
/// </item>
|
|
/// </list>
|
|
/// </returns>
|
|
// https://docs.microsoft.com/en-us/windows/win32/api/msime/nf-msime-ifelanguage-getjmorphresult HRESULT GetJMorphResult( [in]
|
|
// DWORD dwRequest, [in] DWORD dwCMode, [in] INT cwchInput, [in] const WCHAR *pwchInput, [in] DWORD *pfCInfo, [out] MORRSLT
|
|
// **ppResult );
|
|
[PreserveSig]
|
|
HRESULT GetJMorphResult(FELANG_REQ dwRequest, FELANG_CMODE dwCMode, int cwchInput, [MarshalAs(UnmanagedType.LPWStr)] string pwchInput,
|
|
[MarshalAs(UnmanagedType.LPArray)] FELANG_CLMN[] pfCInfo, out SafeCoTaskMemStruct<MORRSLT> ppResult);
|
|
|
|
/// <summary>Gets the conversion mode capability of the IFELanguage object.</summary>
|
|
/// <param name="pdwCaps">
|
|
/// <para>The capabilities, represented as a combination of one or more of the following flags:</para>
|
|
/// <list type="table">
|
|
/// <listheader>
|
|
/// <term>Value</term>
|
|
/// <term>Meaning</term>
|
|
/// </listheader>
|
|
/// <item>
|
|
/// <term><c>FELANG_CMODE_MONORUBY</c></term>
|
|
/// <term>Mono-ruby.</term>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>FELANG_CMODE_NOPRUNING</c></term>
|
|
/// <term>No pruning.</term>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>FELANG_CMODE_KATAKANAOUT</c></term>
|
|
/// <term>Katakana output.</term>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>FELANG_CMODE_HIRAGANAOUT</c></term>
|
|
/// <term>Default output.</term>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>FELANG_CMODE_HALFWIDTHOUT</c></term>
|
|
/// <term>Half-width output.</term>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>FELANG_CMODE_FULLWIDTHOUT</c></term>
|
|
/// <term>Full-width output.</term>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>FELANG_CMODE_BOPOMOFO</c></term>
|
|
/// <term/>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>FELANG_CMODE_HANGUL</c></term>
|
|
/// <term/>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>FELANG_CMODE_PINYIN</c></term>
|
|
/// <term/>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>FELANG_CMODE_PRECONV</c></term>
|
|
/// <term>Do conversion as follows:</term>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>FELANG_CMODE_RADICAL</c></term>
|
|
/// <term/>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>FELANG_CMODE_UNKNOWNREADING</c></term>
|
|
/// <term/>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>FELANG_CMODE_MERGECAND</c></term>
|
|
/// <term>Merge display with the same candidate.</term>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>FELANG_CMODE_ROMAN</c></term>
|
|
/// <term/>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>FELANG_CMODE_BESTFIRST</c></term>
|
|
/// <term>Make only the first best.</term>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>FELANG_CMODE_USENOREVWORDS</c></term>
|
|
/// <term>Use invalid revword on REV/RECONV.</term>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>FELANG_CMODE_NONE</c></term>
|
|
/// <term>IME_SMODE_NONE</term>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>FELANG_CMODE_PLAURALCLAUSE</c></term>
|
|
/// <term>IME_SMODE_PLAURALCLAUSE</term>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>FELANG_CMODE_SINGLECONVERT</c></term>
|
|
/// <term>IME_SMODE_SINGLECONVERT</term>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>FELANG_CMODE_AUTOMATIC</c></term>
|
|
/// <term>IME_SMODE_AUTOMATIC</term>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>FELANG_CMODE_PHRASEPREDICT</c></term>
|
|
/// <term>IME_SMODE_PHRASEPREDICT</term>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>FELANG_CMODE_CONVERSATION</c></term>
|
|
/// <term>IME_SMODE_CONVERSATION</term>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>FELANG_CMODE_NAME</c></term>
|
|
/// <term>Name mode (MSKKIME).</term>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term><c>FELANG_CMODE_NOINVISIBLECHAR</c></term>
|
|
/// <term>Remove invisible chars (for example, the tone mark).</term>
|
|
/// </item>
|
|
/// </list>
|
|
/// </param>
|
|
// https://docs.microsoft.com/en-us/windows/win32/api/msime/nf-msime-ifelanguage-getconversionmodecaps HRESULT
|
|
// GetConversionModeCaps( [out] DWORD *pdwCaps );
|
|
void GetConversionModeCaps(out FELANG_CMODE pdwCaps);
|
|
|
|
void GetPhonetic([MarshalAs(UnmanagedType.BStr)] string @string, int start, int length, [MarshalAs(UnmanagedType.BStr)] out string phonetic);
|
|
|
|
/// <summary>Converts the input string (which usually contains the Hiragana character) to converted strings.</summary>
|
|
/// <param name="string">A string of phonetic characters to convert.</param>
|
|
/// <param name="start">
|
|
/// The starting character from which IFELanguage begins conversion. The first character of <c>string</c> is represented by 1
|
|
/// (not 0).
|
|
/// </param>
|
|
/// <param name="length">
|
|
/// The number of characters to convert. If this value is -1, all of the remaining characters from <c>start</c> are converted.
|
|
/// </param>
|
|
/// <param name="result">The converted string. This string is allocated by SysAllocStringLen and must be freed by the client.</param>
|
|
// https://docs.microsoft.com/en-us/windows/win32/api/msime/nf-msime-ifelanguage-getconversion HRESULT GetConversion( [in] BSTR
|
|
// string, [in] LONG start, [in] LONG length, [out, retval] BSTR *result );
|
|
void GetConversion([MarshalAs(UnmanagedType.BStr)] string @string, int start, int length, [MarshalAs(UnmanagedType.BStr)] out string result);
|
|
}
|
|
|
|
/// <summary>Used when invoking the Microsoft IME's Dictionary Tool or Word Register Dialog Window from the app.</summary>
|
|
// https://docs.microsoft.com/en-us/windows/win32/api/msime/ns-msime-imedlg typedef struct _IMEDLG { int cbIMEDLG; HWND hwnd; LPWSTR
|
|
// lpwstrWord; int nTabId; } IMEDLG;
|
|
[PInvokeData("msime.h", MSDNShortId = "NS:msime._IMEDLG")]
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
public struct IMEDLG
|
|
{
|
|
/// <summary>The size of this structure. You must set this value before using the structure.</summary>
|
|
public int cbIMEDLG;
|
|
|
|
/// <summary>The parent window handle of the Register Word Dialog.</summary>
|
|
public HWND hwnd;
|
|
|
|
/// <summary><see langword="null"/>, or the string to be registered. It shows in the Word Register Dialog's "Display" field.</summary>
|
|
[MarshalAs(UnmanagedType.LPWStr)]
|
|
public string lpwstrWord;
|
|
|
|
/// <summary>The initial tab ID, 0 or 1.</summary>
|
|
public int nTabId;
|
|
|
|
/// <summary>Initializes a new instance of the <see cref="IMEDLG"/> struct.</summary>
|
|
/// <param name="hwnd">The parent window handle of the Register Word Dialog.</param>
|
|
/// <param name="display">
|
|
/// <see langword="null"/>, or the string to be registered. It shows in the Word Register Dialog's "Display" field.
|
|
/// </param>
|
|
/// <param name="tabId">The initial tab ID, 0 or 1.</param>
|
|
public IMEDLG(HWND hwnd, string display = null, int tabId = 0)
|
|
{
|
|
cbIMEDLG = Marshal.SizeOf(typeof(IMEDLG));
|
|
this.hwnd = hwnd;
|
|
lpwstrWord = display;
|
|
nTabId = tabId;
|
|
}
|
|
}
|
|
|
|
[PInvokeData("msime.h")]
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
public struct IMEDP
|
|
{
|
|
public IMEWRD wrdModifier; //kakari-go
|
|
public IMEWRD wrdModifiee; //uke-go
|
|
public IMEREL relID;
|
|
}
|
|
|
|
/// <summary>
|
|
/// The header of an opened user dictionary file. Used to get the user dictionary's properties, such as version, title, description,
|
|
/// and copyright.
|
|
/// </summary>
|
|
// https://docs.microsoft.com/en-us/windows/win32/api/msime/ns-msime-imeshf typedef struct _IMESHF { WORD cbShf; WORD verDic; CHAR
|
|
// szTitle[48]; CHAR szDescription[256]; CHAR szCopyright[128]; } IMESHF;
|
|
[PInvokeData("msime.h", MSDNShortId = "NS:msime._IMESHF")]
|
|
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
|
|
public struct IMESHF
|
|
{
|
|
/// <summary>The size of this structure. You must set this value before using the structure.</summary>
|
|
public ushort cbShf;
|
|
|
|
/// <summary>Dictionary version.</summary>
|
|
public ushort verDic;
|
|
|
|
/// <summary>Dictionary title.</summary>
|
|
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 48)]
|
|
public string szTitle;
|
|
|
|
/// <summary>Dictionary description.</summary>
|
|
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
|
|
public string szDescription;
|
|
|
|
/// <summary>Dictionary copyright information.</summary>
|
|
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
|
|
public string szCopyright;
|
|
}
|
|
|
|
/// <summary>Contains data about a word in the Word data of the Microsoft IME dictionary.</summary>
|
|
// https://docs.microsoft.com/en-us/windows/win32/api/msime/ns-msime-imewrd typedef struct _IMEWRD { WCHAR *pwchReading; WCHAR
|
|
// *pwchDisplay; union { ULONG ulPos; struct { WORD nPos1; WORD nPos2; }; }; ULONG rgulAttrs[2]; INT cbComment; IMEUCT uct; VOID
|
|
// *pvComment; } IMEWRD, *PIMEWRD;
|
|
[PInvokeData("msime.h", MSDNShortId = "NS:msime._IMEWRD")]
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
public struct IMEWRD
|
|
{
|
|
/// <summary>The reading string.</summary>
|
|
[MarshalAs(UnmanagedType.LPWStr)]
|
|
public string pwchReading;
|
|
|
|
/// <summary>The display string.</summary>
|
|
[MarshalAs(UnmanagedType.LPWStr)]
|
|
public string pwchDisplay;
|
|
|
|
/// <summary>POS (Part of Speech), defined as JPOS_***.</summary>
|
|
public uint ulPos;
|
|
|
|
/// <summary>Reserved.</summary>
|
|
public ulong rgulAttrs;
|
|
|
|
/// <summary>Size of the comment, in bytes, of pvComment.</summary>
|
|
public int cbComment;
|
|
|
|
/// <summary>Type of comment. This must be one of the values of the IMEUCT enumeration.</summary>
|
|
public IMEUCT uct;
|
|
|
|
/// <summary>Comment string.</summary>
|
|
public IntPtr pvComment;
|
|
}
|
|
|
|
/// <summary>Undocumented.</summary>
|
|
[PInvokeData("msime.h")]
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
public struct MORRSLT
|
|
{
|
|
/// <summary>total size of this block.</summary>
|
|
public uint dwSize;
|
|
|
|
/// <summary>conversion result string.</summary>
|
|
[MarshalAs(UnmanagedType.LPWStr)]
|
|
public string pwchOutput;
|
|
|
|
/// <summary>lengh of result string.</summary>
|
|
public ushort cchOutput;
|
|
|
|
/// <summary>reading string</summary>
|
|
[MarshalAs(UnmanagedType.LPWStr)]
|
|
public string pwchRead;
|
|
|
|
/// <summary>length of reading string.</summary>
|
|
public ushort cchRead;
|
|
|
|
/// <summary>index array of reading to input character.</summary>
|
|
public IntPtr pchInputPos;
|
|
|
|
/// <summary>index array of output character to WDD</summary>
|
|
public IntPtr pchOutputIdxWDD;
|
|
|
|
/// <summary>index array of reading character to WDD</summary>
|
|
public IntPtr pchReadIdxWDD;
|
|
|
|
/// <summary>array of position of monoruby</summary>
|
|
public IntPtr paMonoRubyPos;
|
|
|
|
/// <summary>pointer to array of WDD</summary>
|
|
public IntPtr pWDD;
|
|
|
|
/// <summary>number of WDD</summary>
|
|
public int cWDD;
|
|
|
|
/// <summary>pointer of private data area</summary>
|
|
public IntPtr pPrivate;
|
|
|
|
/// <summary>
|
|
/// area for stored above members.
|
|
/// <para>ushort wchOutput[cchOutput];</para>
|
|
/// <para>ushort wchRead[cchRead];</para>
|
|
/// <para>sbyte chInputIdx[cwchInput];</para>
|
|
/// <para>sbyte chOutputIdx[cchOutput];</para>
|
|
/// <para>sbyte chReadIndx[cchRead];</para>
|
|
/// <para>???? Private</para>
|
|
/// <para>WDD WDDBlk[cWDD];</para>
|
|
/// </summary>
|
|
public IntPtr BLKBuff;
|
|
}
|
|
|
|
/// <summary>An entry in the public POS (Part of Speech) table.</summary>
|
|
// https://docs.microsoft.com/en-us/windows/win32/api/msime/ns-msime-postbl typedef struct _POSTBL { WORD nPos; BYTE *szName; } POSTBL;
|
|
[PInvokeData("msime.h", MSDNShortId = "NS:msime._POSTBL")]
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
public struct POSTBL
|
|
{
|
|
/// <summary>The number of the part of speech.</summary>
|
|
public ushort nPos;
|
|
|
|
/// <summary>The name of the part of speech.</summary>
|
|
public IntPtr szName;
|
|
}
|
|
|
|
/*
|
|
// Word Descriptor
|
|
public struct WDD
|
|
{
|
|
WORD wDispPos; // Offset of Output string
|
|
union {
|
|
WORD wReadPos; // Offset of Reading string
|
|
WORD wCompPos;
|
|
};
|
|
|
|
WORD cchDisp; //number of ptchDisp
|
|
union {
|
|
WORD cchRead; //number of ptchRead
|
|
WORD cchComp;
|
|
};
|
|
|
|
DWORD WDD_nReserve1; //reserved
|
|
|
|
WORD nPos; //part of speech
|
|
|
|
// implementation-defined
|
|
WORD fPhrase : 1;//start of phrase
|
|
WORD fAutoCorrect: 1;//auto-corrected
|
|
WORD fNumericPrefix: 1;//kansu-shi expansion(JPN)
|
|
WORD fUserRegistered: 1;//from user dictionary
|
|
WORD fUnknown: 1;//unknown word (duplicated information with nPos.)
|
|
WORD fRecentUsed: 1; //used recently flag
|
|
WORD :10; //
|
|
|
|
VOID *pReserved; //points directly to WORDITEM
|
|
}
|
|
*/
|
|
}
|
|
} |