AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi FindWindow() von WMP der in Hintergrund spielt !!!
Thema durchsuchen
Ansicht
Themen-Optionen

FindWindow() von WMP der in Hintergrund spielt !!!

Ein Thema von taktaky · begonnen am 21. Sep 2007 · letzter Beitrag vom 12. Okt 2007
Antwort Antwort
Seite 2 von 4     12 34      
taktaky
(Gast)

n/a Beiträge
 
#11

Re: FindWindow() von WMP der in Hintergrund spielt !!!

  Alt 22. Sep 2007, 17:43
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 :
Demo (Video) versteckt



--------

[edit=SirThornberry]Bild in Anhang gepackt - Mfg, SirThornberry[/edit]
Miniaturansicht angehängter Grafiken
videoinwebbrowser2_812.jpg  
  Mit Zitat antworten Zitat
Nuclear-Ping
(Gast)

n/a Beiträge
 
#12

Re: FindWindow() von WMP der in Hintergrund spielt !!!

  Alt 23. Sep 2007, 02:11
Ähh, auf den "Code" Button klicken, den du eingerahmt hast?

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.
  Mit Zitat antworten Zitat
taktaky
(Gast)

n/a Beiträge
 
#13

Re: FindWindow() von WMP der in Hintergrund spielt !!!

  Alt 23. Sep 2007, 12:14
Hallo,

vorher habe ich einfach auf das Button angeklickt, muss man klicken und ziehen

Danke!

Mit Hilfe von dem Programm WinSpy lautet der Code nun so:
Delphi-Quellcode:
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.
Ich bekomme trotzdem "Nicht gefunden" !!!

Wo kann jetzt das Problem liegen ?



______________________
  Mit Zitat antworten Zitat
Billi Berserker
(Gast)

n/a Beiträge
 
#14

Re: FindWindow() von WMP der in Hintergrund spielt !!!

  Alt 23. Sep 2007, 13:11
guck dir deinen code vielleicht mal an und lies dir http://msdn2.microsoft.com/en-us/library/ms633500.aspx durch
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
  Mit Zitat antworten Zitat
taktaky
(Gast)

n/a Beiträge
 
#15

Re: FindWindow() von WMP der in Hintergrund spielt !!!

  Alt 23. Sep 2007, 14:54
Der Code oben, habe ich mit WinSpay generiert
wo muss ich die Funktion von Microsoft dazu einbauen ?
C//
Delphi-Quellcode:
HWND FindWindowEx(
    HWND hwndParent,
    HWND hwndChildAfter,
    LPCTSTR lpszClass,
    LPCTSTR lpszWindow
);
// Delphi
function FindWindowEx(hwndParent: HWND; hwndChildAfter: HWND; lpszClass:PChar; lpszWindow:PChar): HWND; stdcall; Es wird langsam komplizierter !

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 !



___



____________
  Mit Zitat antworten Zitat
Billi Berserker
(Gast)

n/a Beiträge
 
#16

Re: FindWindow() von WMP der in Hintergrund spielt !!!

  Alt 23. Sep 2007, 15:16
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.
  Mit Zitat antworten Zitat
taktaky
(Gast)

n/a Beiträge
 
#17

Re: FindWindow() von WMP der in Hintergrund spielt !!!

  Alt 23. Sep 2007, 16:00
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:
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.
Nachdem Klick auf das Button passiert nichts, d.h. das Windows hat der Code gefunden, das Video aber nicht. Oder?

Nun müssen wir die Funktion von Microsoft dazu in den Code einbauen :
Delphi-Quellcode:
HWND FindWindowEx(
    HWND hwndParent,
    HWND hwndChildAfter,
    LPCTSTR lpszClass,
    LPCTSTR lpszWindow
);
Der Code oben ist wahrscheinlich in C Sprache !


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?!


Demo
__________
  Mit Zitat antworten Zitat
Billi Berserker
(Gast)

n/a Beiträge
 
#18

Re: FindWindow() von WMP der in Hintergrund spielt !!!

  Alt 23. Sep 2007, 17:12
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.
  Mit Zitat antworten Zitat
taktaky
(Gast)

n/a Beiträge
 
#19

Re: FindWindow() von WMP der in Hintergrund spielt !!!

  Alt 23. Sep 2007, 17:39
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.


_________
  Mit Zitat antworten Zitat
Nuclear-Ping
(Gast)

n/a Beiträge
 
#20

Re: FindWindow() von WMP der in Hintergrund spielt !!!

  Alt 23. Sep 2007, 21:54
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?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      


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 16:35 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