6

Windows 8 で Win+X のキープレス イベントをシミュレートしようとしていますが、これにより小さなメニューがポップアップ表示されますが、SendInput を使用してこれを機能させることができませんでした。その他のキーの組み合わせ (例: Win+R、Win+E、Win+D) では機能しますが、Win+X では機能しません。Synergy+ にも同じ問題があることに気付きましたが、Windows のオンスクリーン キーボードにはありません。オンスクリーン キーボードが使用する SendInput のパラメーターも確認しましたが、アプリケーションでまったく同じパラメーターを使用してもメニューが表示されません。

私の質問ですが、どうすればこれを機能させることができますか? または、このメニューを表示する別の方法はありますか?

4

1 に答える 1

3

最近、これに対するサポートをアプリケーションに追加しました。競合他社を打ち負かしてよかったです!

Windows 8には新しいUIPI制限があります。最もよく使用されるブロックされたショートカットはAlt+Tabであるため、回避策を実行する必要があります。

uiAccess="true"マニフェストでバイナリをマークする必要があります。(これを行う方法の詳細については、googleを参照してください。)このマニフェストは、Microsoft承認のコード署名証明書で署名され、「安全な場所」(system32またはProgram Files / Program Files(x86))にインストールされない限り、バイナリが起動されないようにします。 。

ヘルパーからプログラムを実行する場合:中程度の整合性プロセスからuiAccessバイナリを起動することはできませんCreateProcess(マニフェストは「高」整合性が必要であるとマークします)。代わりに、ShellExecute「open」を使用して起動し、シェルに昇格させるのが最も簡単です。を使用する場合は、を使用して1CreateProcessAsUserに設定する必要があります。そうしないと、起動に失敗します。TokenUIAccessSetTokenInformation

最終条件:uiAccessは、プロセスが実行できることをかなり制限していることに注意してください。通常の(中程度の整合性)プロセスからUI入力を受け取ることができないため、他のアプリケーションがウィンドウと対話することはできません。したがって、UIを別のプロセスに分離する際のグッドプラクティスにまだ従わない場合は、これが適切な理由になります。または、uiAccessを必要とするタスクを、小さな自己完結型のヘルパーバイナリに入れて、非UIプロセスから完全に分離することもできます。メインアプリは、それらの特定のタスク(など)を実行するために必要に応じて命令が送信される高整合性ヘルパープロセスとして実行できますSendInput

最後に、SendInput動作します。

于 2012-12-20T15:15:03.117 に答える