// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
// PARTICULAR PURPOSE.
//
// Copyright (c) Microsoft Corporation. All rights reserved
using System;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
namespace Microsoft.Windows.Input.TouchKeyboard.Rcw
{
///
/// Contains internal RCWs for invoking the InputPane (tiptsf touch keyboard)
///
///
/// Adapted from https://github.com/Microsoft/WPF-Samples/blob/master/Input%20and%20Commands/TouchKeyboard/TouchKeyboardNotifier/InputPaneRcw.cs
/// Licensed under an MIT license see https://github.com/Microsoft/WPF-Samples/blob/master/LICENSE
///
internal static class InputPaneRcw
{
internal enum TrustLevel
{
BaseTrust,
PartialTrust,
FullTrust
}
[Guid("75CF2C57-9195-4931-8332-F0B409E916AF"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
[ComImport]
internal interface IInputPaneInterop
{
[MethodImpl(MethodImplOptions.InternalCall)]
void GetIids(out uint iidCount, [MarshalAs(UnmanagedType.LPStruct)] out Guid iids);
[MethodImpl(MethodImplOptions.InternalCall)]
void GetRuntimeClassName([MarshalAs(UnmanagedType.BStr)] out string className);
[MethodImpl(MethodImplOptions.InternalCall)]
void GetTrustLevel(out TrustLevel TrustLevel);
[MethodImpl(MethodImplOptions.InternalCall)]
IInputPane2 GetForWindow([In] IntPtr appWindow, [In] ref Guid riid);
}
[Guid("8A6B3F26-7090-4793-944C-C3F2CDE26276"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
[ComImport]
internal interface IInputPane2
{
[MethodImpl(MethodImplOptions.InternalCall)]
void GetIids(out uint iidCount, [MarshalAs(UnmanagedType.LPStruct)] out Guid iids);
[MethodImpl(MethodImplOptions.InternalCall)]
void GetRuntimeClassName([MarshalAs(UnmanagedType.BStr)] out string className);
[MethodImpl(MethodImplOptions.InternalCall)]
void GetTrustLevel(out TrustLevel TrustLevel);
[MethodImpl(MethodImplOptions.InternalCall)]
bool TryShow();
[MethodImpl(MethodImplOptions.InternalCall)]
bool TryHide();
}
}
}