[英]How to open the tablet-mode on-screen-keyboard in C#?
我想使用代码启动新的屏幕键盘 (OSK)。 你可以在任务栏中找到这个:
(如果没有,您可以通过右键单击任务栏找到它)。
我已经尝试过常规:
System.Diagnostics.Process.Start("osk.exe");
但我想启动另一个(不是在 window 模式下)。 在这里,您可以看到我想要哪个 OSK,哪个不想要:
如何启动该版本? 以及如何在特定设置中启动它(如果可能)?
通过在命令行中启动一个进程
我相信您想按照此处的建议在 Windows 10 中启动以下过程:
"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
进程已经在运行,它就不会工作两次。
我在这个线程上找到了@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();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.