如何在 C# 中打开平板电脑模式的屏幕键盘?
How to open the tablet-mode on-screen-keyboard in C#?
我想使用代码启动新的屏幕键盘 (OSK)。您可以在任务栏中找到这个:
(如果没有,您可以通过右键单击任务栏找到它)。
我已经尝试过常规的:
System.Diagnostics.Process.Start("osk.exe");
但我想启动另一个(不是 window 模式)。在这里你可以看到我想要哪个 OSK,哪个不想要:
如何启动该版本?以及如何在特定设置中启动它(如果可能)?
通过在命令行中启动进程
我相信你想在 Windows 10 开始以下过程,按照建议 here:
"C:\Program Files\Common Files\microsoft shared\ink\tabtip.exe"
根据@bernard-vander-beken 的建议,最好使用
Environment.GetFolderPath(Environment.SpecialFolder.CommonProgramFiles)
生成路径的 "C:\Program Files\Common Files\"
部分以适应不同的安装位置。
通过一个API
以前的命令行似乎以不一致的方式工作,特别是如果 tabtip.exe
进程已经 运行.
则它不会工作两次
我在 this thread 上找到了 @torvin 的这个片段,你可以用它以编程方式显示屏幕键盘 在 你已经启动 tabtip.exe
使用命令行解决方案,否则会失败并出现 COM
异常。
class Program
{
static void Main(string[] args)
{
var uiHostNoLaunch = new UIHostNoLaunch();
var tipInvocation = (ITipInvocation)uiHostNoLaunch;
tipInvocation.Toggle(GetDesktopWindow());
Marshal.ReleaseComObject(uiHostNoLaunch);
}
[ComImport, Guid("4ce576fa-83dc-4F88-951c-9d0782b4e376")]
class UIHostNoLaunch
{
}
[ComImport, Guid("37c994e7-432b-4834-a2f7-dce1f13b834b")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
interface ITipInvocation
{
void Toggle(IntPtr hwnd);
}
[DllImport("user32.dll", SetLastError = false)]
static extern IntPtr GetDesktopWindow();
}
我想使用代码启动新的屏幕键盘 (OSK)。您可以在任务栏中找到这个:
(如果没有,您可以通过右键单击任务栏找到它)。
我已经尝试过常规的:
System.Diagnostics.Process.Start("osk.exe");
但我想启动另一个(不是 window 模式)。在这里你可以看到我想要哪个 OSK,哪个不想要:
如何启动该版本?以及如何在特定设置中启动它(如果可能)?
通过在命令行中启动进程
我相信你想在 Windows 10 开始以下过程,按照建议 here:
"C:\Program Files\Common Files\microsoft shared\ink\tabtip.exe"
根据@bernard-vander-beken 的建议,最好使用
Environment.GetFolderPath(Environment.SpecialFolder.CommonProgramFiles)
生成路径的 "C:\Program Files\Common Files\"
部分以适应不同的安装位置。
通过一个API
以前的命令行似乎以不一致的方式工作,特别是如果 tabtip.exe
进程已经 运行.
我在 this thread 上找到了 @torvin 的这个片段,你可以用它以编程方式显示屏幕键盘 在 你已经启动 tabtip.exe
使用命令行解决方案,否则会失败并出现 COM
异常。
class Program
{
static void Main(string[] args)
{
var uiHostNoLaunch = new UIHostNoLaunch();
var tipInvocation = (ITipInvocation)uiHostNoLaunch;
tipInvocation.Toggle(GetDesktopWindow());
Marshal.ReleaseComObject(uiHostNoLaunch);
}
[ComImport, Guid("4ce576fa-83dc-4F88-951c-9d0782b4e376")]
class UIHostNoLaunch
{
}
[ComImport, Guid("37c994e7-432b-4834-a2f7-dce1f13b834b")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
interface ITipInvocation
{
void Toggle(IntPtr hwnd);
}
[DllImport("user32.dll", SetLastError = false)]
static extern IntPtr GetDesktopWindow();
}