getmodulefilename 예제

다음 섹션에서는 이미 새로운 작업을 수행해야 하는 항목을 수정하는 방법을 보여 드리겠습니다. 이런 식으로 난 그냥 말할 수 있습니다 “이 메시지를 처리, 그리고 그것에이 작업을 수행 …” 그리고 당신은 내가 무슨 뜻인지 알 수 있으며 전체 예를 볼수없이 그렇게 할 수 있습니다. 그건 어쨌든 희망, 그래서 주의 😛 먼저 우리가 추가 하려는 코드를 제시 할 것 이다 (즉, 사용자에 게 우리의 프로그램의 파일 이름을 표시 합니다)그리고 난 우리의 프로그램에 통합 됩니다. 나중에 나는 아마 당신에게 코드를 보여주고 당신이 당신의 프로그램에 통합 할 수 있습니다. 이것은 물론 나를 위해 더 나은 나에 대 한 많은 입력 하지 않아도 하 고 그것은 당신을 위해 더 나은 모든 프로그램에 코드를 추가할 수 있을 것입니다 그리고 그냥 내가 제시 하는 것 들. 이 작업을 수행하는 방법을 잘 모르는 경우 섹션에 포함된 예제 zip 파일을 확인하십시오. GetModuleFileName이 반환하는 이 예제의 출력은 다음과 같습니다. 그런 다음 다음 에 대해 작업을 계속하거나 수정할 새 프로젝트에 복사할 수 있습니다. 나는 게임에 대한 플러그인 DLL을 작성하는 것을 포함하는 프로젝트에서 작업하고, 게으른 프로그래머인, 나는 게임 저자가 제공하는 예제를 사용하고 내 요구에 맞게 수정하고 있습니다. MFC DLL과 마찬가지로 DLL의 HINSTANCE에 액세스할 수 없습니다. 이것은 내가 문제의 DLL에 대한 전체 경로를 알아야한다고 결정했을 때 문제를 제기했습니다. 현재 사용자 지정 dll을 보고 하는 NX API 메서드를 알고 있지 않습니다., 하지만 Windows나를 위해 다음 작품 (C11): 함수가 성공 하는 경우 반환 값은 버퍼에 복사 되는 문자열의 길이, 문자에서, null cha 종료를 포함 하지 않는 수 있습니다. 버퍼가 너무 작아서 모듈 이름을 보유할 수 없는 경우 문자열이 null 문자 종료를 포함하여 nSize 문자로 잘리고 함수는 nSize를 반환하며 함수는 마지막 오류를 ERROR_불충분_BUFFER로 설정합니다.

사용자가 창을 클릭할 때 프로그램 이름이 무엇인지 사용자에게 표시하는 기능을 추가합니다. 매우 흥미 롭지 않다, 그것은 기본적으로 메시지를 처리의 묘리를 얻을 수 있습니다. WndProc() : 따라서 해당 코드에 추가한 경우 지금 컴파일합니다. 그래도 문제가 되면 창을 클릭하면 .exe 팝업의 이름이 있는 상자가 표시됩니다. 반환된 문자열은 모듈을 로드할 때 지정한 것과 동일한 형식을 사용합니다. 따라서 경로는 길거나 짧은 파일 이름이 될 수 있으며 접두사 “?”를 사용할 수 있습니다. 자세한 내용은 파일 이름 지정을 참조하십시오. Wow64에서 “C:windowssystem32″에 대한 모든 파일 액세스가 “C:windowsSysWow64″로 리디렉션됩니다. 이것은 파일 시스템 재디렉터를 사용하여 구현VC6 또는 이전에서이 기능이 필요한 사람들을 위해, 연구 VirtualQuery() 기능. 접근 방식은 다소 유사합니다. 당신은 x64 / IA64 OS (윈도우 2003 서버 x64 에디션 등)에서 실행되는 win32 응용 프로그램이있는 경우, 다음 응용 프로그램은 Wow64에서 실행됩니다 당신은 볼 : 때로는 “system32″때로는 “SysWow64″입니다.

Windows XP: 버퍼가 너무 작아서 모듈 이름을 보유할 수 없을 경우 함수는 nSize를 반환합니다. 마지막 오류 코드는 ERROR_SUCCESS로 유지됩니다. nSize가 0이면 반환 값이 0이고 마지막 오류 코드는 ERROR_SUCCESS입니다. MAX_PATH는 를 통해 포함된 편리한 매크로로, Win32 아래에 파일 이름을 저장하는 데 필요한 버퍼의 최대 길이로 정의됩니다. 또한 MAX_PATH를 GetModuleFileName()에 전달하여 버퍼의 크기를 알 수 있습니다. 이제 두 번째 매개 변수에, 다시 우리의 신뢰할 수 있는 참조 설명서에 의존, 우리는 “지정된 모듈의 경로 및 파일 이름을 수신 하는 버퍼에 대 한 포인터”이며 데이터 형식은 LPTSTR (또는 LPSTR 참조 오래 된 경우). LPSTR은 char*와 동일하기 때문에 다음과 같은 char의 배열을 선언 할 수 있습니다 : hInstance 및 szFileName이라는 두 가지 변수를 추가했습니다. GetModuleFileName()을 조회하면 첫 번째 매개 변수가 실행 모듈(프로그램, .exe 파일)을 참조하는 HINSTANCE임을 알 수 있습니다.