2017-07-21 36 views
1

Windows 10 - Pro v。1607 ASUS TP 201タブレットでカスタムシェルとして実行するWPFアプリケーションを作成しました。WPFのオンスクリーンキーボードの問題Windows 10 ProのカスタムシェルとしてのクラシックWindowsアプリケーション

カスタムシェルとしてのクラシックウィンドウアプリケーションは、Windows 10 - Proでは定義できません。そこで、カスタムユーザー、カスタムシェルを割り当てるためにレジストリを変更しました。

アプリケーションが実行されるのは、テキストボックスでタッチイベントがトリガーされると仮想キーボードがポップアップしないことです。私の開発マシンでWheテストを行うと、正常に動作します。 Windowsシェルの後のアプリケーションとして、カスタムシェルとしてではなく、アプリケーションを実行しても正常に動作します。オンスクリーンキーボードは、アプリケーションがカスタムシェルとして実行されている場合にのみ失敗します。起動するには

1):ただし

<Textbox x:Name="textbox" GotFocus="launchKeyboard" ... /> 

:このイベントは、によって開始され

private void launchKeyboard(object sender, RoutedEventArgs e) 
{ 
    Process.Start(@"C:\[Path]\osk.exe"); 
} 

私はTocuhイベントの後、キーボードの実行ファイルを起動するのアプローチを試してみましたosk.exeは、osk.exeが64ビットで動作する32ビットアプリケーションであるため、WinSxSコンポーネントストアから実行ファイルを実行する必要があります。 WinSxSのフォルダには、ハッシュを含む長い文字列が付けられているという警告があります。だから私は、それぞれがカスタム名を持っているという事実のために、各タブレットの起動パスを指定することはできません。

2)tabtip.exeを起動するには、管理者権限でプロセスを開始する必要があります。そうすることで、管理者のキーが必要なダイアログが表示されます。タブレットユーザーは、管理者権限を持っています。

3)ライセンスキー付きのカスタムキーボード、tabtipondemandをインストールし、2と同じ、管理キーが必要です。

なぜtabtip.exeを起動するには、管理者レベルが必要なのでしょうか。

Process.Verb = "runas"; 

adminで起動しないと、仮想キーボードが失敗し、空のダイアログボックスが表示されます。

だから私の質問は以下のとおりです。

1)私は、カスタムシェルとして実行しているWindowsのクラシックWPFアプリでは、管理者なしtabtip.exe、窓10ネイティブオンスクリーンキーボードを起動するにはどうすればよいです。

2)各マシンの各パスをカスタマイズする代わりに、WindowsコンポーネントストアのWinSxSからosk.exeを起動するための汎用パスまたは動的パスを定義する方法を教えてください。

3)アプリケーションをWindowsシェルで実行するときに、tabtip.exeのネイティブ動作を有効にするために、任意のライブラリdllをアプリケーションでコンパイルできますか?

は私がこれについて明確にしてみましょう:

1)私は、カスタムシェル、ないUWAとしてWindowsクラシックのアプリを実行していますよ。

2)アプリケーションがカスタムシェルとして実行するマシンは、Windows 10 - Pro v 1607、タッチスクリーン、Asus tp201です。

3)カスタムシェルは、App Storeやキオスクモードで実行されていません。ライセンスの複雑さのために、従来のWindowsアプリケーションはWindows 10 proでカスタムシェルとして実行できません。

4)カスタムシェルは正しく動作するレジスタを変更することで構成され、問題はありません。

5)現時点では、ネイティブWPFアプリケーションをUWAに移行することはできません。 UWAを使用したカスタマイズシェルにはPITAがあります。

答えて

0

まあ、私は

は、カスタムとして実行して、Windows 10をシェルすることを念頭に持つのWindows 10でカスタムシェルとして実行されるWindowsのデスクトップアプリで仮想キーボードをdisplayngの問題のための完璧なソリューションを見つけることができましたネイティブの仮想キーボードが表示されない、私はアレクセイSherbakovGithubosklibと呼ばれる便利なライブラリを使用していました。また、Nuget PMのパッケージとして提供され、VSで使用する準備ができています。

のSystem.Windows.Forms名前空間に属する、あなたのプロジェクトへの参照としてOsklibを追加し、GotFocusイベントで任意のフォームからイベントをトリガー:

<TextBox ... Gotfocus="TriggerKeyboard" /> 

その後TriggerKeyboardイベントを作成Osklibクラスを呼び出す:

private void TriggerKeyboard(object sender, EventArgs e) { 
    try { 
     Osklib.OnScreenKeyboard.Show(); 
    } 
    catch(Exception ex) { 
     MessageBox.Show(ex.Message); 
    } 
} 

これはすばやく簡単で完全なものです。 Alexeiに感謝します。

関連する問題