繁体   English   中英

如何在 C# 中打开平板模式屏幕键盘?

[英]How to open the tablet-mode on-screen-keyboard in C#?

我想使用代码启动新的屏幕键盘 (OSK)。 你可以在任务栏中找到这个:

New-OSK-任务栏

(如果没有,您可以通过右键单击任务栏找到它)。

我已经尝试过常规:

System.Diagnostics.Process.Start("osk.exe");

但我想启动另一个(不是在 window 模式下)。 在这里,您可以看到我想要哪个 OSK,哪个不想要:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM