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

2024-01-10

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

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

我已经尝试过常规的:

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

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

我怎样才能启动该版本?我怎样才能在特定的设置中启动它(如果可能的话)?


通过在命令行中启动进程

我相信您想按照建议在 Windows 10 中启动以下过程here https://social.msdn.microsoft.com/Forums/en-US/0e3e1eb6-ad12-455c-84e9-b5a78a893ac4/open-on-screen-keyboard-in-windows-10-via-vba?forum=accessdev:

"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 上找到了这个片段这个线程 https://stackoverflow.com/questions/38774139/show-touch-keyboard-tabtip-exe-in-windows-10-anniversary-edition,您可以使用它以编程方式显示屏幕键盘after你已经开始了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();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 C# 中打开平板电脑模式屏幕键盘? 的相关文章

随机推荐