60 lines
1.6 KiB
C#
60 lines
1.6 KiB
C#
using System;
|
|
using System.Diagnostics;
|
|
using System.Runtime.InteropServices;
|
|
|
|
public class KeyboardManager
|
|
{
|
|
[DllImport("user32")]
|
|
static extern IntPtr FindWindow(String sClassName, String sAppName);
|
|
|
|
[DllImport("user32")]
|
|
static extern bool PostMessage(IntPtr hWnd, uint Msg, int wParam, int lParam);
|
|
|
|
public static void ShowTouchKeyboard()
|
|
{
|
|
try
|
|
{
|
|
ExternalCall("C:\\Program Files\\Common Files\\Microsoft Shared\\ink\\tabtip.exe", null, false);
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
UnityEngine.Debug.Log(e);
|
|
}
|
|
|
|
}
|
|
|
|
public static void HideTouchKeyboard()
|
|
{
|
|
try
|
|
{
|
|
uint WM_SYSCOMMAND = 274;
|
|
int SC_CLOSE = 61536;
|
|
IntPtr ptr = FindWindow("IPTip_Main_Window", null);
|
|
PostMessage(ptr, WM_SYSCOMMAND, SC_CLOSE, 0);
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
UnityEngine.Debug.Log(e);
|
|
}
|
|
}
|
|
private static Process ExternalCall(string filename, string arguments, bool hideWindow)
|
|
{
|
|
ProcessStartInfo startInfo = new ProcessStartInfo();
|
|
startInfo.FileName = filename;
|
|
startInfo.Arguments = arguments;
|
|
|
|
if (hideWindow)
|
|
{
|
|
startInfo.RedirectStandardOutput = true;
|
|
startInfo.RedirectStandardError = true;
|
|
startInfo.UseShellExecute = false;
|
|
startInfo.CreateNoWindow = true;
|
|
}
|
|
|
|
Process process = new Process();
|
|
process.StartInfo = startInfo;
|
|
process.Start();
|
|
process.Refresh();
|
|
return process;
|
|
}
|
|
} |