win32를 사용하여 글로벌 후크를 설치했지만 기본 응용 프로그램과 통신해야합니다. 어떻게해야합니까? 난 DLL을 내 애플 리케이션 HWND를 설정하고 후크 sendmessage 수있는 함수를 가질 수있을 것 같아요? 또는 창 제목을 검색하여 해당 응용 프로그램을 후크 및 sendmessage에서 찾으면 되나요? 가장 좋은 전략은 무엇이며 가장 좋은 방법을 sendmessage로 보내거나 전 세계적인 고리와 통신하기 위해 다른 것을 사용해야합니다.글로벌 훅에서 응용 프로그램으로 어떻게 통신합니까?
1
A
답변
1
사용 PostMessage를하지 sendMessage 첨부 : sendMessage 첨부 시간이 걸릴 수 있으며,이 다른 응용 프로그램에서 지연의 원인이 될 수 있습니다.
훅을 초기화 할 때 정의한 함수를 사용하여 훅 DLL에 응용 프로그램의 HWND를 제공하십시오. 이이처럼 DLL의 공유 데이터 세그먼트에 보관해야합니다 :이 here을 수행하기위한 전체 예제를 볼 수
#pragma data_seg(".shared") HWND hWndApp = NULL; #pragma data_seg() #pragma comment("linker, /section:.shared,rws") void setAppWnd(HWND hWnd) { hWndApp = hWnd; }
.
1
어떤 유형의 정보를 다시 앱에 보내시겠습니까?
SendMessage는 프로세스 경계에 걸쳐 DWORD를 넘어서는 모든 것을 전달할 수있는 기능이 없습니다 (예 : 한 프로세스의 메모리에 대한 포인터를 다른 프로세스로 전달할 수 없음). 그러나 실제로 수행해야하는 간단한 값만 전달하면됩니다. 충분히 잘 작동합니다.
@interjay와 같이 PostMessage는 더 나은 계획이지만 궁극적으로 여전히 동일한 제한이 있습니다.
관련 사항 : "Hazards of cross-process messages", "PasswordSpy - Retrieving lost passwords using Windows hooks"
관련 문제
- 1. 서비스가 활동과 어떻게 통신합니까?
- 2. 앱 도메인간에 어떻게 통신합니까?
- 3. android는 동적 서비스와 어떻게 통신합니까?
- 4. C++과 Flash간에 어떻게 통신합니까?
- 5. Emacs : 메이저 모드 훅에서 특정 글로벌 모드를 비활성화하는 방법은 무엇입니까?
- 6. 텔넷 서버는 클라이언트와 어떻게 통신합니까?
- 7. 보고서 뷰어는 SSRS와 어떻게 통신합니까?
- 8. HTTPS와 어떻게 통신합니까? (Basic Stuff)
- 9. WiFi 액세스 포인트에 연결된 장치간에 어떻게 통신합니까?
- 10. 프로그래밍 언어/라이브러리는 하드웨어와 어떻게 통신합니까?
- 11. 어떻게 프로젝트를 장고의 응용 프로그램으로 나눕니까?
- 12. 데스크톱 응용 프로그램으로 OpenId?
- 13. HTML 알림에서 기본 페이지와 어떻게 통신합니까?
- 14. PHP가 동일한 서버의 MySQL과 어떻게 통신합니까?
- 15. OS X에서 GPIO USB 장치와 어떻게 통신합니까?
- 16. 소프트웨어/코드는 실제로 하드웨어와 어떻게 통신합니까?
- 17. 유한 상태 기계 구현에서 사용자와 어떻게 통신합니까?
- 18. 활동이 응용 프로그램으로 설치되었습니다.
- 19. 외국어로 쓰여진 응용 프로그램으로 작업하기
- 20. php 응용 프로그램을 phonegap 응용 프로그램으로 만들기
- 21. ClickOnce 응용 프로그램으로 NLog 배포
- 22. ASP.NET 응용 프로그램을 Silverlight 응용 프로그램으로 변환
- 23. Webgarden에서 글로벌 응용 프로그램 변수
- 24. 알림 - 응용 프로그램으로 보내기를 클릭하십시오.
- 25. Flex 응용 프로그램으로 사이트 개발
- 26. Gwt : 데스크톱 응용 프로그램으로 실행
- 27. ASP.Net 쿠키를 응용 프로그램으로 제한
- 28. xcode iphone 응용 프로그램으로 이동
- 29. 웹 응용 프로그램으로 버전 관리
- 30. Java 응용 프로그램으로 JRE 번들