Salve a tutti.
Con gli opportuni strumemti ho generato da due *.avi una dll (popdll.dll) la quale contiene due risorse 'cool' e 'pr'
Pensavo, quindi, di visualizzare il contenuto utilizzando MediaPlayer, ma non ci
sono riuscito, viene visualizzato il seguente messaggio di errore: ...raised execption
class eresenotfound with message 'Resource cool not found...
Questo è stato fatto:
unit usingRes;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Spin, StdCtrls, ExtCtrls, Buttons, ComCtrls, MPlayer;
type
TForm1 = class(TForm)
Button1: TButton;
GroupBox6: TGroupBox;
Button2: TBitBtn;
MediaPlayer1: TMediaPlayer;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
ResDLLMod : THandle;
TempFileList : TStringList;
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
uses MMSystem;
procedure TForm1.FormCreate(Sender: TObject);
begin
TempFileList := TStringList.create;
ResDLLMod := LoadLibrary('popdll.dll');
if ResDLLMod=0 then
raise Exception.Create('Cannont load resource library.');
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
ResSt : TResourceStream;
TempFile, TempPath : pchar;
begin
if ResDLLMod=0 then exit;
ResSt := TResourceStream.Create(ResDLLMod, 'COOL', pchar('avi'));
try
GetMem(TempPath, MAX_PATH);
GetMem(TempFile, MAX_PATH);
GetTempPath(MAX_PATH, TempPath);
GetTempFileName(TempPath, 'RES', 0, TempFile);
StrCopy(TempFile, StrCat(TempFile, '.avi'));
TempFileList.add(string(TempFile));
ResSt.SaveToFile(string(TempFile));
MediaPlayer1.Close;
MediaPlayer1.filename := string(TempFile);
MediaPlayer1.wait := true;
MediaPlayer1.open;
MediaPlayer1.Play;
finally
FreeMem(TempPath);
FreeMem(TempFile);
ResSt.free;
end;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
TempFileList.free;
end;
end.
.................
Note:
La dLL è stata creata con un altro proggetto
è stata quindi inserita nella stessa directory del nuovo progetto
con Resource Hacker le avi vengono visualizzate.
Spero che mi possiate aiutare
Ciao da Matteo