Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#3

Re: VB_NET Parameter zuweisen

  Alt 14. Dez 2009, 18:37
Zitat von Die Muhkuh:
Ja
das ist Superp

Habe hier ein Problem.
Ich habe in VB.NET eine Datei erstellt die läuft in der Developer Umgebung wenn ich sie debugge einwandfrei
Sobald ich sie aber als eigenständige EXE laufen lasse stürzt die Anwendung ab.
Nur in Win7 64BIT auf x86 Systemen läuft es einwandfrei.

Bin mir jetzt nicht sicher ob es an den Parametern liegt die ich NET übergebe.

Delphi-Quellcode:
Delphi..
{' UNIT BassVis.pas
'--------------------------- BassVis API Module -----------------------------
' BassVis ADD-ON for Bass Audio Library
' Copyright © 2006-2007 BrewIdeas@Emil Weiss, All Rights Reserved
'
' Author(s) of this Unit: Emil Weiss
'
' Code was written in and formatted for 10pt Courier New
'----------------------------------------------------------------------------}


unit BassVis;

interface

uses
  Windows;

type
  HVIS = DWORD;
  QWORD = Int64;

const

  dllfile = 'bass_vis.dll'; //filename of the DLL
  
  // BASS_SONIQUEVIS_CreateVis flags
  BASS_VIS_NOINIT = 1;

  // Config Flags
  BASS_VIS_CONFIG_FFTAMP = 1;
  BASS_SONIQUEVIS_CONFIG_FFT_SKIPCOUNT = 2; // Skip count range is from 0 to 3 (because of limited FFT request size)
  BASS_SONIQUEVIS_CONFIG_WAVE_SKIPCOUNT = 3; // Skip count range is from 0 to (...) try it out, whenever Bass crashes or does not return enough sample data
  BASS_SONIQUEVIS_CONFIG_SLOWFADE = 4; // Dim light colors to less than half, then slowly fade them out
  BASS_SONIQUEVIS_CONFIG_RENDERTIMING = 5; // RenderTiming default = 16 ms (min 10)
  BASS_SONIQUEVIS_CONFIG_USESLOWFADE = 6; // use VideoProc or not , 0/off 1/on


  // BASS_VIS_FindPlugin flags
  BASS_VIS_FIND_RECURSIVE = 5;

  //Plugin arten
  BASSVISKIND_NONE = 0; // keins aktiv
  BASSVISKIND_WINAMP = 1; // Winamp
  BASSVISKIND_SONIQUE = 2; // Sonique
  BASSVISKIND_WMP = 3; // WMP
  BASSVISKIND_BASSBOX = 4; // BassBox
  BASSVISKIND_AIMP2 = 5; // Aimp2
  
type

  TBASSVIS_KIND_T = integer;

  PBASSVIS_PARAM = ^TBASSVIS_PARAM;
  TBASSVIS_PARAM = record
    VisHandle : HVIS; // VisHandle
    VisGenWinHandle : HWND; // General Vis Window Handle W5
    Kind : TBASSVIS_KIND_T; // Aktive Plugin Art
  end;

  //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
    SON_PaintHandle : HDC; // Painthandle für Sonique
    SON_ConfigFile : PAnsiChar; // Dateiname der Konfiguration für Sonique
    SON_Flags : DWORD; // Flags für Sonique
    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;

  PBASSVIS_INFO = ^TBASSVIS_INFO;
  TBASSVIS_INFO = record
    SongTitle : PAnsiChar; // Titel mit vorstehener TitelNr ('1. ')
    Songfile : PAnsiChar; // SongTitel incl. Pfad
    pos : DWORD; // 1000 * Aktuelle Position im Stream
    len : DWORD; // Stream länge
    PlaylistPos : DWORD; // Playlist Position
    Playlistlen : DWORD; // Playlist einträge
    SampleRate : integer; // SämpleRate
    BitRate : integer; // BitRate
    Duration : DWORD; // abgelaufen Zeit
    Channels : integer; // Kanäle default 2 (stereo)

  end;

  TPlayState = (psError = 99, psStop = 0, psPlay = 1,
                   psIsPlaying = 2, psPause= 3,
                   psPrevTitle = 4, psNextTitle = 5,
                   psSetPlaylistTitle = 6, psGetPlaylistTitlePos = 7,
                   psSetPlaylistPos = 8, psGetSelectedTitlePos = 9,
                   psPlaylistClear = 10, psAddPlaylistTitle = 11);


TBASSVIS_STATECALLBACK = procedure(NewState:TPlayState); stdcall;

function BASSVIS_Init(Kind: TBASSVIS_KIND_T;
    AppHandle: HWND;
    WinHandle: HWND
): BOOL; stdcall; external dllfile;


function BASSVIS_FindPlugins(Kind: TBASSVIS_KIND_T;
    PluginPath: PAnsiChar;
    Searchflags: DWORD;
    delimiter : AnsiChar = ','
): PAnsiChar; stdcall; external dllfile;


function BASSVIS_GetPluginHandle(Kind: TBASSVIS_KIND_T;
    Pluginfile: PAnsiChar
): DWORD; stdcall; external dllfile;


procedure BASSVIS_ExecutePlugin(Param: PBASSVIS_EXEC;
    var Base: TBASSVIS_PARAM
); stdcall; external dllfile;


function BASSVIS_RenderChannel(Param: PBASSVIS_PARAM;
    channel: DWORD
): BOOL; stdcall; external dllfile;


function BASSVIS_StartRecord(Param: PBASSVIS_PARAM;
    SampleRate: integer = 44100;
    Channels: integer = 2
): BOOL; stdcall; external dllfile;


function BASSVIS_Config(Param: PBASSVIS_PARAM;
    Entry: integer = 0
): BOOL; stdcall; external dllfile;


function BASSVIS_SetInfo(Param: PBASSVIS_PARAM;
    Infos: PBASSVIS_INFO
): BOOL; stdcall; external dllfile;


function BASSVIS_Resize(Param: PBASSVIS_PARAM;
    Left,Top,Width,
    Height: DWORD
): BOOL; stdcall; external dllfile;


function BASSVIS_SetFullscreen(Param: PBASSVIS_PARAM;
    SourceHandle, DestHandle: HWND;
    SourceLeft, SourceTop,
    SourceWidth, SourceHeight: DWORD;
    FullScreenFlag: Boolean;
    FullScreeWidth, FullScreenHeight: DWORD
): BOOL; stdcall; external dllfile;


function BASSVIS_GetModulePresetCount(Param: PBASSVIS_PARAM;
    PluginName: PAnsiChar
): integer; stdcall; external dllfile;


function BASSVIS_GetModulePresetName(Param: PBASSVIS_PARAM;
    index: integer;
    PluginName: PAnsiChar = nil
): PAnsiChar; stdcall; external dllfile;


function BASSVIS_GetModulePresetNameList(param: PBASSVIS_PARAM;
   Pluginname:PAnsiChar = NIL
):PAnsiChar;stdcall; external dllfile;


function BASSVIS_GetOption(Param: PBASSVIS_PARAM;
    option: integer
): integer; stdcall; external dllfile;


function BASSVIS_SetOption(Param: PBASSVIS_PARAM;
    option: integer;
    Value: integer
): BOOL; stdcall; external dllfile;


function BASSVIS_SetPlayState(Param: PBASSVIS_PARAM;
    State: TPlayState;
    Value: integer = -1;
    Title: PAnsiChar = nil
): integer; stdcall; external dllfile;


procedure BASSVIS_SetVisPort(Param: PBASSVIS_PARAM;
    WindowHandle: HWND;
    ContainerHandle: HWND;
    x, y, Width, Height: integer
); stdcall;external dllfile;

function BASSVIS_Clicked(Param: PBASSVIS_PARAM;
    x, y: DWORD
): BOOL; stdcall;external dllfile;

function BASSVIS_GetPluginName(Param: PBASSVIS_PARAM): PAnsiChar; stdcall; external dllfile;
procedure BASSVIS_Free(Param: PBASSVIS_PARAM; var Base: TBASSVIS_PARAM); stdcall; external dllfile;
function BASSVIS_GetVersion: PAnsiChar; stdcall; external dllfile;
procedure BASSVIS_Quit(Param: PBASSVIS_PARAM);stdcall; external dllfile;

//Spezial für Winamp
procedure BASSVIS_WINAMP_SetStateCallback(callback:TBASSVIS_STATECALLBACK);stdcall;external dllfile;
procedure BASSVIS_WINAMP_RemoveCallback;stdcall;external dllfile;

//Spezial für Sonique
function BASSVIS_SONIQUEVIS_RenderToDC(Kind: TBASSVIS_KIND_T; handle: HVIS; channel: DWORD; canvas: HDC): boolean; stdcall; external dllfile;
function BASSVIS_SONIQUEVIS_RenderToDC2(Kind: TBASSVIS_KIND_T; handle: HVIS; Data, fft: Pointer; canvas: DWORD; flags, pos: DWORD): boolean; stdcall; external dllfile;

//Spezial für WMP
function BASSVIS_SetModulePreset(Param: PBASSVIS_PARAM;index: integer): BOOL; stdcall; external dllfile;

implementation

end.
und VB.NET
Code:
Imports System.Runtime.InteropServices

Module modBassVis

    'Module containing the public declares to the BassVis library

    ' BASS_SONIQUEVIS_CreateVis flags
    Public Const BASS_VIS_NOINIT As Integer = 1

    ' BASS_SONIQUEVIS_SetConfig flags
    Public Enum BASSVIS_CONFIGFLAGS
        BASS_CONFIG_FFTAMP = 1                     ' FFTConfig for Winamp, Sonique, Wmp
        BASS_SONIQUEVIS_CONFIG_FFT_SKIPCOUNT = 2   ' Skip count range is from 0 to 3 (because of limited FFT request size)
        BASS_SONIQUEVIS_CONFIG_WAVE_SKIPCOUNT = 3  ' Skip count range is from 0 to (...) try it out, whenever Bass crashes or does not return enough sample data
        BASS_SONIQUEVIS_CONFIG_SLOWFADE = 4        ' Dim light colors to less than half, then slowly fade them out
        BASS_SONIQUEVIS_CONFIG_RENDERTIMING = 5    ' RenderTiming default = 16 ms (min 10)
        BASS_SONIQUEVIS_CONFIG_USESLOWFADE = 6     ' use VideoProc or not , 0/off 1/on
    End Enum

    ' BASS_VIS_FindPlugin flags
    Public Const BASS_VIS_FIND_RECURSIVE As Integer = 4

    ' Plugin Kind
    Public Enum BassVisKind
        BASSVISKIND_NONE = 0
        BASSVISKIND_WINAMP = 1
        BASSVISKIND_SONIQUE = 2
        BASSVISKIND_WMP = 3
        BASSVISKIND_BASSBOX = 4
        BASSVISKIND_AIMP2 = 5
    End Enum

    ' Plugin Parameter
    <StructLayout(LayoutKind.Sequential)> _
    Public Structure BASSVIS_PARAM
        Friend Vishandle As Integer      ' VisHandle
        Friend VisGenWinhandle As Integer ' General Vis Window Handle
        Friend Kind As BassVisKind       ' Plugin Kind (BASSVISKIND_NONE, BASSVISKIND_WINAMP, BASSVISKIND_SONIQUE)
    End Structure

    ' Definition der Typen f&#65533;r die variablen Parameter bei Create bzw. Execute
    <StructLayout(LayoutKind.Sequential)> _
    Public Structure BASSVIS_EXEC
        Friend Pluginfile As String       ' Dateiname des Plugins f&#65533;r Sonique und Winamp
        Friend AMP_UseOwnW1 As Integer    ' Flag f&#65533;r Winamp False =(Render Winamp5 im eigenen Window) 0=aus,1=an
        Friend AMP_UseOwnW2 As Integer    ' Flag f&#65533;r Winamp False =(Render Winamp2 im eigenen Window) 0=aus,1=an
        Friend AMP_Moduleindex As Integer ' Modul-index f&#65533;r Winamp
        Friend SON_PaintHandle As IntPtr  ' Painthandle f&#65533;r Sonique
        Friend SON_ConfigFile As String   ' Dateiname der Konfiguration f&#65533;r Sonique
        Friend SON_Flags As Integer       ' Flags f&#65533;r Sonique
        Friend WMP_PluginIndex As Integer ' Pluginindex f&#65533;r WMP;
        Friend WMP_PresetIndex As Integer ' Presetindex f&#65533;r WMP
        Friend WMP_SrcVisHandle As IntPtr ' ContainerVisHandle f&#65533;r WMP
        Friend BB_ParentHandle As IntPtr  ' Parent Windowhandle
        Friend BB_Flags As Integer        ' Flags f&#65533;r BassBox selbe wie Sonique
        Friend BB_ShowFPS As Boolean      ' Frames pro Sekunde anzeigen
        Friend BB_ShowPrgBar As Boolean   ' Progressbar anzeigen
        Friend AIMP_PaintHandle As Integer ' Painthandle für Aimp2
        Friend AIMP_Flags As Integer      ' Flags für Aimp2
        Friend Width As Integer           ' Fensterbreite
        Friend Height As Integer          ' Fensterh&#65533;he
        Friend Left As Integer            ' Top
        Friend Top As Integer             ' Left
    End Structure

    <StructLayout(LayoutKind.Sequential)> _
    Public Structure BASSVIS_INFO
        Friend SongTitle As String        ' SongTitel ohne Pfad
        Friend Songfile As String         ' SongFile incl. Pfad (StreamFile)
        Friend pos As Integer             ' StreamPos = 1000*StreamPos
        Friend len As Integer             ' Stream l&#65533;nge
        Friend PlaylistPos As Integer     ' PlaylistPos minimal > 0
        Friend Playlistlen As Integer     ' Playlist l&#65533;nge
        Friend SampleRate As Integer      ' Samplerate default = 44100
        Friend BitRate As Integer         '
        Friend Duration As Integer        '
        Friend Channels As Integer        ' 2
    End Structure


    Public Enum BASSVIS_PLAYSTATE
        psError = -1
        psStop = 0
        psPlay = 1
        psIsPlaying = 2
        psPause = 3
        psPrevTitle = 4
        psNextTitle = 5
        psSetPlaylistTitle = 6
        psGetPlaylistTitlePos = 7
        psSetPlaylistPos = 8
        psGetSelectedTitlePos = 9
        psPlaylistClear = 10
        psAddPlaylistTitle = 11
    End Enum


    'Core functions for initalizing BASSVIS and Find Plugins of any kind
    Public Declare Function BASSVIS_Init Lib "bass_vis.dll" ( _
        ByVal Kind As BassVisKind, _
        ByVal AppHandle As IntPtr, _
        ByVal WinHandle As IntPtr _
    ) As Boolean

    'Core functions for initalizing BASSVIS and Find Plugins of any kind
    'delemiter As Byte = 44 .. ASC(",")
    'you can send other delemiter for Spliting
    Public Declare Function BASSVIS_FindPlugins Lib "bass_vis.dll" ( _
        ByVal Kind As BassVisKind, _
        ByVal PluginPath As String, _
        ByVal Searchflags As Integer, _
        Optional ByVal delemiter As Byte = 44 _
    ) As Int32


    Public Declare Function BASSVIS_Free Lib "bass_vis.dll" ( _
        ByRef param As BASSVIS_PARAM, _
        ByRef Base As BASSVIS_PARAM _
    ) As Boolean


    Public Declare Function BASSVIS_GetVersion Lib "bass_vis.dll" () As String


    Public Declare Sub BASSVIS_ExecutePlugin Lib "bass_vis.dll" ( _
        ByRef param As BASSVIS_EXEC, _
        ByRef Base As BASSVIS_PARAM _
    )


    Public Declare Function BASSVIS_RenderChannel Lib "bass_vis.dll" ( _
        ByRef param As BASSVIS_PARAM, _
        ByVal channel As Integer _
    ) As Boolean


    Public Declare Function BASSVIS_StartRecord Lib "bass_vis.dll" ( _
        ByRef param As BASSVIS_PARAM, _
        Optional ByVal SampleRate As Integer = 44100, _
        Optional ByVal Channels As Integer = 2 _
    ) As Boolean


    Public Declare Function BASSVIS_Config Lib "bass_vis.dll" ( _
        ByRef param As BASSVIS_PARAM, _
        Optional ByVal Entry As Integer = 0 _
    ) As Boolean


    Public Declare Function BASSVIS_SetInfo Lib "bass_vis.dll" ( _
        ByRef param As BASSVIS_PARAM, _
        ByRef infos As BASSVIS_INFO _
    ) As Boolean


    Public Declare Function BASSVIS_Resize Lib "bass_vis.dll" ( _
        ByRef param As BASSVIS_PARAM, _
        ByVal Left As Integer, _
        ByVal Top As Integer, _
        ByVal Width As Integer, _
        ByVal Height As Integer _
    ) As Boolean


    Public Declare Function BASSVIS_SetFullscreen Lib "bass_vis.dll" ( _
        ByRef param As BASSVIS_PARAM, _
        ByVal SourceHandle As IntPtr, _
        ByVal DestHandle As IntPtr, _
        ByVal SourceLeft As Integer, _
        ByVal SourceTop As Integer, _
        ByVal SourceWidth As Integer, _
        ByVal SourceHeight As Integer, _
        ByVal FullScreenFlag As Boolean, _
        ByVal FullScreenWidth As Integer, _
        ByVal FullScreenHeight As Integer _
    ) As Boolean


    Public Declare Function BASSVIS_GetModulePresetCount Lib "bass_vis.dll" ( _
        ByRef param As BASSVIS_PARAM, _
        ByVal Pluginname As String _
    ) As Int32


    Public Declare Function BASSVIS_GetModulePresetName Lib "bass_vis.dll" ( _
        ByRef param As BASSVIS_PARAM, _
        ByVal index As Integer, _
        ByVal Pluginname As String _
    ) As Int32


    Public Declare Function BASSVIS_GetModulePresetNameList Lib "bass_vis.dll" ( _
        ByRef param As BASSVIS_PARAM, _
        ByVal Pluginname As String _
    ) As Int32


    Public Declare Function BASSVIS_SetModulePreset Lib "bass_vis.dll" ( _
        ByRef param As BASSVIS_PARAM, _
        ByVal index As Integer _
    ) As Boolean


    Public Declare Function BASSVIS_GetOption Lib "bass_vis.dll" ( _
        ByRef param As BASSVIS_PARAM, _
        ByVal options As Integer _
    ) As Int32


    Public Declare Function BASSVIS_SetOption Lib "bass_vis.dll" ( _
        ByRef param As BASSVIS_PARAM, _
        ByVal options As Integer, _
        ByVal value As Integer _
    ) As Boolean


    Public Declare Function BASSVIS_SetPlayState Lib "bass_vis.dll" ( _
        ByRef param As BASSVIS_PARAM, _
        ByVal State As BASSVIS_PLAYSTATE, _
        Optional ByVal value As Integer = -1, _
        Optional ByVal Title As String = "" _
    ) As Int32


    Public Declare Function BASSVIS_GetPluginHandle Lib "bass_vis.dll" ( _
        ByVal Kind As BassVisKind, _
        ByVal Pluginfile As String _
    ) As Int32


    Public Declare Function BASSVIS_GetPluginName Lib "bass_vis.dll" ( _
        ByRef param As BASSVIS_PARAM _
    ) As Int32


    Public Declare Sub BASSVIS_Quit Lib "bass_vis.dll" ( _
        ByRef param As BASSVIS_PARAM _
    )


    Public Declare Sub BASSVIS_SetVisPort Lib "bass_vis.dll" ( _
        ByRef param As BASSVIS_PARAM, _
        ByVal WindowHandle As IntPtr, _
        ByVal ContainerHandle As IntPtr, _
        ByVal x As Int32, _
        ByVal y As Int32, _
        ByVal Width As Int32, _
        ByVal Height As Int32 _
    )


    Public Declare Sub BASSVIS_WINAMP_RemoveCallback Lib "bass_vis.dll" ()

    'Special for Sonique, Aimp2
    Public Declare Function BASSVIS_Clicked Lib "bass_vis.dll" ( _
        ByRef param As BASSVIS_PARAM, _
        ByVal x As Integer, _
        ByVal y As Integer _
    ) As Boolean

    'Spezial für Sonique
    Public Declare Function BASSVIS_SONIQUEVIS_RenderToDC Lib "bass_vis.dll" ( _
        ByVal Kind As BassVisKind, _
        ByVal handle As Int32, _
        ByVal channel As Int32, _
        ByVal canvas As Int32 _
    ) As Boolean

    Public Declare Function BASSVIS_SONIQUEVIS_RenderToDC2 Lib "bass_vis.dll" ( _
        ByVal Kind As BassVisKind, _
        ByVal handle As Int32, _
        ByVal Data As IntPtr, _
        ByVal fft As IntPtr, _
        ByVal canvas As Int32, _
        ByVal flags As Int32, _
        ByVal pos As Int32 _
    ) As Boolean

    'Public delegate for the changing state of a playlist
    Public Declare Sub BASSVIS_WINAMP_SetStateCallback Lib "bass_vis.dll" (ByVal CallBackDelegate As BassVis_PlayStateChanging)
    Public Delegate Sub BassVis_PlayStateChanging(ByVal NewState As BASSVIS_PLAYSTATE)

End Module
Ein Sample Projekt kannst du hier laden. Falls du da mal hineinschauen willst. (VB.NET)
http://home.arcor.de/em.weiss/Example.rar

Soweit laufen alle Plugins bis auf AVS.dll
Diese funktioniert aber einwandfrei beim Debuggen nur nicht als selbstständige EXE.

gruss Emil
  Mit Zitat antworten Zitat