Форум » GUI » Как проверить есть ли картинка в EXE файле ? » Ответить

Как проверить есть ли картинка в EXE файле ?

Andrey: Привет всем ! Подскажите как можно в программе проверить, есть ли картинка (например "test.jpg") в EXE-файле, соответственно в ресурсном файле, я включаю картинку. Это нужно для того, чтоб одну программу ставить нескольким пользователям. И в файле настроек ставить разные картинки. Заранее спасибо.

Ответов - 6

gfilatov: Andrey пишет: как можно в программе проверить, есть ли картинка (например "test.jpg") в EXE-файле Попробуй использовать следующую функцию: HB_FUNC( WIN_LOADRESOURCE ) { HANDLE hInstance = NULL; /* Set default return value */ hb_retc_null(); if( hb_winmainArgGet( &hInstance, NULL, NULL ) ) { LPTSTR lpName = HB_TCHAR_CONVTO( hb_parcx( 1 ) ); LPTSTR lpType = HB_TCHAR_CONVTO( hb_parcx( 2 ) ); HRSRC hRes = FindResource( ( HMODULE ) hInstance, ( LPCTSTR ) lpName, ( LPCTSTR ) lpType ); if( hRes ) { HGLOBAL hMem = LoadResource( NULL, hRes ); if( hMem ) { void * pMem = LockResource( hMem ); if( pMem ) hb_retclen( ( char * ) pMem, SizeofResource( NULL, hRes ) ); } } HB_TCHAR_FREE( lpName ); HB_TCHAR_FREE( lpType ); } } Вызов: WIN_LOADRESOURCE( "Имя ресурса", "JPG" ) --> если возврат пустой, то картинки нет

Andrey: Не получилось ! cLogoFile := "Harbour_1.jpg" IF WIN_LOADRESOURCE( cLogoFile, "JPG" ) == "" //NIL MsgStop( "Нет такой картинки в ресурсах: "+cLogoFile+" !", "Ошибка" ) ENDIF Почему то всегда выдает "" ? И выдает предупреждение на эту строчку: if( hb_winmainArgGet( &hInstance, NULL, NULL ) ) А понял ! Если запросить, по "имени ресурса" то все работает ! А как быть с именем файла ?

Andrey: Почему то при сборке с этой новой функцией, выдается предупреждение: Warning W8065 Source\\SBU.prg 535: Call to function 'hb_winmainArgGet' with no prototype in function HB_FUN_WIN_LOADRESOURCE Как сделать, чтоб это предупреждение пропало ?


gfilatov: Andrey пишет: Как сделать, чтоб это предупреждение пропало ? Проверь, чтобы секция С-кода начиналась так (см. выделенный текст): ... #pragma BEGINDUMP #define HB_OS_WIN_32_USED #define _WIN32_WINNT 0x0400 #include <windows.h> #include "hbapi.h" ... HB_FUNC( WIN_LOADRESOURCE ) { ...

Andrey: Не помогает, у меня уже стояло: #include <windows.h> #include "hbapi.h"

SergeJa:



полная версия страницы