2014-02-14 2 views
2

다른 프로세스에 DLL을로드하는 데 SetWindowHookEx을 사용하고 있지만 32 비트와 64 비트 프로세스를 모두 연결할 수 있어야합니다. 나는 두 개의 별도 DLL이 필요하다고 생각하지만, 두 가지 버전의 "실행기"앱을 만들지 않고도 할 수 있습니까? SetWindowsHookEx에 DLL 핸들을 전달해야하지만 LoadLibrary을 사용할 수 없습니다.32 비트 응용 프로그램에서 64 비트 프로세스 후크

+0

(아마도) 달라질 수 있습니다. 이것을보십시오 [응답] (http://stackoverflow.com/a/8484244/2970947). –

+0

C++ 언어 태그를 대상으로하는 정확한 플랫폼을 제공하는 것으로 대체하는 것을 고려하십시오. 언어 문제가 아닌 런타임 링커 문제 인 것으로 나타납니다. –

+0

다른 dll이 필요합니다. http://support.microsoft.com/kb/282423. 정상적인 물건 (당신이하려고하는 것이 아니라)을 위해 COM이 충분할 것입니다. –

답변

1

out-of-process COM + 개체를 사용하여 DLL을 호스팅하십시오. 이 방법을 사용하면 32 비트에서 64 비트 코드를 호출 할 수 있습니다. 따라서 대부분의 실행 코드는 32 또는 64 비트 COM + 객체를로드하기로 결정한 if 문을 제외하고 동일하게 유지됩니다. 객체는 적절한 버전의 DLL을 프로세스에로드하도록 코딩 할 수 있습니다. 하나는 64 비트 프로세스 용이고 다른 하나는 32 비트 용입니다.

관련 문제