HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Hang és videó lejátszása DLL-ből


Példaprogram letöltése

141567 bájt

Ebben a példában készítünk egy DLL állományt, amelyben erőforrásként eltárolunk egy AVI és egy WAV állományt. A DLL-ben létrehozunk egy-egy függvényt az erőforrások kívülről történő eléréséhez. A függvények segítségével az erőforrások tartalmát a függvények visszatérési értékében adjuk át, hogy azokat többféle módon felhasználhassuk.

Első lépésben létre kell hoznunk egy RC állományt, amelyből erőforrást készíthetünk. Az AVI, WAV és a létrejövő RC állományokat helyezzük el ugyanabban a könyvtárban. Az RC állományban kell felsorolnunk az erőforrásokat. Az állomány neve bármi lehet, a mellékelt példaprogramban a Resources.RC elnevezést használtuk.
TESTSND WAVE TestSnd.wav
COOL AVI Cool.avi
Az első helyen az erőforrás leendő neve szerepel, a másodikon a típusa, az utolsón pedig a jelenlegi fizikai állomány neve található.
A Delphi Bin alkönyvtárában található a BRCC32.EXE nevű program, amely az RC állományt lefordítja RES kiterjesztésű, erőforrás állománnyá. Ennek a programnak paraméterként az RC állomány elérési útját és nevét kell megadni.
Hozzunk létre egy új DLL-t.
A létrejövő forráskódban helyezzük el az alábbi sort.
{$R resources.res}
Ezzel az erőforrások a DLL fordításakor bekerülnek a DLL állományba.
Az erőforrások kívülről történő eléréséhez egy-egy interfész függvényt kell biztosítanunk.
function GetAVI: TMemoryStream; stdcall;
function GetSound: TMemoryStream; stdcall;
Mindkét esetben egy TMemoryStream-et használunk az erőforrás átadására. A két függvényben ugyanazokat a lépéseket kell elvégezni, csak az erőforrások különböznek. Az erőforrások megkereséséhez THandle típusú változók használata is szükséges. Ez a típus a Windows unitban van implementálva.
Egy erőforrást a FindResource függvény segítségével kereshetünk meg.
h:=FindResource(HInstance,'COOL','AVI');
Ha az erőforrás létezik, akkor a LoadResource függvénnyel lekérdezhetjük annak azonosítóját, a SizeOfResource függvénnyel pedig annak méretét.
r:=LoadResource(HInstance,h);
Si:=SizeOfResource(HInstance,r);
Létre kell hoznunk egy mutatót, amely a kiválasztott erőforrásra fog mutatni.
p:=LockResource(r);
Ezután az erőforrás tartalmát egy TMemoryStream segítségével, a függvény visszatérési értékeként átadhatjuk.
Stream:=TMemoryStream.Create;
Stream.Write(p^,Si);
Stream.Seek(0,soFromBeginning);
Result:=Stream;
Ha elkészítettük a két függvényt, az exports kulcsszó után fel kell sorolnunk azok neveit, hogy kívülről elérhetővé váljanak.
exports
  GetAVI, GetSound;
A DLL önmagában nem futtatható, a Project menü bármelyik Compile menüpontjával lefordíthatjuk.
A DLL-t felhasználó alkalmazásban fel kell vennünk a függvényhivatkozásokat.
function GetSound: TMemoryStream; stdcall; external 'WAV_AVI.dll';
function GetAVI: TMemoryStream; stdcall; external 'WAV_AVI.dll';
Az erőforrásokat egy egyszerű értékadással lekérdezhetjük. A TMemoryStream objektumok létrehozásáról a DLL-ben már gondoskodtunk.
Stream:=GetAVI;
A DLL-ben eltárolt videót és hangot tetszőleges módon felhasználhatjuk. A mellékelt példaprogramban TAnimate és TMediaPlayer komponensek segítségével játsszuk le őket.

Cikksorozat

#IDKategóriaCikk címeSorozat
2535C#Oracle adatbázis-elérés alapjai1. rész
2546C#SQL utasítások végrehajtása2. rész
2557C#Tárolt eljárások és függvények fejlesztése3. rész
2565C#Csomagok fejlesztése4. rész
2573C#Adatbázis triggerek fejlesztése5. rész
2581C#Kivételek kezelése PL/SQL-ben6. rész
3276C#Kurzorok deklarálása PL/SQL-ben7. rész
3297C#Tömb adattípus létrehozása és kezelése PL/SQL-ben8. rész
3326C#Adatbevitel tömb-adattípussal rendelkező oszlopokba9. rész
3357C#Adattárolás beágyazott tábla-típusú oszlopokban10. rész
3388C#Adatok beszúrása beágyazott táblákba11. rész
3418C#Index létrehozása PL/SQL-ben12. rész
3444C#Szekvenciák használata13. rész
3488C#Adatok betöltése állományokból14. rész
1765DelphiOracle adatbázis-elérés alapjai15. rész
1774DelphiSQL utasítások végrehajtása16. rész
1784DelphiTárolt eljárások és függvények fejlesztése17. rész
1794DelphiCsomagok fejlesztése18. rész
1803DelphiAdatbázis triggerek fejlesztése19. rész
1815DelphiKivételek kezelése PL/SQL-ben20. rész
3256DelphiKurzorok deklarálása PL/SQL-ben21. rész
3287DelphiTömb adattípus létrehozása és kezelése PL/SQL-ben22. rész
3318DelphiAdatbevitel tömb-adattípussal rendelkező oszlopokba23. rész
3348DelphiAdattárolás beágyazott tábla típusú oszlopokban24. rész
3377DelphiAdatok beszúrása beágyazott táblákba25. rész
3408DelphiIndex létrehozása PL/SQL-ben26. rész
3436DelphiSzekvenciák használata27. rész
3467DelphiAdatok betöltése állományokból28. rész


Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2003 évkönyv 120. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |