Как загрузить строку из ресурса другого процесса? - PullRequest
1 голос
/ 28 июля 2010

Мне нужно загрузить строку, которая помещается в ресурс dll другого процесса, при условии, что процесс будет запущен во время вызова.

Я попробовал следующий код -

    HMODULE hRes = ::LoadLibrary(_T("SomeResource.dll"));

    TCHAR buffer[50];
    ::LoadString(hRes, IDS_SOME_ID, buffer, 50);

Этот код работает нормально при работе в режиме отладки. Но в режиме выпуска LoadLibrary возвращает ноль. Почему?

Я что-то упустил? Пожалуйста, помогите мне.

Я использую компилятор VC7.1.

Ответы [ 2 ]

1 голос
/ 28 июля 2010

Возможно, обнаружит "SomeResource.dll". При запуске из отладчика исполняемый файл запускается с пути проекта. Если DLL можно найти оттуда. все в порядке. При запуске из-за пределов среды IDE исполняемый файл запускается из другой папки. Вполне возможно, что DLL не может быть найден оттуда.

0 голосов
/ 28 июля 2010

Я не претендую на ответ, но могу добавить следующий код для диагностики проблемы:

if( hRes == 0 ){
LPVOID lpMsgBuf;
DWORD dw = GetLastError();

FormatMessage(
    FORMAT_MESSAGE_ALLOCATE_BUFFER | 
    FORMAT_MESSAGE_FROM_SYSTEM,
    NULL,
    dw,
    MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
    (LPTSTR) &lpMsgBuf,
    0, NULL );


MessageBox(NULL, (LPTSTR)lpMsgBuf, "Error", MB_OK);

LocalFree(lpMsgBuf);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...