2017-03-23 160 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(); 
相關問題