Das hat mit irgendwelchen programminternen Strukturen rein gar nichts zu tun.
Da stimmt einfach die Signatur des Dienstes oder einer seiner DLLs nicht. Ist deine
DLL denn signiert?
Nein..
Das ist nur ein Wrapper der die Funktionen von meiner
DLL weiterleitet.
Theoretisch kann ich die Classe auch direkt im Projekt einbinden.
Die
DLL ist aber nötig da ein Marshalling in VB.NET nicht so ohne weiteres funktioniert. (deshalb habe ich diese auch in C# erstellt)
Damit ich nicht zwei Classen dafür schreiben muss.
Delphi!
Delphi-Quellcode:
//Definition der Records für die variablen Parameter bei Create bzw. Execute
//WMP: Handle des Fensters braucht nicht definiert werden, da es bereits beim init mitgegeben wird
PBASSVIS_EXEC = ^TBASSVIS_EXEC;
TBASSVIS_EXEC =
record
Pluginfile : PAnsiChar;
// Dateiname des Plugins
// für Sonique, Winamp, BassBox
AMP_UseOwnW1 : DWORD;
// Flag für Winamp (ownHDC)
AMP_UseOwnW2 : DWORD;
// Flag für Winamp (ownHDCW2)
AMP_Moduleindex : DWORD;
// Modul-index für Winamp
AMP_UseFakeWindow : BOOL;
// Create a own Window for WindowMessages
SON_ParentHandle : HWND;
// Painthandle für Sonique
SON_ConfigFile : PAnsiChar;
// Dateiname der Konfiguration für Sonique
SON_Flags : DWORD;
// Flags für Sonique
SON_UseOpenGL : BOOL;
// Use OpenGL instead of GDI
SON_ViewportWidth : integer;
// Stretch Width
SON_ViewportHeight : integer;
// Stretch Height
SON_ShowPrgBar : BOOL;
// Progressbar anzeigen
SON_ShowFPS : BOOL;
// Frames pro Sekunde anzeigen
SON_UseCover : BOOL;
// Cover anzeigen
WMP_PluginIndex : integer;
// Pluginindex für WMP;
WMP_PresetIndex : integer;
// Presetindex für WMP;
WMP_SrcVisHandle : HWND;
// ContainerVisHandle für WMP;
BB_ParentHandle : HWND;
// Parent Windowhandle
BB_Flags : DWORD;
// Flags für BassBox selbe wie Sonique
BB_ShowFPS : BOOL;
// Frames pro Sekunde anzeigen
BB_ShowPrgBar : BOOL;
// Progressbar anzeigen
AIMP_PaintHandle : HDC;
// Painthandle für Aimp2
AIMP_Flags : DWORD;
// Flags für Aimp2
Width, Height : integer;
// Fensterhöhe und Breite
Left, Top : integer;
// Left und Top;
end;
c#
Code:
[Serializable, StructLayout(LayoutKind.Sequential)]
public sealed class BASSVIS_EXEC
{
[MarshalAs(UnmanagedType.LPStr)]
public string PluginFile = string.Empty;
public int AMP_UseOwnW1;
public int AMP_UseOwnW2;
public int AMP_ModuleIndex;
public bool AMP_UseFakeWindow;
public IntPtr SON_ParentHandle = IntPtr.Zero;
[MarshalAs(UnmanagedType.LPStr)]
public string SON_ConfigFile = string.Empty;
public BASSVISFlags SON_Flags;
public bool SON_UseOpenGL;
public int SON_ViewportWidth;
public int SON_ViewportHeight;
[MarshalAs(UnmanagedType.Bool)]
public bool SON_ShowPrgBar;
[MarshalAs(UnmanagedType.Bool)]
public bool SON_ShowFPS;
[MarshalAs(UnmanagedType.Bool)]
public bool SON_UseCover;
public int WMP_PluginIndex;
public int WMP_PresetIndex;
public IntPtr WMP_SrcVisHandle = IntPtr.Zero;
public IntPtr BB_ParentHandle = IntPtr.Zero;
public BASSVISFlags BB_Flags;
[MarshalAs(UnmanagedType.Bool)]
public bool BB_ShowFPS;
[MarshalAs(UnmanagedType.Bool)]
public bool BB_ShowPrgBar;
public IntPtr AIMP_PaintHandle = IntPtr.Zero;
public BASSVISFlags AIMP_Flags;
public int Width;
public int Height;
public int Left;
public int Top;
public BASSVIS_EXEC(string filename)
{
this.PluginFile = filename;
}
}
Habe BOOL in C# als UnmanagedType gemarshallt da scheint es vielleicht Probleme zu geben
Kann dies ein laden der hwinterfacex64.sys verhindern?
Denke mal nicht.
Nachdem ich diese drei variablen addiert habe
Delphi-Quellcode:
SON_ShowPrgBar : BOOL; // Progressbar anzeigen
SON_ShowFPS : BOOL; // Frames pro Sekunde anzeigen
SON_UseCover : BOOL; // Cover anzeigen
Scheint da irgendetwas nicht mehr zu funktionieren.
Deshalb auch die frage nach dem Limit.
gruss