So schließen Sie TextInputPanel

Ich portiere eine WPF-Anwendung für die Ausführung auf einem Windows 8-Tablet.

Ich möchte, dass ein TextInputPanel angezeigt wird, wenn ein Textfeld den Fokus erhält, und verschwindet, wenn es den Fokus verliert.

Es ist kein Problem, es so aussehen zu lassen, aber ich kann es scheinbar nicht schließen.

Ich habe sowohl Kill als auch CloseMainWindow für den Prozess ausprobiert, erhalte jedoch eine InvalidOperationException - Anforderung kann nicht verarbeitet werden, da der Prozess beendet wurde.

Ich habe SendMessage ausprobiert, aber nichts.

Irgendwelche Ideen?

Es folgt ein WinForm-Testcode:

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();
        }

    }
}

Antworten auf die Frage(1)

Ihre Antwort auf die Frage