Hallo T-Virus,
danke für den Hinweis! Es funktioniert jetzt. Ich habe die Plattform auf x64 umgestellt.
Gruß Loki2020
Hallo TH69,
vielen Dank für deinen Hinweis. Ich habe meinen Code geändert in:
public static extern int AUDIOAnalyzeFileW([MarshalAs(UnmanagedType.LPWStr)] string Filename);
aber es kommt weiterhin eine Fehlermeldung
Fehlermeldung:
System.BadImageFormatException: "Es wurde versucht, eine Datei mit einem falschen Format zu laden. (Ausnahme von HRESULT: 0x8007000B)"
Da ich nicht so firm in C# bin, werde ich wohl weiter mit VBA arbeiten müssen, da hier die DLL ohne Probleme funktioniert.
Hallo Comunity,
Ich beisse mir bei folgendem Problem die Zähne aus:
In Excel 365 benutzte ich zum Auslesen von MP3-Dateien die super funktionierende AudioGenie3.dll. Gerne würde ich diese DLL auch unter C# nutzen, weiss aber nicht wie. Folgenden Ansatz habe ich bisher:
using System;
using System.Runtime.InteropServices;
namespace MyMP3
{
class ID3Bearbeiten
{
[DllImport("AudioGenie3.dll")]
public static extern int AUDIOAnalyzeFileW(UIntPtr Filename); // ? ist das so richtig
public int AUDIOAnalyseFile(string FileName)
{
int Ergebnis = AUDIOAnalyzeFileW(????); // Hier ist das Problem, wie übergebe ich den unten aufgeführten Variablentyp
return Ergebnis;
}
public void ID3Lesen(string strDatei)
{
string strDatei = "D:\\Deep Purple _ Lucifer.mp3";
int IntVorhanden = AUDIOAnalyseFile(strDatei);
}
}
}
Die Doku zur DLL besagt folgendes:
Int16 AUDIOAnayzeFileW(LPCWSTR Filename)
Datentyp Bezeichner Beschreibung
LPCWSTR FileName Name der Datei
Datentyp Beschreibung
LPCWSTR ein Zeiger auf ein Textfeld mit 16bit Unicode Zeichen (UTF-16) terminiert von $0 $0
Als Beispiel ist angegeben: result = AUDIOAnalyzeFileW(FileName)
was nicht ganz richtig ist, denn in Excel-VBA rufe ich auf: result = AUDIOAnalyzeFile (FileName)
In Excel funktioniert ein VB6 Wrapper:
Private Declare PtrSafe Function AUDIOAnalyzeFileW Lib "AudioGenie3.dll" (ByVal FileName As LongPtr) As Integer
Public Function AUDIOAnalyzeFile(ByVal FileName As String) As Integer
AUDIOAnalyzeFile = AUDIOAnalyzeFileW(StrPtr(FileName))
End Function
Falls folgende Angaben noch wichtig sind:
Ich nutze Windows 10 , 64Bit und Office 365