Audiogenie3 unter Excel 2016 läuft nicht

  • Excel

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von BasicUser.

    Audiogenie3 unter Excel 2016 läuft nicht

    Hallo ,
    ich habe ein Problem beim Einsatz von Audiogenie3 unter Excel 2016 VBA (64Bit). Die .DLL ist in SYSWOW64 hinterlegt und registriert, unter Verweise in VBA auch eingebunden. Der Wrapper ist als Class ebenfalls im Projekt. Wenn ich den Versionsaufruf "Genie.GetAudioGenieVersion" durchführe, so erhalte ich die richtige Antwort. Beim Aufruf einer .MP3-Datei über "Genie.AUDIOAnalyzeFile(strDatei)" jedoch eine Fehlermeldung. Im Debug-Mode ist der Fehler im Class-Modul ersichtlich "AUDIOAnalyzeFileW(StrPtr(FileName))". Scheinbar liefert die Funktion StrPtr einen Wert, den die .DLL nicht erwartet.
    Was muss ich tun, damit Audiogenie läuft, oder funtzt die Sache unter Excel 2016 VBA (64Bit) nicht?

    *Topic verschoben*

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    Die DLL liegt in Windows\SysWOW64 und ist mittels regsvr32 auch registriert. Unter Verweise in VBA von Excel 2016 wird die Typenbibliothek erkannt. Der Verweis ist angeklickt.
    Als Klassenmodul habe ich den Wrapper für VB eingebunden. Er sieht wie folgt aus:
    <Codeschnippsel>
    ' *******************************************************
    ' ******* AUDIOGENIE DLL WRAPPER FOR VISUAL BASIC *******
    ' *******************************************************

    ' * Now you can use this class like the example *
    ' Dim Genie As clsAudioGenie
    ' Set Genie = New clsAudioGenie
    ' Genie.AUDIOAnalyzeFile(file$)
    ' *******************************************************
    ' ******* Copyright 2007-2010 by Stefan Toengi *******
    ' *******************************************************
    Option Explicit
    Private Declare PtrSafe Function AACGetBitRateTypeW Lib "AudioGenie3.dll" () As String
    Private Declare PtrSafe Function AUDIOAnalyzeFileW Lib "c:\windows\syswow64\AudioGenie3.dll" (ByVal FileName As Long) As Integer
    Private Declare PtrSafe Function GetAudioGenieVersionW Lib "AudioGenie3.dll" () As String
    .
    .
    usw
    Public Function AUDIOAnalyzeFile(ByVal FileName As String) As Integer
    AUDIOAnalyzeFile = AUDIOAnalyzeFileW(StrPtr(FileName))
    End Function

    Wie geschrieben, funktioniert die Versionsabfrage z.B. s_rueck=Genie.GetAudioGenieVersion (Genie wurde vorher als clsAudioGenie deklariert) einwandfrei.
    Wenn ich jedoch eine .MP3-Datei über i_rueck=Genie.AUDIOAnalyzeFile(s_Datei) analysieren lassen möchte, erscheint die Fehlermeldung "Typen unverträglich".
    Für mich sieht es so aus, als würde die DLL in der Function AUDIOAnalyzeFile einen long-Wert erwarten, aus StrPtr(Filenmae) jedoch einen double-Wert erhalten. Leider sind meine Kenntnisse auf diesen Sektor weniger als rudimentär. Da die DLL jedoch als 64-Bit tauglich und für VB geeignet dargestellt wird, weiss ich mir nicht zu helfen.
    Office32 oder Office64?

    Ich würde mit der Deklaration spielen
    (ByVal FileName As String)
    (ByVal FileName As LongPtr)
    (ByVal FileName As LongLong)
    (ByVal FileName As Long)

    Ggf. auch mal ByRef

    Und bei der Übergabe Filename oder StrPtr(Filename)

    Oder du analysierst, welche Signatur du tatsächlichbenötigst.
    Vielleicht gibt es ja auch ein Doku zu der Lib.

    BasicUser schrieb:

    Die DLL liegt in Windows\SysWOW64
    Das wiederum lässt auf eine 32Bit-DLL schliessen.
    Gibt's die auch als 64-Bit-Variante?
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Vielen Dank für die Erklärungen. Leider bin ich ein DAU (dümmster anzunehmender User). Ich verlasse mich auf die Angaben die ich hier gefunden habe:
    de.osdn.net/projects/sfnet_audiogenie/releases/
    Nach der Beschreibung ist eine Variante der Audiogenie3.DLL nur für 64 Bit. Diese Version habe ich auch in mein System eingebunden. Wie bereits gesagt, funktioniert der Aufruf zur Abfrage der Versionsnummer einwandfrei. Wenn ich jedoch eine Datei anlysieren möchte, und dass ist zwingend vorgegeben, bevor man weitere Funktionsaufrufe durchführt, erscheint die Fehlermeldung.
    Bezüglich der Frage zu Office 32 oder 64 kann ich nur sagen, dass die Installation für 64 Bit (daher auch meine Hinweise auf Excel 2016 -64Bit) vorgenommen wurde.