如何关闭TextInputPanel

我正在移植WPF应用程序以在Windows 8平板电脑上运行。

我希望在文本框获得焦点时显示TextInputPanel,并在失去焦点时消失。

让它看起来没有问题,但我似乎无法接近它。

我在进程上尝试了Kill和CloseMainWindow,但得到了InvalidOperationException – 无法处理请求,因为进程已退出。

我试过SendMessage但没有。

有任何想法吗?

一些WinForm测试代码如下:

using System; using System.Diagnostics; using System.Runtime.InteropServices; using System.Windows.Forms; namespace VirtualKeyboard { public partial class Form1 : Form { [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)] static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam); static uint WM_CLOSE = 0x0010; static uint WM_QUIT = 0x0012; public Form1() { InitializeComponent(); } private Process _keyboardProcess; private void Open_Click(object sender, EventArgs e) { _keyboardProcess = Process.Start(@"C:\Program Files\Common Files\microsoft shared\ink\tabtip.exe"); } private void Close_Click(object sender, EventArgs e) { // tried all these //SendMessage(_keyboardProcess.Handle, WM_CLOSE, IntPtr.Zero, IntPtr.Zero); //SendMessage(_keyboardProcess.Handle, WM_QUIT, IntPtr.Zero, IntPtr.Zero); //_keyboardProcess.Kill(); //_keyboardProcess.CloseMainWindow(); } } } 

正如我在评论中提到的,TabTip立即产生2个其他进程然后退出调用进程。

迭代所有打开的进程并关闭一个名为TabTip的进程。 这将关闭这两个过程。

 using System; using System.Diagnostics; using System.Windows.Forms; namespace VirtualKeyboard { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Open_Click(object sender, EventArgs e) { Process.Start(@"C:\Program Files\Common Files\microsoft shared\ink\tabtip.exe"); } private void Close_Click(object sender, EventArgs e) { Process[] processlist = Process.GetProcesses(); foreach(Process process in processlist) { if (process.ProcessName == "TabTip") { process.Kill(); break; } } } } }