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
"로 생각하는 것이 좋습니다. 다른 모든 windows/HWND
은 바탕 화면에 있습니다. 어떻게 든이 자손입니다. 최상위 창은 직접적인 자식입니다. (메시지 전용 창은 특수한 경우로, HWND 트리에 나타나지 않지만 여전히 바탕 화면에 속합니다.) 모든 파일과 아이콘이있는 배경의 창과 같지 않습니다. 그것, 아마도 적절하게 "쉘 데스크톱"창이라고 부르면, GetShellWindow()
을 사용하여 그것을 얻을 수 있습니다 - 그것은 특별한 유형의 최상위 창인 것 같습니다.
OpenInputDesktop()
은 현재 활성화되어 있고 사용자 입력을받는 데스크톱 중 HDESK
을 반환합니다. 각 바탕 화면에는 루트 창 또는 '바탕 화면'창을 뿌리로하는 HWND
의 자체 트리가 있습니다.
이러한 것들이 어떻게 관련되어 있느냐에 따라 일단 HDESK가 있으면 SetThreadDesktop을 사용하여 해당 데스크탑을 스레드의 기본 데스크탑으로 설정할 수 있습니다. GetDesktopWindow를 호출하면 해당 데스크톱의 루트 HWND가 반환됩니다. 입력 데스크톱이 잠긴 데스크톱 인 경우 일반적으로 해당 HDESK를 사용할 수있는 권한이 있어야합니다. GetThreadDesktop()
을 사용하여 현재 스레드에 대해 HDESK
을 가져올 수도 있습니다. 응용 프로그램이 루트 창을 얻기 위해 이것을 사용하고 거기에 아마 GetWindow()
또는 유사한을 사용하는 통과 할 수 타입 - 스파이 ++ - 당신이 당신의 응용 프로그램에 바탕 화면의 HWND
트리를 탐색하기를 원한다면 당신은 GetDesktopWindow()
을 사용할 수 있습니다
. 하지만 대부분의 앱은 자신을 행복하게 지켜주고 있으므로 다른 창문이 무엇인지 알 필요가 없습니다. 아마도 한 가지 일반적인 사용은 임의의 창이 최상위 수준인지 확인하는 것입니다. GetAncestor(hwnd, GA_PARENT)
을 사용하고 반환 값이 GetDesktopWindow()
과 일치하는지 확인하십시오.
OpenInputDesktop()
은 아마도 거의 사용되지 않습니다. 대부분의 앱은 시작된 데스크톱에 앉아서 거기에 머물러 있습니다.아마도 사용자가 전환 할 수있는 여러 데스크톱을 만든 데스크톱 전환 유틸리티를 작성한 경우 해당 앱 또는 다른 앱에서 UI를 표시하기 전에 현재 사용중인 앱인지 확인할 수 있습니다.하지만 그다지 일반적인 시나리오는 아닙니다. 조금도. 한 단계에서 돋보기 나 스크린 리더 또는 데스크톱을 전환 할 때 "사용자를 따르기"를 원하는 UI가있는 다른 앱을 작성할 수는 있지만 보안이 유지 된 잠긴 데스크톱에서는 작동하지 않을 수 있습니다. 이러한 유형의 앱은 다른 방법으로 대신 해당 사례를 사용해야합니다.
- 1. 동기 API와 비동기 API의 차이점은 무엇입니까?
- 2. API와 웹 서비스의 차이점은 무엇입니까?
- 3. API와 웹 서비스의 차이점은 무엇입니까?
- 4. C에서 GTK와 Win32 Native API의 차이점은 무엇입니까?
- 5. Ghostscript : Linux와 Windows의 차이점은 무엇입니까?
- 6. 웹 서비스와 API의 차이점은 무엇입니까?
- 7. youtube api와 일반적인 검색어의 차이점은 무엇입니까?
- 8. dialog main/child/mdi windows의 차이점은 무엇입니까?
- 9. BOSS와 Yahoo Web Search API의 차이점은 무엇입니까?
- 10. QueryParser와 API의 차이점은 무엇입니까? 3 단계에
- 11. showFeedDialog와 publishUserAction Facebook API의 차이점은 무엇입니까?
- 12. Repa 2와 3 API의 주요 차이점은 무엇입니까?
- 13. OpenInputDesktop() 안전/로그인 바탕 화면을
- 14. Google Maps Data API와 Google Maps API
- 15. Twitter API : REST와 스트리밍, 차이점은 무엇입니까?
- 16. Bing Map Api의 Search vs Geocode 서비스의 차이점은 무엇입니까?
- 17. Eventbrite API의 참석자 ID, 티켓 ID 및 바코드의 차이점은 무엇입니까?
- 18. REST API와 웹 애플리케이션의 차이점
- 19. 서비스로 실행 중일 때 GetDesktopWindow 대안
- 20. forge.prefs와 localStorage의 차이점은 무엇입니까?
- 21. % u & % g의 차이점은 무엇입니까?
- 22. webgl과 opengl의 차이점은 무엇입니까?
- 23. Win32 스트리밍 API와 DMZ
- 24. Windows의 하위 레벨은 무엇입니까? C 라이브러리 또는 해당 Win32 API의 기능은 무엇입니까?
- 25. 네이티브 Canvas API와 안드로이드 용 html5 canvas API의 성능 차이는 무엇입니까?
- 26. 아이폰 용 네이티브 2D 드로잉 API와 html5 캔버스 API의 성능 차이는 무엇입니까?
- 27. Windows 용 Win32 API와 같은 UNIX 용 API는 무엇입니까?
- 28. Windows의 부모 - 자식 관계
- 29. 목표 API와 minSDK의 목적은 무엇입니까
- 30. Windows의 리소스 제한은 무엇입니까?
정확히 내가 원하는 내용. 나는 그들이 서로 어떻게 관련되어 있는지 알고 싶어했다. 고마워 친구! – Quest