Win32 응용 프로그램의 HINSTANCE가 WinMain으로 전달되지만 현재 HINSTANCE를 결정하는 다른 방법이 있습니다 (말할 수없는 경우에 대비하여 Win32 프로그래밍이 새로 도입되었습니다!)? 라이브러리 내부에 창을 만들어야하고 (라이브러리가 크로스 플랫폼이므로) ID는 전달하지 않아도됩니다.현재 HINSTANCE를 결정 하시겠습니까?
답변
를 메모리, GetModuleHandle(NULL);
인스턴스 핸들을 반환 제공하는 경우.
__ImageBase은 특히 라이브러리의 경우 친구입니다. (R. 첸, 아니지만 브라이언 본디으로 연결 한 것과 같은 게시물) 링크 된 블로그 게시물을 읽고 가치가
주 (주석 포함!)
성가신 [GetModuleHandleEx] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms683200.aspx)를'GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS'와 (과) 함께 무시하는 것은 ** 신뢰할 수있는 ** 유일한 방법입니다 모듈 핸들, 그리고 그것은 허용 대답해야합니다. – IInspectable
함수 AfxGetStaticModuleState()는 트릭을 수행 . dll에서 호출하면 함수는 exe 내의 호출이 실행 파일의 핸들을 반환하면 DLL에 대한 핸들을 반환합니다.
DWORD size;
TCHAR fileName [MAX_PATH];
HMODULE hModule = AfxGetStaticModuleState()->m_hCurrentInstanceHandle;
::GetModuleFileName (hModule, fileName, size);
질문에 * winapi * 태그가 지정되어 있습니다. Windows API에는'AfxGetStaticModuleState'가 없습니다. – IInspectable
- 1. 현재 MM 기간을 결정 하시겠습니까?
- 2. IFRAME에서 현재 마우스 위치를 결정 하시겠습니까?
- 3. 현재 커서의 크기를 결정
- 4. 동일한 디렉토리의 파일을 포함하려면 R에서 현재 파일의 위치를 결정 하시겠습니까?
- 5. 레포 크기를 결정 하시겠습니까?
- 6. + 키를 누르는 방법을 결정 하시겠습니까?
- 7. 오디오 녹음 길이를 결정 하시겠습니까?
- 8. WordPress로 jQuery의 버전을 결정 하시겠습니까?
- 9. DOM 요소의 문서를 결정 하시겠습니까?
- 10. 어떤 비주얼 스타일이 사용되는 지 결정 하시겠습니까?
- 11. Android : 경고를 표시 할 현재 컨텍스트 결정
- 12. 사이트를 확인하고 CSS 스타일을 결정 하시겠습니까?
- 13. 브라우저를 통해 프로그래밍 방식으로 DPI를 결정 하시겠습니까?
- 14. LayoutUpdate/ArrangeOverride가 발생하게 된 원인을 결정 하시겠습니까?
- 15. 클래스가 사용하는 메모리 양을 결정 하시겠습니까?
- 16. Android : 앱이 배터리를 소모하는 위치를 결정 하시겠습니까?
- 17. RichEdit 컨트롤 : 텍스트가 변경된시기를 결정 하시겠습니까?
- 18. 가장 많은 경합이있는 잠금을 결정 하시겠습니까?
- 19. JQuery $ .get을 사용하여 반환 값을 결정 하시겠습니까?
- 20. mediawiki를 사용하여 이름 유형을 결정 하시겠습니까?
- 21. 단위 테스트에서 가장 이익이되는 클래스를 결정 하시겠습니까?
- 22. 블랙 베리 프로세서를 프로그래밍 방식으로 결정 하시겠습니까?
- 23. 델파이 : 제네릭의 실제 유형을 결정 하시겠습니까?
- 24. NHibernate 대 Entity Framework 사이를 결정 하시겠습니까?
- 25. SSE2에 대한 프로세서 지원을 결정 하시겠습니까?
- 26. 시간대를 기준으로 전화 번호를 결정 하시겠습니까?
- 27. 세그멘테이션 오류를 일으키는 코드 행을 결정 하시겠습니까?
- 28. 모든 init 함수가 완료된시기를 결정 하시겠습니까?
- 29. 결정
- 30. 결정
완전히 수정되지 않았습니다 : 이것은 exe의 HINSTANCE를 반환합니다. 코드가 DLL에서 실행되면 잘못된 동작이 발생할 수 있습니다. –
@Serge : 실행 파일의 HINSTANCE가 원하는 것입니다. –
+1 : 모듈 이름을 전달하면 해당 함수를 사용하여 DLL의 'HINSTANCE'도 가져올 수 있습니다. 'HINSTANCE'와'HMODULE'은 근대 버전의 Windows에서 본질적으로 동등합니다. –