![]() |
AVI aus einer DLL
HiHo ( :xmas: ), also ich hab ein kleines Problem, ich wollte mit Hilfe der Code-Library eine DLL-Datei erstellen ([cl]Library: Grafik / Sound / Multimedia[/cl]), das hat ja auch geklappt, und zwar so (Für andere die sowas auch machen möchten erklär ich mal den Anfang, mit dem Rest müsst ihr selbst klarkommen, da ich wie man's sieht nicht weiter weis :warn: ):
Eine Datei Names "MData32.rc" mit folgendem Inhalt erstellt :coder: :
Delphi-Quellcode:
Dann habe ich unter Neu -> Weiter -> DLL-Experte ausgewählt und denn code volgendermaßen verändert :coder: :
ERDEDSDR AVIRES "Erde.avi"
HUNDDLAE AVIRES "Hund.avi" WARTENEI ANIRES "Wart.ani" ENDEAUSM ANIRES "Ende.ani" HAHAHAHA WAVRES "Lach.wav" ICHLPLAN WAVRES "Plan.wav" SCHWULOD WAVRES "Schw.wav" TERMINAT WAVRES "Term.wav" WATWERBI WAVRES "Watw.wav" LOGOMFIR BMPRES "Logo.bmp" MAINICON SYMBOL "Logo.ico"
Delphi-Quellcode:
Beim Compilieren hatt Delphi dann eine Datei Names "MData32.dll" erstellt. Jetzt frage ich mich :gruebel: aber, wie man diese Datei einbindet un z.B.: auf Die 'ERDEDSDR AVIRES "Erde.avi"' zugreift um sie in einem TAnimate Rahmen darzustellen ?!? So bis heute Abend dann, wäre über jede mögliche Lösung erfreut! :thuimb:
library MData32;
{$R 'MData32.res' 'MData32.rc'} {$R *.res} begin end. |
Re: AVI aus einer DLL
Die Units kannst du aus der DLL rausschmeißen.
Dann kuck dir in der Hilfe mal die Klasse TResourceStream an, damit sollte sich schon was anfangen lassen. |
Re: AVI aus einer DLL
Welche Units den ???
:wiejetzt: :gruebel: |
Re: AVI aus einer DLL
Wahrscheinlich diese hier:
Delphi-Quellcode:
uses
SysUtils, Classes; |
Re: AVI aus einer DLL
OK hab ich jetzt gemacht! Aber das beantwortet noch immer nich meine Frage! Wie stell ich das den jetzt an das ich die 'ERDEDSDR AVIRES "Erde.avi"' laden und abspielen kann? OK, mit TResourceStream, aber ich weis ja garnicht wo ich anfangn soll!!
|
Re: AVI aus einer DLL
Da gibt es zwei Möglichkeiten:
Delphi-Quellcode:
FModuleHandle := LoadLibraryEx(PChar(FFileName), 0, LOAD_LIBRARY_AS_DATAFILE);
AnimateV.CommonAVI := aviNone; AnimateV.ResHandle := FModuleHandle; // Hier die Exception If (StrToIntDef(Name, 0) <> 0) then AnimateV.ResID := StrToIntDef(Name, 0) else AnimateV.ResName := Name; AnimateV.Seek(1); AnimateV.Play(1, AnimateV.FrameCount, 0);
Delphi-Quellcode:
Die obere ist die eigentlich korrekte Vorgehensweise. Da dies zumindest bei mir manchmal nicht funktioniert, verwende ich die untere Methode.
FModuleHandle := LoadLibraryEx(PChar(FFileName), 0, LOAD_LIBRARY_AS_DATAFILE);
AnimateV.CommonAVI := aviNone; If (StrToIntDef(Name, 0) <> 0) then SendMessage(AnimateV.Handle, ACM_OPEN, FModuleHandle, StrToIntDef(Name, 0)) else SendMessage(AnimateV.Handle, ACM_OPEN, FModuleHandle, Integer(@Name[1])); SendMessage(AnimateV.Handle, ACM_PLAY, -1, MAKELONG(0, Word(-1))); |
Re: AVI aus einer DLL
OK danke, aber jetzt kommt bei mir diese Meldung: 'AVI kann nicht geöffnet werden' :wall: und das Programm kackt ab! Wie kann ich eigetlich die Position der AVI bestimmen z.B.: bei Erde.avi ?
Ich hab den Sourcecode folgendermaßen verändert:
Delphi-Quellcode:
FModuleHandle := LoadLibraryEx(PChar('MData32.dll'), 0, LOAD_LIBRARY_AS_DATAFILE); Hund.CommonAVI := aviNone; Hund.ResHandle := FModuleHandle; // Hier die Exception <---- Hier kommt der Fehler {If (StrToIntDef(Name, 0) <> 0) then Hund.ResID := StrToIntDef(Name, 0) else Hund.ResName := Name; Hund.Seek(1); Hund.Play(1, Hund.FrameCount, 0); } |
Re: AVI aus einer DLL
Zitat:
Nein, im Ersnt ich hatte ja geschrieben, das die obere Version aus irgendeinem Grund nicht immer klappt, deswegen habe ich ja zwei Beispiele gegeben. Das unter funktioniert immer, allerdings muss man auf den Komfort der Komponente verzichten. |
Re: AVI aus einer DLL
Achso, dann versuch ich das untere! Aber, was sind ACM_OPEN & ACM_PLAY für Variablen? Und wie kan ich die Position der Datei bestimmen, wenn ich (z.B.: in meinem Fall) mehrer sachen in der DLL habe? :gruebel:
|
Re: AVI aus einer DLL
Hallo?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz