2011-08-19 3 views
2

타사 응용 프로그램에서 ter32.dll의 TE 편집 텍스트를 액세스하려고합니다. (이 here에 대한 첫 번째 게시물) 나는 API을 살펴보고 함수에 액세스하기 위해 DLL을 동적으로로드하려고 시도했습니다. 불행히도, ter32.dll의 애프터 마켓 재 작업에는 의존성이 있습니다. 필자는 필요에 따라 각 dll을 동적으로로드하려고 시도했지만 주기적 종속성을 보았습니다. ter32.dll에는 x가 필요합니다. x는 y를 요구합니다. x가 필요하기 때문에 y가로드되지 않습니다. 지연과 함께 정적으로로드해야합니까? 내 응용 프로그램에서 오버 헤드/부풀기/의존성을 원하지 않기 때문에 나는 희망하지 않습니다.타사 순환 DLL 종속성을 해결 하시겠습니까?

1) 무엇이 누락 되었습니까?
2)이 문제를 해결할 방법이 있습니까?
3) 누구나 ter32.dll의 TE 편집에서 텍스트에 액세스하는 다른 방법이 있습니까?

답변

3

DLL을로드하면 로더가 모든 종속성을로드합니다. 이러한 종속성은 각 DLL의 가져 오기 테이블에 나열되며 로더가이를 확인합니다. 아무 것도 할 필요가 없습니다.

따라서 자신이 DLL 의존성을 처리해야한다는 결론에 도달 한 방법을 이해할 수 없습니다. 이 DLL을 비표준 방식으로로드하고 있습니까? WinSxS 종속성 (예 : MS C 런타임이 필요한 경우)에 대한 매니페스트가 필요합니까? 우리가 알아야 할 다른 것이 있습니까?

모두이 DLL을 자신의 프로세스에로드하는 것은 별개의 가상 메모리가있는 다른 프로세스에서 텍스트를 추출하는 데 많은 도움이되지 않는다고 생각합니다. 즉, 텍스트를 추출하려는 현재 시도가 실패 할 것이라는 확신이 듭니다. 가상 메모리 장벽을 해결하는 방법은 후크를 사용하여 다른 프로세스에서 코드를 실행하는 것입니다.

+0

+1 질문 : 편집 권한이있는 GetWindowText (정확한 이름은 다를 수 있음)를 사용할 수 있습니까? 그는 이미 편집을 호스팅하는 창 (이전 질문)을 처리해야합니다. 당신은 어쨌든 그 창에 의해 "parented"된 핸들을 열거 할 수 있습니까? 그렇다면 올바른 방법을 식별 할 수있는 방법이 있다면 GetWindowText API를 사용하여 해당 정보를 얻을 수 있어야합니다. –

+0

@marjan이 컨트롤은 EDIT의 하위 클래스가 아니며 GetWindowText의 내용을 반환하지 않습니다. –

+0

@david - 먼저 감사합니다. 다른 게시물에 많은 도움을 주셨습니다. 나는 여기에 뭔가를 놓치고 있어야합니다 ... (이것은 내 일이 아니다!) 나는 동적으로 ter32.dll을로드하려고 시도했다 :'dllHandle : = LoadLibrary (pwidechar (DllLocation + '\ ter32.dll')); 그리고 그것은 x (먼저 잊어 버렸습니다). 그래서 ... 나는 맹목적으로 비틀 거리며 동적으로 x를 ter32.dll 전에로드했습니다 ... 등등. 주기적인 의존성에 부딪쳤다. 자 ... 이제 오류의 정확한 텍스트를 얻기 위해 다시 시도하고 DLL을로드 중입니다. 이제 루틴을 시도해보십시오 ... 감사합니다! –