2017-03-23 131 views
0

我从我的应用程序上的按钮按下启动触摸键盘在管理员帐户如下:启动在Windows 10非管理员帐户的触摸键盘(Tabtip.exe)

var progFiles = @"C:\Program Files\Common Files\Microsoft Shared\ink"; 
var keyboardPath = Path.Combine(progFiles, "TabTip.exe"); 
Process.Start(keyboardPath); 

但是从非管理员帐户,触摸键盘不会启动。

我已经尝试过各种技术(使用ShellExecuteEx,CreateProcessWithLogonW,模拟等)没有运气。

可以做到这一点吗?

+0

是它的WinForms,WPF,UWP? – Tony

+0

我想问题是你没有访问这个目录。您可以将软件复制到您的应用程序数据文件夹中(bin/debug或bin/release) – MetaColon

+0

@Tony:WPF,在非管理员帐户的windows 8.1上工作正常 –

回答

0

经过大量的测试,我发现:Show touch keyboard (TabTip.exe) in Windows 10 Anniversary edition

所以问题是在Windows 10周年纪念版的错误。

从该链接我使用的C#代码:

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(); 
相关问题