我有它运行在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;
}
有谁知道杀TabTip.exe后恢复应用到原来的大小?
Windows 8的键盘有一些渲染的问题。 这些可以通过启动在其较小模式的键盘(相当于撞击最小化按钮)来减轻。 它起着与WPF更好的话,实际上是最小化和当进程启动和关闭的扩大。
这需要在启动此模式的过程中,和关闭它在一个更好的方式比你正在做的事情
包括这些库:
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Windows.Interop;
并定义这个外部函数:
[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);
打开键盘:
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);
}
与关闭它:
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);
}
这会给你的屏幕键盘,你可以得到最好的表现的Windows 8。 运气好的话,这将解决您的渲染问题。
阿斌 - 你问起关闭键盘窗口,而不是杀死进程。 这就是我在做的一个WPF应用程序,并通过关闭窗口,我的主要应用程序的窗口将调整预期。 一个快速的控制台应用程序演示隐藏键盘在这里(注意,这里假设你正在使用的键盘坞模式,而不是浮动最小的模式):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
namespace TabTipTest
{
class Program
{
[DllImport("user32.dll")]
public static extern IntPtr FindWindow(String sClassName, String sAppName);
[DllImport("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, uint Msg, int wParam, int lParam);
/// <summary>
/// The command for a user choosing a command from the Window menu (see http://msdn.microsoft.com/en-gb/library/windows/desktop/ms646360(v=vs.85).aspx).
/// </summary>
public const int WM_SYSCOMMAND = 0x0112;
/// <summary>
/// Closes the window.
/// </summary>
public const int SC_CLOSE = 0xF060;
static void Main(string[] args)
{
HideKeyboard();
}
/// <summary>
/// Gets the window handler for the virtual keyboard.
/// </summary>
/// <returns>The handle.</returns>
public static IntPtr GetKeyboardWindowHandle()
{
return FindWindow("IPTip_Main_Window", null);
}
/// <summary>
/// Hides the keyboard by sending the window the close command.
/// </summary>
public static void HideKeyboard()
{
IntPtr keyboardHandle = GetKeyboardWindowHandle();
if (keyboardHandle != IntPtr.Zero)
{
SendMessage(keyboardHandle, WM_SYSCOMMAND, SC_CLOSE, 0);
}
}
}
}
文章来源: After killing the process for TabletKeyboard(TabTip.exe) application doesn't bring back to its original size in wpf