Я пробовал это как последние 3 дня и до сих пор не могу заставить его работать. WINAPI FindResource
Выдает функцию и ошибка 1813: это означает, что тип ресурса не найден. Я использую eclipse, поэтому нет файла .RC или файла resource.h, поэтому я загрузил свой exe-файл LoadLibraryA
а затем использовал HANDLE
в FindResourceA
, Вот мой код:
HRSRC hRsrc;
HMODULE hExe;
/** Loading resource file in the program */
if (!(hExe = LoadLibraryA(TEXT(filename)))) {
printf("Cannot load resource error: %lu \n", GetLastError());
return 0;
}
printf("Resource file %s is loaded to the program \n", filename);
/** Finding resource */
if (!(hRsrc = FindResourceA(hExe, MAKEINTRESOURCE(10), "EXE"))) {
printf("Cannot find resource error: %lu \n", GetLastError());
return 0;
}
puts("Resource found");
Теперь я понимаю, что MAKEINTRESOURCE(10)
позволяет нам определить пользовательский ресурс. Это правильно или я просто ошибаюсь? В типе ресурса я попытался дать «EXE», «BIN», «Exehead» и RT_RCDATA
но ничего не работает, и все равно выдает мне ту же ошибку, что и раньше. Все решения в Интернете с .RC
а также resource.h
файлы на Visual Studio
Есть ли что-нибудь, чтобы работать с затмением? Спасибо
Чтобы загрузить конкретный ресурс из двоичного файла, вам необходимо знать тип ресурса и его идентификатор.
Если один из них или оба не знают, вы можете использовать функцию EnumResourceTypes()
и / или EnumResourceNames()
выяснить.
Пример того, как использовать EnumResourceTypes()
можно найти здесь: http://msdn.microsoft.com/en-us/library/windows/desktop/ms648008%28v=vs.85%29.aspx#_win32_Creating_a_Resource_List
Обновить:
Если редактор ресурсов, предоставляемый MS, недоступен, это свободно инструмент может помочь: http://www.resedit.net/ Я использовал его и работал для своих нужд. Во всяком случае, я не знаю его нынешнее состояние.
Ошибка правильная. Нет ресурса типа "EXE"
в вашем файле. Вы сами так сказали, когда говорите, что у вас нет .RC
файл. Ресурсы определены в .RC
файлы, и если у вас его нет, то у вас нет ресурсов. Добавить ресурс типа "EXE"
с идентификатором ресурса 10, вам нужно создать .RC
файл, добавьте его в свой проект и скажите
10 EXE "somefile"
где «somefile» — это файл, содержимое которого вы хотите использовать в качестве данных ресурса.
Если ваша IDE не поддерживает .RC
файлы, то вы не сможете добавлять ресурсы через IDE. Вам нужно будет добавить их другим способом, скажем, через шаг постобработки.
Но дело в том, что вы получаете ошибку «тип ресурса не найден», потому что вы ничего не сделали для создания ресурса этого типа. Что ты ожидал?