Ładowanie obrazków z shell32.dll

0

Dlaczego ten kod wywala błąd "Zasób o nazwie 134 nie istnieje", gdy istnieje?

Czemu nie ładuje mi żadnych bitmap, ani ikonek?

procedure TForm1.Button1Click(Sender: TObject);
var
  DllInstance: THandle;
begin
  DllInstance := LoadLibrary('C:\WINDOWS\System32\shell32.dll');
  if DllInstance <> 0 then
  begin
      Image1.Picture.Bitmap.LoadFromResourceName(DllInstance, '134');
    FreeLibrary(DllInstance);
  end
  else
    ShowMessage('Error!');
end;
0

Może zasób 134 to nie bitmapa, tylko np. ikonka?

// Dopisane
Dodatkowo, próbujesz załadować zasób o nazwie '134', a nie o numerze 134. Poszukaj innej funkcji. LoadIcon() powinna być dobra.

// Dopisane
LoadIcon() działa dla ikonki, to chyba logiczne. Jeśli to jest bitmapa, top użyj innej funkcji.

0

Cześć ;)
Nie prościej tak załadować obrazek ?

procedure TForm1.Button1Click(Sender: TObject);
var
 Obrazek:TBitmap;   {$R rysunki.res}
Begin
 Obrazek:=TBitmap.Create;
 Obrazek.LoadFromResourceID(hInstance,134);      //nazwa obrazka jako Integer
 //Obrazek.LoadFromResourceName(hInstance, 'aaa'); //nazwa obrazka jako String
 Image1.Canvas.Draw(0,0,Obrazek);
End;

Domyślam się że chcesz "numerycznie" wywoływać obrazki (jakaś animacja) więc trzeba pamiętać
czy
LoadFromResourceID
czy
LoadFromResourceName

lub najprościej ;)

{$R rysunki.res}
//jako integer
Image1.Picture.Bitmap.LoadFromResourceID(hInstance, 134);
//lub jako string
Image1.Picture.Bitmap.LoadFromResourceName(hInstance, 'aaa');

0

Bitmapa 134 istnieje w shell32.dll.

LoadIcon tez nie działa.

1 użytkowników online, w tym zalogowanych: 0, gości: 1