最近、これに対するサポートをアプリケーションに追加しました。競合他社を打ち負かしてよかったです!
Windows 8には新しいUIPI制限があります。最もよく使用されるブロックされたショートカットはAlt+Tabであるため、回避策を実行する必要があります。
uiAccess="true"
マニフェストでバイナリをマークする必要があります。(これを行う方法の詳細については、googleを参照してください。)このマニフェストは、Microsoft承認のコード署名証明書で署名され、「安全な場所」(system32またはProgram Files / Program Files(x86))にインストールされない限り、バイナリが起動されないようにします。 。
ヘルパーからプログラムを実行する場合:中程度の整合性プロセスからuiAccessバイナリを起動することはできませんCreateProcess
(マニフェストは「高」整合性が必要であるとマークします)。代わりに、ShellExecute
「open」を使用して起動し、シェルに昇格させるのが最も簡単です。を使用する場合は、を使用して1CreateProcessAsUser
に設定する必要があります。そうしないと、起動に失敗します。TokenUIAccess
SetTokenInformation
最終条件:uiAccessは、プロセスが実行できることをかなり制限していることに注意してください。通常の(中程度の整合性)プロセスからUI入力を受け取ることができないため、他のアプリケーションがウィンドウと対話することはできません。したがって、UIを別のプロセスに分離する際のグッドプラクティスにまだ従わない場合は、これが適切な理由になります。または、uiAccessを必要とするタスクを、小さな自己完結型のヘルパーバイナリに入れて、非UIプロセスから完全に分離することもできます。メインアプリは、それらの特定のタスク(など)を実行するために必要に応じて命令が送信される高整合性ヘルパープロセスとして実行できますSendInput
。
最後に、SendInput
動作します。