在杀死TabletKeyboard(TabTip.exe)应用程序的过程后,在wpf中没有恢复到原来的大小

Abi*_*vis 5 c# wpf resize window windows-8

我有一个运行在Windows 8平板电脑上的wpf应用程序.并且当焦点在任何时候为了打字键盘TextBox.

我正在调用TabTip.exe进程来显示键盘,当显示键盘时我的应用程序缩小了.在所有操作之后,都有一个保存按钮.当我单击保存按钮时,键盘应该消失,我的应用程序应该恢复到原始大小.

我正在杀死进程TabTip.exe以关闭键盘,但应用程序将不会重新调整其原始大小.

我试过了:

if (process.ProcessName == "TabTip")
{
    Application.Current.MainWindow.VerticalAlignment = VerticalAlignment.Stretch;
    process.Kill();
    Application.Current.MainWindow.Height = SystemParameters.WorkArea.Height;
    Application.Current.MainWindow.Width = SystemParameters.WorkArea.Width;
    Application.Current.MainWindow.WindowState = WindowState.Normal;
    Application.Current.MainWindow.WindowState = WindowState.Maximized;
    break;
} 
Run Code Online (Sandbox Code Playgroud)

有人知道在杀死TabTip.exe后将应用程序恢复到原始大小吗?

Ell*_*art 15

Windows 8键盘存在许多渲染问题.这些可以通过以较小的模式启动键盘来减轻(相当于按下最小化按钮).然后,它在WPF中发挥得更好,实际上在启动和关闭进程时最小化和扩展.

这需要在此模式下启动该过程,并以比您现在更好的方式关闭它

包括这些库:

using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Windows.Interop;
Run Code Online (Sandbox Code Playgroud)

并定义这个外部函数:

[return: MarshalAs(UnmanagedType.Bool)]
[DllImport("user32.dll", SetLastError = true)]
public static extern bool PostMessage(int hWnd, uint Msg, int wParam, int lParam);

[DllImport("user32.dll")]
public static extern IntPtr FindWindow(String sClassName, String sAppName);
Run Code Online (Sandbox Code Playgroud)

打开键盘:

public static void openKeyboard()
    {
        ProcessStartInfo startInfo = new ProcessStartInfo(@"C:\Program Files\Common Files\Microsoft Shared\ink\TabTip.exe");
        startInfo.WindowStyle = ProcessWindowStyle.Hidden;
        myProcess = Process.Start(startInfo);
    }
Run Code Online (Sandbox Code Playgroud)

并关闭它:

public static void closeKeyboard()
    {
        uint WM_SYSCOMMAND = 274;
        uint SC_CLOSE = 61536;
        IntPtr KeyboardWnd = FindWindow("IPTip_Main_Window", null);
        PostMessage(KeyboardWnd.ToInt32(), WM_SYSCOMMAND, (int)SC_CLOSE, 0);
    }
Run Code Online (Sandbox Code Playgroud)

这将为您提供屏幕键盘上最佳表现的Windows 8.运气好的话,它会解决你的渲染问题.