런타임시 창의 컨트롤을 다른 컨트롤로 교체합니다
문제
나는 창문과 그 풍부한 제어를 가지고 있습니다. 상기 컨트롤을 내 자신의 하나로 바꿀 수 있습니까? 나는 원래의 것과 같이, 즉 창문의 일부가되기를 원합니다.
시나리오를 더 자세히 설명하겠습니다. 현재 텍스트 편집기 인 기능 중 하나가 응용 프로그램을 분해하고 있습니다. 내 현재 (제한된) 환경에는 절차에 대한 다양한 고리가 있으며 그 중 하나는 핸들을 편집기 창에 산출합니다. 다른 하나는 핸들을 RichedIT20A 컨트롤에 window 호스트를 조달 할 수 있습니다.
내가하고 싶은 것은 이것입니다 - 컨트롤을 내 자신의 컨트롤 (.NET 등가)로 덮어 쓰고 앱의 getWindowText 호출을 패치하여 새 것을 사용합니다. 이를 구현하려면 C#/Managed C ++에서 클래스 라이브러리를 작성하여 내 앱 (관리되지 않은 C ++로 작성)으로 가져올 계획입니다.
또한 텍스트 편집기의 임의의 인스턴스가있을 수 있습니다.
해결책
너무 복잡하게 들립니다. wndproc 만 교체하십시오 (GWL_WNDPROC
), 아무것도 전달 한 다음 HWND를 무효화합니다. 그것은 다시 그리기를 강요 할 것입니다 (WM_PAINT
) 그런 다음 캡처 할 수 있습니다. 주인은 아마도 눈치 채지 못할 것입니다 (물론 그들이 푹 빠지지 않는 한).
제휴하지 않습니다 StackOverflow