![]() |
Re: Probleme mit Bass_Vis
Handle der DLL finden?
Finde das Handle von den Plugin's nicht. Was bekannt ist, ist das ParentWindow Hwnd ClassenName = ('Winamp v1.x') Titel (Caption) Wie kann ich nun das Handle der DLL ermitteln? ich meine nicht das Handle des Moduls sondern des Fensters. GetWindow,FindWindow,FindWindowEx alles will nicht funktionieren. Grüße |
Re: Probleme mit Bass_Vis
Hm, das Problem ist das jeder ein Winamp Vis Fenster erstellen kann wie er will, das heisst es ist nichts festgelegt. Damit sind die Fenstersuchfunktionen wie FindWindow etc. ggf. ervfolglos.
|
Re: Probleme mit Bass_Vis
Zitat:
Das PluginHandle hat nichts mit erstellen von Fenstern zu tun. Es soll lediglich dem user ermöglichen diverse Funktionen mit dem Handle asuzuführen. Nicht alle Plugins unterstützen Docking. Wenn ich das Handle kenne kann mein Player wenn er verschoben wird sich automatisch an das Plugin Window andocken und es mitziehen. So wie bei Winamp wenn die Playliste oder EQ andockt! Eine andere Frage ? :wink:
Delphi-Quellcode:
Hier werden Diverse Infos übermittelt.
function BASS_WINAMPVIS_SetChanInfo(handle: HVIS; Title: PChar; FileName: PChar; pos, len: DWORD): boolean; stdcall;
Den Titel , Filename muss ich wenn er ankommt über SendMessage an die Winproc senden.
Delphi-Quellcode:
Hier stimmt was nicht es wird ein Integer als übergabe verlangt.
PostMessage(handle,WM_WA_IPC,VisInfo^.Title,IPC_GETPLAYLISTTITLE)
Wie kann ich den Text 'VisInfo^.Title' senden als Integer das er trotzdem richtig ausgewertet wird. Grüße |
Re: Probleme mit Bass_Vis
Zitat:
gruß |
Re: Probleme mit Bass_Vis
Liste der Anhänge anzeigen (Anzahl: 1)
Soweit läuft jetzt alles!
Siehe ScreenShot. Einzige Problem ist das Dummy Window von Winamp. Ich habe es mal auf Visible gestellt damit man da problem besser erkennen kann. Wenn nun ein plugin ausgeführt wird hängt es sich an das Fenster an. Das ist es aber was ich verhindern will .. es soll wie bei Winamp sich an mein fenster andocken. Hier nochmal ein Schnipsel vom Source.
Delphi-Quellcode:
Wenn die zeilen oben auskommentiert werden dann hängt sich das Programm auf..
// 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_VISIBLE, // Kein Frame, Unsichtbar 0, 0, 275, 116, // x, y, width, height {parent} 0, 0, hInst, nil) else Result := 0; // AppParentHandle Hwnd von der ausführenden Anwendung // if AppParentHandle <> 0 then // begin // VisPlgHandle := Result; // SetParent(VisPlgHandle, AppParentHandle); // SetWindowPos(VisPlgHandle, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE Or SWP_NOSIZE); // end // else // VisPlgHandle := Result; VisInfo^.WinHandle := VisPlgHandle; WinampVisExecute(Filename, Vismod, VismodCounter, VisPlgHandle); // ParentWindow der APPClass zuweisen VisInfo^.VisModule^.hwndParent := VisPlgHandle; VisInfo^.VisModule^.Init(VisInfo^.VisModule); PluginHandle := GetWindow(VisInfo^.VisModule^.hwndParent, GW_HWNDPREV); bzw. verliert den Focus und läuft nicht weiter. Was kann ich da sonst noch machen habs mit zwei WinProcs versucht und.. und.. und.. Weiss im moment nicht weiter. |
Re: Probleme mit Bass_Vis
:gruebel: Wie gesagt, du weist ja nicht wie der Programierer das Plugin gebaut hat. Ob es sich um eine Form wie in Delphi, VB etc. als Standalone, Dialog etc. dich darstellt.
Desswegen wird es auch schwehr mit FindWindow das Handle zu finden und sich dan die WndProc zu holen und oder umzubigen. Du kontest aber versuchen das Pluginfenster auf dein Fenster zu kleben... |
Re: Probleme mit Bass_Vis
Zitat:
entweder ich bekomme das HWND über
Delphi-Quellcode:
oder es wird ein wert 0 zurückgegeben.
PluginHandle := GetWindow(VisInfo^.VisModule^.hwndParent, GW_HWNDPREV);
In 90% aller fälle ist das handle vorhanden. Die anderen 10 sind meistens plugins welche sich selbst andocken. Mein problem ist das hier erstellte 'Winamp v1.x' in das Window meiner Anwendung einzufügen. Das Handle ist immer bekannt da es ja im Thread selbst erstellt wird. Nur es verliert den Focus sobald ich es in meine Form verschiebe. dann läuft die routine nicht mehr durch weil sich die reihenfolge kindfenster,Parentfenster,Child-fenster geändert hat. wenn alle stricke reißen werd ich es wohl mit GetwindowRec machen müssen. Nur das ist extrem CPU lastig da es mein Window immer verfolgen muss sobald es verschoben wird. grüße |
Re: Probleme mit Bass_Vis
[quote]Desswegen wird es auch schwehr mit FindWindow das Handle zu finden und sich dan die WndProc zu holen und oder umzubigen. [delphi]
wir reden irgendwie aneinander vorbei. :( Das Handle finde ich immer. Notfalls Enumeriere ich alle Fenster und vergleiche sie über ein vorher angelegtes array in dem sich alle Window Handle befinden. Wie kann ich die Kontrolle über das von mir erstellte Fenster zurückbekommen sobald dieses als ParentWindow in das Anwendungs Fenster verschoben wurde. grüße |
Re: Probleme mit Bass_Vis
Liste der Anhänge anzeigen (Anzahl: 1)
Da niemand antwortet.
Zitat:
Hat sich erledigt es geht. Schaut auf das kleine Visualisierungs Window unter der Zeitanzeige :wink: |
Re: Probleme mit Bass_Vis
Liste der Anhänge anzeigen (Anzahl: 1)
So hier ist das Projekt mit Quelltext der Exe
welche die Bass_Vis als visualisierung für Winamp Plugins bis 2.9 verwendet. Habe einen exeption-Handler mit eingebaut. Ihr könnt aber auch Fehler hier melden wenn ihr wollt. Oder Fragen stellen bzgl. PlayStatus, Text anzeige usw.... gruß EDIT: Ihr müßt eine Quelle starten welche Musk wiedergibt ansonsten wird nix angezeigt. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz