![]() |
Re: FindWindow() von WMP der in Hintergrund spielt !!!
Liste der Anhänge anzeigen (Anzahl: 1)
WinSpay kann das Fenster von WMP finden, wenn ich die Option "Unter der Maus verwende"
Um einen Code zu generieren muss ich halt auf das Icon klicke. Das geht aber nicht, weil wenn ich den Cursor weg von dem Video bewege, dann bekomme ich was anderes ! Es gibt leider keine Tasten Kombination um den Befehl zu bestätigen Was muss ich tun, um einen Code zu generieren? [Edit]Bild - Siehe Anhang[/Edit] Hier ist das Video(ein Video in HTML-Seite) zum Testen : ![]() -------- [edit=SirThornberry]Bild in Anhang gepackt - Mfg, SirThornberry[/edit] |
Re: FindWindow() von WMP der in Hintergrund spielt !!!
Ähh, auf den "Code" Button klicken, den du eingerahmt hast? :wall:
Dass das nicht geht, wenn du "Unter der Maus" aktiv hast, ist ja wohl klar. Wie wärs, wenn du stattdessen den dicken Button "Fenster auswählen" nimmst und das WMP-Fenster im Browser damit auswählst? Und selbst wenn du einen Code für dieses Handle generierst, wird der wahrscheinlich auch nur mit FindWindow bzw. FindWindowEx arbeiten. Achso, als Nachtrag: Ich finde du nervst! Such doch mal selber nach Lösungen, statt wegen jedem sch... "Problemchenchenchen" was du hast das Forum zuzuspammen. Zu dem Thema inzwischen schon drei Threads. |
Re: FindWindow() von WMP der in Hintergrund spielt !!!
Hallo,
vorher habe ich einfach auf das Button angeklickt, muss man klicken und ziehen :mrgreen: Danke! Mit Hilfe von dem Programm WinSpy lautet der Code nun so:
Delphi-Quellcode:
Ich bekomme trotzdem "Nicht gefunden" !!!
const
{Windows Media Player API} ... WMP_MEDIA_PLAY_PAUSE = $E0000; procedure TForm1.Button1Click(Sender: TObject); var wnd: HWND; begin wnd := FindWindow('TMainForm','Test'); wnd := FindWindowEx(wnd, 0, 'TPanel', nil); wnd := FindWindowEx(wnd, 0, 'Shell Embedding', nil); wnd := FindWindowEx(wnd, 0, 'Shell DocObject View', nil); wnd := FindWindowEx(wnd, 0, 'Internet Explorer_Server', nil); wnd := FindWindowEx(wnd, 0, 'Internet Explorer_ActiveMovie', nil); wnd := FindWindowEx(wnd, 0, 'VideoRenderer', nil); if wnd <> 0 then Sendmessage(wnd, WM_APPCOMMAND, 0, WMP_MEDIA_PLAY_PAUSE)// umd das Video anzuhalten else ShowMessage('Nicht gefunden'); end; end. Wo kann jetzt das Problem liegen ? ______________________ |
Re: FindWindow() von WMP der in Hintergrund spielt !!!
guck dir deinen code vielleicht mal an und lies dir
![]() dann würdest du feststellen das da einiges nicht stimmen kann. Es sei denn der Internet Explorer und das Video ist auf einmal ein child Fenster von deiner Anwendung |
Re: FindWindow() von WMP der in Hintergrund spielt !!!
Der Code oben, habe ich mit WinSpay generiert
wo muss ich die Funktion von Microsoft dazu einbauen ? C//
Delphi-Quellcode:
// Delphi
HWND FindWindowEx(
HWND hwndParent, HWND hwndChildAfter, LPCTSTR lpszClass, LPCTSTR lpszWindow );
Delphi-Quellcode:
Es wird langsam komplizierter !
function FindWindowEx(hwndParent: HWND; hwndChildAfter: HWND; lpszClass:PChar; lpszWindow:PChar): HWND; stdcall;
Das Video ist wahrscheinlich als Child in IE eingebaut. und so habe ich die Funktion von Microsoft vor
Delphi-Quellcode:
wnd := FindWindowEx(HwndParent, HwndChildAfter, lpszClass, lpszWindow); Es Wird das Fenster nicht gefunden ! ___ ____________ |
Re: FindWindow() von WMP der in Hintergrund spielt !!!
Das ist toll das du den Code mit WinSpy generiert hast, aber vielleicht schaust du ihn dir mal an und versuchst ihn zu verstehen. Dann würde dir auffallen das schon in der ersten Zeile etwas nicht stimmen kann...
Wenn der Film nämlich im Internet Explorer abgespielt wird, was bringt es dann wenn er nach einem Fenster mit Klassennamen TMainForm sucht und dann anfängt die child Fenster mit TPanel,etc. durchzugehen? Das gehört mit großer Sicherheit nicht zum Internet Explorer. Du hast sogar schon einen Screenshot gepostet in dem die ganze Fenster Struktur des vermeindlichen Player Fenster gepostet ist. Fang bei einem der Fenster mit FindWindow an und arbeite dich dann durch die child Fenster mit FindWindowEx durch. Alles was du brauchst ist in dem WinSpy Screenshot zu sehen den du gepostet hast. |
Re: FindWindow() von WMP der in Hintergrund spielt !!!
Das war ein anderes Beispiel und nicht über das Video in der Webseite.
OK wir kommen zu dem Beispiel in der Webseite : das ist der Code mit Hilfe von Winspy :
Delphi-Quellcode:
Nachdem Klick auf das Button passiert nichts, d.h. das Windows hat der Code gefunden, das Video aber nicht. Oder?
const
{Windows Media Player API} ... WMP_MEDIA_PLAY_PAUSE = $E0000; WMP_MEDIA_STOP = $D0000; ... procedure TForm1.Button3Click(Sender: TObject); var wnd: HWND; begin wnd := FindWindow('IEFrame','WMP - Microsoft Internet Explorer'); wnd := FindWindowEx(wnd, 0, 'Shell DocObject View', nil); wnd := FindWindowEx(wnd, 0, 'Internet Explorer_Server', nil); wnd := FindWindowEx(wnd, 0, 'Internet Explorer_ActiveMovie', nil); wnd := FindWindowEx(wnd, 0, 'VideoRenderer', nil); if wnd <> 0 then Sendmessage(wnd, WM_APPCOMMAND, 0, WMP_MEDIA_PLAY_PAUSE) else ShowMessage('nicht gefunden'); end; end. Nun müssen wir die Funktion von Microsoft dazu in den Code einbauen :
Delphi-Quellcode:
Der Code oben ist wahrscheinlich in C Sprache !
HWND FindWindowEx(
HWND hwndParent, HWND hwndChildAfter, LPCTSTR lpszClass, LPCTSTR lpszWindow ); Das Video ist als Child eingebaut, deswegen müssen wir die Funktion oben verwenden. Ich weiß aber nicht wie und wo die Funktion einbauen muss?! ![]() __________ |
Re: FindWindow() von WMP der in Hintergrund spielt !!!
Dann hat er das richtige Fenster schonmal gafunden.
Nur schluckt das Fenster die Nachrichten nicht. Läßt sich dann wahrscheinlich nicht mit den gleichen Nachrichten wie der WMP Steuern, oder aber es ist das falsche Fenster. Du kannst mal versuchen die Nachricht noch an eines der anderen Fenster zu schicken, also einfach die unterste FindWindowEx Zeile raus nehmen und nochmal testen... dann die nächste raus nehmen und testen..., usw. bis du beim top window angekommen bist. Vielleicht verarbeitet eines dieser Fenster die Nachricht. |
Re: FindWindow() von WMP der in Hintergrund spielt !!!
Wenn ich die Zeillen von unten nach oben Stück Stück lösche, dann wird das Fenster immer gefunden
wenn ich aber die Funktion von Microsoft dazu als letzte Zeille einbaue, dann wird das Fenster nicht gefunden
Delphi-Quellcode:
...
const ... WMP_MEDIA_STOP = $D0000; WMP_MEDIA_PLAY_PAUSE = $E0000; procedure TForm1.Button1Click(Sender: TObject); var wnd: HWND; HwndParent: HWND; HwndChildAfter: HWND; lpszClass: PChar; // pointer to class name lpszWindow: PChar; // pointer to window name begin wnd := FindWindow('IEFrame','WMP - Microsoft Internet Explorer'); wnd := FindWindowEx(wnd, 0, 'Shell DocObject View', nil); wnd := FindWindowEx(wnd, 0, 'Internet Explorer_Server', nil); wnd := FindWindowEx(wnd, 0, 'Internet Explorer_ActiveMovie', nil); wnd := FindWindowEx(wnd, 0, 'VideoRenderer', nil); wnd := FindWindowEx(HwndParent, HwndChildAfter, lpszClass, lpszWindow); if wnd <> 0 then Sendmessage(wnd, WM_APPCOMMAND, 0, WMP_MEDIA_PLAY_PAUSE) else ShowMessage('nicht gefunden'); end; end. _________ |
Re: FindWindow() von WMP der in Hintergrund spielt !!!
Und nun warteste darauf, dass dir jemand wieder nen Source-Code gibt, weil du mal wieder keinen Schimmer von Variablendeklaration, -definition und deren Inhalte hast? :wall:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:04 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