11

別のアプリケーションがフォーカスを持っている間、ホットキーを介して表示および非表示にできるオーバーレイの種類のウィンドウを持つアプリケーションをプログラムしました。上記の他のアプリケーションは、管理者権限で実行される DirectX ゲームです。

他のアプリケーションでホットキーが押されたときに通知を受け取るために、3 つの可能な解決策を既に試しました。それはある程度受け入れられますが、それらの特権を必要としないソリューションが必要です。TeamSpeak のようなアプリケーションは、管理者として実行しなくても入力を受け取ることができるため、方法が必要であると確信しています。

私がすでに試したこと:

  1. RegisterHotkey - DirectX ウィンドウでは機能しないため、適切ではありません。
  2. SetWindowsHookEx - 一般的なキーボード フックとして機能しますが、管理者権限でのみ機能します。
  3. GetAsyncKeyState - 指定されたホットキーをチェックするために機能しますが、管理者権限がないわけではありません。

ええ、私が考えることができるものはこれ以上ないので、誰かが別のソリューションのアイデアを提供できれば本当に感謝しています...私はDelphiを使用していますが、とにかくWindows APIに依存しているので、私はしません解決策は言語固有のものになると思います。

4

1 に答える 1

4

TeamSpeak はホットキーに DirectInput を使用していると思います (すでに DirectX を使用している場合に適しています)。昇格されたプログラムとのやり取りに関しては、唯一の解決策は、TeamSpeak が使用していると私は信じていますが、uiAccess=true. これにより、アプリケーションを管理者として実行する必要なく、UIPI をバイパスできます。

http://msdn.microsoft.com/en-us/library/bb756929.aspx

これが機能するためには、いくつかの注意事項があります

  • アプリケーションは Authenticode 署名されている必要があります
  • アプリケーションは、保護されたディレクトリ (\ProgramFiles\,\system32) に存在する必要があります。

アプリケーションに自己署名することはできますが (代わりに費用がかかるため!)、証明書を手動で配布し、問題のアプリケーションを実行しているシステムにインストールする必要があります。

于 2013-04-09T11:23:49.797 に答える