Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > Вопрос по ф-ции LoadLibraryEx


Автор: AndreySol 13.7.2005, 05:46
ОС - WinMe.
Есть такой код:
Код

HMODULE hExe = ::LoadLibraryEx(FilePathLoad, NULL, LOAD_LIBRARY_AS_DATAFILE | LOAD_WITH_ALTERED_SEARCH_PATH);
if(hExe == NULL)
{    // собираем строку расшифровки кода ошибки
    LPVOID lpMsgBuf;
    if(FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR) &lpMsgBuf, 0, NULL ))
    {
        // сообщаем об ошибке
        MessageBox((LPCTSTR)lpMsgBuf, "Ошибка загрузки модуля !", MB_OK | MB_ICONERROR);
    }

    // Free the buffer.
    LocalFree(lpMsgBuf);
}

Так вот для большинства файлов все нормально загружается, а к примеру "c:\windows\freecell.exe" или "c:\windows\CLIPBRD.EXE" дает ошибку:
"Была сделана попытка загрузить программу, имеющую неверный формат".
А при попытке загрузить "c:\windows\MSOWS419.DLL" - вообще прога вылетает.
Объясните, кто знает, что такого неверного в игрушке "Солитер" или Буфере обмена и как подобные файлы все же можно загрузить типа LoadLibraryEx ?
Я покопался в MSDN нашел там ф-цию LoadLibraryEx32W, насколько понял по англицки - что-то о загрузке старых 16-битных файлов. Хотел проверить будет ли работать, но не получается - h-файл добавил а вот lib-файл не знаю какой - в MSDN ничего не сказано, а без него ошибки линкера.
Может кто знает, какой lib-файл нужен ?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)