AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Probleme mit Bass_Vis

Probleme mit Bass_Vis

Ein Thema von BassFan · begonnen am 5. Jul 2006 · letzter Beitrag vom 28. Dez 2006
Antwort Antwort
Seite 5 von 7   « Erste     345 67   
BassFan
(Gast)

n/a Beiträge
 
#41

Re: Probleme mit Bass_Vis

  Alt 11. Jul 2006, 21:31
Zitat:

nee, ist mit allen Updates installiert
VB6 ??? Oh.....

Dann bitte welche Plugins hast du gewählt ?
Winamp5 funktioniert nicht.

grüße
  Mit Zitat antworten Zitat
Benutzerbild von MagicAndre1981
MagicAndre1981

Registriert seit: 4. Jun 2004
Ort: Nordhausen
2.214 Beiträge
 
Delphi 7 Enterprise
 
#42

Re: Probleme mit Bass_Vis

  Alt 11. Jul 2006, 21:58
Zitat von BassFan:
VB6 ??? Oh.....
nee, die Runtime + iregendein Update

Zitat von BassFan:
Dann bitte welche Plugins hast du gewählt ?
keins, da das Programm beim Start schon abrödelt

Zitat von BassFan:
Winamp5 funktioniert nicht.
das wird wohl der Grund sein, dass es nicht geht, denn ich hab nur Winamp 5 installiert.
André
"A programmer is just a tool which converts caffeine into code", daran wirds wohl liegen, dass ich Abends nie pennen kann

Zitat von Luckie:
Nicht nur dass ihr offtopic geworden seid, jetzt werdet ihr selber im Offtopic noch offtopic
  Mit Zitat antworten Zitat
BassFan
(Gast)

n/a Beiträge
 
#43

Re: Probleme mit Bass_Vis

  Alt 11. Jul 2006, 22:09
Zitat:
das wird wohl der Grund sein, dass es nicht geht, denn ich hab nur Winamp 5 installiert.
Hundert prozentig..
Das laden der Plugins von Winamp5 funktioniert nicht.

Daran werde ich arbeiten sobald die anderen Funktionen eingebaut sind
die für 2.9 Plugins benötigt werden.

Davon abgesehen!
Benenne den Plugin Ordner in Winamp um nach Plugin_ erstelle
einen neuen Order mit den Namen Plugins.

Lade ein paar 2.9 Plugins und installiere sie.
Dann kannst du den Ordner Plugins auswählen
und das laden der Plugins funktioniert.

Hab jetzt über 1 Stunde AVS am laufen ohne Probleme

Grüße
  Mit Zitat antworten Zitat
BassFan
(Gast)

n/a Beiträge
 
#44

Re: Probleme mit Bass_Vis

  Alt 11. Jul 2006, 22:16
So hab die neue Funktion eingebaut!

Delphi-Quellcode:
procedure BASS_WINAMPVIS_Playstate(State: Integer); stdcall;

    begin
    if DummyWinampHandle > 0 then
    case (State) of
    0: State := WINAMP_BUTTON4; //Stop
    1: State := WINAMP_BUTTON2; //Play
    3: State := WINAMP_BUTTON3; //Pause
    end;
    // Sende Ergebnis zu WinampVisWndProc
    // DummyWinampHandle; WindowHandle des Dummy Winamp Fenster
    SendMessage(DummyWinampHandle, WM_COMMAND, State, 0);

end;
wird übergeben VB.
Code:
Private Sub cmdPlay_Click()
       
    hwndWinamp = FindWindow("Winamp v1.x", vbNullString)

    If hwndWinamp <> 0 Then
        BASS_WINAMPVIS_PlayState 1
        lblStatus.Caption = "Playing"
    End If
   
End Sub

Private Sub cmdStop_Click()
   
    hwndWinamp = FindWindow("Winamp v1.x", vbNullString)

    If hwndWinamp <> 0 Then
        BASS_WINAMPVIS_PlayState 0
        lblStatus.Caption = "Stop"
    End If

End Sub
Und das rennt..
Kann jetzt auch aus den Winamp Plugins heraus die Visualisierung ausschalten.

Grüße
  Mit Zitat antworten Zitat
Benutzerbild von MagicAndre1981
MagicAndre1981

Registriert seit: 4. Jun 2004
Ort: Nordhausen
2.214 Beiträge
 
Delphi 7 Enterprise
 
#45

Re: Probleme mit Bass_Vis

  Alt 11. Jul 2006, 22:18
was ist der Unterschied zw. den Plugins der 2.9 und der 5 (ich hab keine 2.9er mehr)?
André
"A programmer is just a tool which converts caffeine into code", daran wirds wohl liegen, dass ich Abends nie pennen kann

Zitat von Luckie:
Nicht nur dass ihr offtopic geworden seid, jetzt werdet ihr selber im Offtopic noch offtopic
  Mit Zitat antworten Zitat
BassFan
(Gast)

n/a Beiträge
 
#46

Re: Probleme mit Bass_Vis

  Alt 11. Jul 2006, 22:23
Zitat von MagicAndre1981:
was ist der Unterschied zw. den Plugins der 2.9 und der 5 (ich hab keine 2.9er mehr)?
Die kannst doch bei Winamp laden unter plugins.

Denke da gibt es ein problem mit der Erkennung von 'winampVisGetHeader'
Scheinen nicht alle hundertpro importiert zu sein.

Grüße
  Mit Zitat antworten Zitat
BassFan
(Gast)

n/a Beiträge
 
#47

Re: Probleme mit Bass_Vis

  Alt 13. Jul 2006, 01:07
Habe mal ne Frage?

Ich benutze die BassVis ja in meinen projekt.
Wenn die DLL startet wird ein Winamp Dummy Fenster erstellt.
Plugins welche eine Dock funktion benutzen setzen sich dann sofort an das nicht sichtbare Fenster
was aber nicht das Fenster meiner Anwendung ist.

Deshalb hole ich über Findwindow das Handle des Dummy Window und
positioniere das Dummy Window mit SetWindowPos in verbindung mit SetParent in mein Hauptfenster ein.

Jetzt kommt das Problem!
Wenn ich die alte Routine aufrufe vom BassVis habe ich festgestellt das beim start
das Plugin nicht schnell genug an mein Hauptfenster andocken kann weil ich das Dummy Window
erst identifizieren kann sobald das Plugin gestartet ist!

Gut soweit.
Habe nun eine Routine hinzugefügt welche es ermöglicht unabhängig vom Plugin
das Dummy Window zu erstellen.

Delphi-Quellcode:
function WinampDummyWin(VisInfo: PWinampVisInfo): HWND;
var
   WinAtom : TAtom;
   wClass : TWNDCLASSEX;
   Msg : TMsg;

const
   AppClass = 'Winamp v1.x'; // Übergebe den ClassenNamen
   AppTitle = 'Winamp 5.2'; // Übergebe den Window Titel (Caption)

begin
   if DummyWinampHandle <> 0 then // Erstelle das Fake Winamp Fenster
   begin
      windows.UnRegisterClass(AppClass, hInst);
      hInst := 0;
      DummyWinampHandle := 0;
      VisInfo^.WinHandle := 0;
   end;

   hInst := GetModuleHandle(nil); // Hole die Apllikations Instanz

   with wClass do // Erstelle die Classe
   begin
      cbSize := sizeof(wClass);
      Style := CS_PARENTDC or CS_VREDRAW;
      lpfnWndProc := @WinampVisWndProc;
      cbClsExtra := 0;
      cbWndExtra := 0;
      hInstance := hInst;
      hIcon := 0;
      hCursor := LoadCursor(0, IDC_ARROW);
      hbrBackground := COLOR_BTNFACE + 1;
      lpszMenuName := nil;
      lpszClassName := AppClass;
      hIconSm := 0;
   end;

  // Erst wenn die Classe registriert ist kann das Window erstellt werden
   WinAtom := windows.RegisterClassEx(wClass);

   if WinAtom <> 0 then
      result := CreateWindowEx(0, AppClass, AppTitle,
                                  WS_POPUP, // Kein Frame, Unsichtbar
                                  0, 0, 275, 116, // x, y, width, height
                                  {parent} 0, 0, hInst, nil)
   else
      result := 0;

  DummyWinampHandle := result;
  VisInfo^.WinHandle := DummyWinampHandle;
  // Erst der AppClass das ParentWindow zuweisen
  // Dann über ParentWindow das HWND des Plugin ermitteln
  PluginHandle := GetWindow(DummyWinampHandle,GW_HWNDPREV);
  WinProcLoad := False;

  // Überprüfe ob aus der Anwendung IsPlaying eingeschaltet wurde.
  // Erst dann wird die Visualisierung freigeschaltet.
  if IsPlaying > 0 then
         VisInfo^.Init2 := True
    else
         VisInfo^.Init2 := False;

    sleep(150);
    peekmessage(Msg, 0, 0, 0, 0);

end;
Dort wird das Window generiert.

Um die Function abzuschließen muss ich auf die Rückgabe der Message warten.
GetMessage(Msg, 0, 0, 0) Hier hängt sich das Plugin aber auf!
Habe es nu so gelößt.

Delphi-Quellcode:
    sleep(150);
    peekmessage(Msg, 0, 0, 0, 0);
Nun warte ich 150 msec und hole mir dann die Infos über PeekMessage

Nun die Frage .. hihihihihhiihihih

Geht das anders ? Komfortabler ? Denke es ist kein guter Ansatz über die Sleep Methode
Anders habe ich den Kuchen aber nicht gebacken bekommen.
Ich darf aber auf keinen Fall in dieser Funktion hängen bleiben bzw.. die abfrage der Message muss beendet werden.
Die Funktion selbst wird nur einmal beim start der BassVis ausgeführt.

Für die Plugins gibt es nochmal eine ähnlich Funktion.

grüße

EDIT: Soviel Text für ein so kleines Problem ...
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#48

Re: Probleme mit Bass_Vis

  Alt 13. Jul 2006, 08:52
Nein, das erstellen des Fensters ist schon gut so.
Was fehlt ist die Weiterverarbeitung der Messages von GetMessage(Msg, 0, 0, 0).


Delphi-Quellcode:
while GetMessage(msg, 0, 0, 0) do
begin
  TranslateMessage(msg); // Tastatureingaben veratbeiten
  DispatchMessage(msg); // Messages veratbeiten
end;
Du musst halt noch in der WndProc festlegen wann das Fenster geschlossen wird bzw. werden soll.
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
BassFan
(Gast)

n/a Beiträge
 
#49

Re: Probleme mit Bass_Vis

  Alt 13. Jul 2006, 16:06
Zitat von turboPASCAL:
Nein, das erstellen des Fensters ist schon gut so.
Was fehlt ist die Weiterverarbeitung der Messages von GetMessage(Msg, 0, 0, 0).


Delphi-Quellcode:
while GetMessage(msg, 0, 0, 0) do
begin
  TranslateMessage(msg); // Tastatureingaben veratbeiten
  DispatchMessage(msg); // Messages veratbeiten
end;
Du musst halt noch in der WndProc festlegen wann das Fenster geschlossen wird bzw. werden soll.
Das Funktioniert leider nicht.

Ich versuchs nochmal zu erklären.
Stell dir das Fenster meiner Anwendung als Koffer vor dort wird nun das hier erzeugt reingesteckt
und darf nicht wieder entnommen(terminiert werden).

Wenn ich nun hier eine GetMessage ansetze arbeitet diese wie ein schloss was erst geöffnet werden kann
wenn ich den schlüssel habe '(WM_QUIT) sende.'
Unabhängig davon muss ich mich aber weiter bewegen können. Und das geht mit GetMessage nicht.

Also kurz gesagt.
Das Fenster darf nicht terminiert werden aber die Plugins müssen trotzdem Messagen empfangen
und versenden können

Grüße
  Mit Zitat antworten Zitat
BassFan
(Gast)

n/a Beiträge
 
#50

Re: Probleme mit Bass_Vis

  Alt 13. Jul 2006, 16:57
Ich glaube das problem ist schwieriger als gedacht

Das funktioniert deshalb nicht weil beide routinen auf die gleiche winproc ansprechen.
Deshalb kann die getMessage nicht verarbeitet werden.

Was ich erreichen möchte.

1. Das einmal erstellte Dummy Window für Winamp-Plugins darf nicht terminiert werden
Es soll beim starten von BassVis das HWND vom Dummy an die Anwendung schicken aber ohne das ein
Plugin vorher ausgeführt wurde.
Benötigt wird diese Funktion für Plugins welche Andock möglichkeiten zur verfügung stellen.

2.
Die Plugins ausführen aber so das diese das DummyWindow nicht terminieren.
Würde bedeuten das ich dafür eine separate Winproc benötige.
Bin mir nur noch nicht klar welche messagen diese verarbeiten soll.
Wenn das ohne extra Winproc läuft um so besser.

3.
Übergabe der Laufzeit TimeDisplay
Muss von der Anwendung übergeben und von jeden Plugin erkannt werden

4.
Übergabe des aktuellen Titels
Muss von der Anwendung übergeben und von jeden Plugin erkannt werden

5:
Next, Prev ... dürfte keien problem sein.
Muss von der Anwendung übergeben und von jeden Plugin erkannt und gesteuert werden können.

Bisher läuft es stabiel solange wie kein Winamp5 Plugin verwendet wird
und die Plugins selbst keine Fehler haben.
Alle Grafik (Skins) funktionieren.
Alle Konfigurationen können ohne das Plugin zu starten aufgerufen werden.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:09 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz