WindowsのGetDesktopWindow
とOpenInputDesktop
APIの使用法の違いは何ですか?WindowsのGetDesktopWindow APIとOpenInputDesktop APIの違いは何ですか?
答えて
これらは完全に異なる値を返すため、互換性はありません。
GetDesktopWindow
がHWND
を返し、ウィンドウへのハンドルです:
HWND WINAPI GetDesktopWindow(void);
OpenInputDesktop
しばらく戻っHDESK
、ハンドルがにあるあなただけのドキュメントでその関数のシグネチャを見ることによって伝えることができますデスクトップ:
HDESK WINAPI OpenInputDesktop(
__in DWORD dwFlags,
__in BOOL fInherit,
__in ACCESS_MASK dwDesiredAccess
);
したがって、どちらを使用するかは、明らかに必要な値の種類に依存します。 Desktop functionsには、すべてHDESK
のパラメータが必要です。すべてのウィンドウ操作関数は、ウィンドウ(HWND
)へのハンドルを必要とします。
すべてのことは、GetDesktopWindow
機能によって返されたように、デスクトップウィンドウを悪用することに対してあなたに注意を払わなかった場合、私は黙っています。彼らは何をすべきかについてはThe desktop window is very special.
:
GetDesktopWindow()
は「ルート」呼び出し元のスレッドが現在関連付けられている方のデスクトップのHWND
を返します。 "HWND
"と思う方がいいでしょう。デスクトップの他のすべてのウィンドウ/ HWND
は何とかこの子孫です。トップレベルのウィンドウは直接の子です。 (メッセージ専用ウィンドウは特別なケースですが、HWNDツリーには表示されませんが、依然としてデスクトップに属しています)。これは、すべてのファイルとアイコンを持つ背景にあるウィンドウと同じではありませんそれはおそらく適切に「シェルデスクトップ」ウィンドウと呼ばれ、GetShellWindow()
を使用して取得することができます。これは特別なタイプのトップレベルウィンドウです。
OpenInputDesktop()
は、現在アクティブなデスクトップとユーザー入力を受け取ったデスクトップのうちいずれもHDESK
を返します。各デスクトップにはルートウィンドウまたは「デスクトップ」ウィンドウをルートとする独自のツリーHWND
があります。
これらはどのように関連しているのですか?HDESKを取得すると、SetThreadDesktopを使用してそのデスクトップをスレッドのデフォルトデスクトップに設定できます。 GetDesktopWindowを呼び出すと、そのデスクトップのルートHWNDが返されます。 (あなたが入力デスクトップとは、例えば、ロックされたデスクトップの場合は通常の場合ではありません最初の場所でそのHDESKを使用する権限を持っている必要があることに注意してください。)また、現在のスレッドのHDESK
を取得するためにGetThreadDesktop()
を使用することができます。スパイ++ - - あなたはあなたのアプリケーションがオンになっているデスクトップ用HWND
ツリーを走査したい場合
あなたはGetDesktopWindow()
を使用することがありますタイプのアプリは、おそらく、GetWindow()
または類似を使用して、そこからルートウィンドウとトラバースを取得するために、これを使用する場合があります。しかし、ほとんどのアプリは自分自身を幸せにしているので、他のウィンドウが何であるかを意識する必要はありません。おそらく、一つの共通の使用は、任意のウィンドウがトップレベルであるかどうかをチェックするためのものです:戻り値はGetDesktopWindow()
と一致した場合にGetAncestor(hwnd, GA_PARENT)
を使用して、確認してください。
OpenInputDesktop()
は、おそらく多くのほとんど使用されません。ほとんどのアプリは起動したデスクトップに座ってそこにとどまります。おそらく、ユーザーが切り替えることができる複数のデスクトップを作成したデスクトップ切り替えユーティリティを作成した場合、そのアプリケーションや他のアプリは、UIを表示する前に現在のものになっていることを確認するためにこれを使用できますまったく。ある段階では、拡大鏡やスクリーンリーダーなどのUIやデスクトップを切り替えるときに「ユーザーに従う」UIを備えた他のアプリを書くことは可能ですが、ロックされたデスクトップは安全ではありません。これらのタイプのアプリは、代わりに別の方法でそのケースを操作する必要があります。
- 1. google apiとgoogle rest APIの違いは何ですか?
- 2. StAX Cursor APIとIterator APIの違いは何ですか?
- 3. Web APIとAzure API Appの違いは何ですか?
- 4. Bing Speech APIとUWP Speech APIの違いは何ですか
- 5. Windows APIのHANDLEとHWNDの違いは?
- 6. Android 4.0 - APIレベル14とGoogle API(Google Inc.) - APIレベル14:違いは何ですか?
- 7. (1.2サフィックスなし)のlog4j-1.2-APIとのlog4j-APIの違いは何ですか
- 8. アンドロイド用のネイティブキャンバスAPIとhtml5キャンバスAPIのパフォーマンスの違いは何ですか?
- 9. Azure App Services APIとApp Services Mobile AppsのカスタムAPIの違いは何ですか?
- 10. api keyとclient idとservice accountの違いは何ですか?
- 11. WhtaはGoogle Maps APIとRestrictキーの違いは何ですか?
- 12. GAE Search APIとDatastoreのクエリの違いは何ですか?
- 13. RxJs APIのbindCallbackとbindNodeCallbackの違いは何ですか?
- 14. 休憩 - API urlの ":"と "{}"の違いは何ですか?
- 15. OpenVXオブジェクトノードのAPI vxReleaseNodeとvxRemoveNodeの違いは何ですか?
- 16. Fabric.ioのAPIキーとビルドシークレットの違いは何ですか?
- 17. AuthyのTOTPとPhone Verification APIの違いは何ですか?
- 18. Class APIのgetDeclaredConstructorsとgetConstructorsの違いは何ですか?
- 19. linuxのapiファイルとdeviceファイルの違いは何ですか?
- 20. Google Rest APIとGoogle Apps Script Execution APIの違いは何ですか
- 21. gdata-java-clientとgoogle-api-java-clientの違いは何ですか?
- 22. Facebook Php APIとoAuth認証の違いは何ですか?
- 23. Google Cloud Vision APIとモバイルビジョンの違いは何ですか?
- 24. Asp.Net Web APIとWCFサービスの違いは何ですか?
- 25. showFeedDialogとpublishUserAction Facebook APIの違いは何ですか?
- 26. APIアプリケーションとロジックアプリケーションの違いは何ですか?
- 27. APP IDとAPIキーの違いは何ですか?
- 28. android api 17と23の違いは何ですか?
- 29. IBM APIマネージャーとIBM Data Powerの違いは何ですか?
- 30. BOSSとYahoo Web Search APIの違いは何ですか?
私が探していたものの正確な詳細。私は彼らがお互いにどのように関係しているか知りたいと思っていました。ありがとう、相棒! – Quest