Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi FindWindow() von WMP der in Hintergrund spielt !!! (https://www.delphipraxis.net/100061-findwindow-von-wmp-der-hintergrund-spielt.html)

taktaky 21. Sep 2007 18:07


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

wie kann man den Klassennamen eine versteckte Anwendung finden?

Ich habe versucht den Classname von Windows Media Player, der beim Spielen ausgeblenden st, zu finden, leider Ohne Erfolg.

mit dem Code kann ich den Klassennamen von WMP auslesen aber nur wenn er nicht in Hintergrund spielt:
Delphi-Quellcode:
procedure TForm1.Button6Click(Sender: TObject);
var h: HWND;
   text,classname:String;
begin


h:=FindWindow(nil,'Windows Media Player');

//h:=GetForegroundWindow;

SetLength(text,SendMessage(h,WM_GETTEXTLENGTH,0,0)+1);
SendMessage(h,WM_GETTEXT,length(text),Integer(@text[1]));

SetLength(ClassName, 255);
      //get the class name and reset the
      //memory area to the size of the name
      SetLength(ClassName,
              GetClassName(h,
                           PChar(className),
                           Length(className)));


edit1.Text:=classname;
edit2.Text:=text;

end;
Der Windows Media Player spielt in Webbrowser in Hintergrund

Der html Code in Webbrowser ist so geschrieben:
Code:
<body>





[img]test.avi[/img]</p>

</body>

</html>
Wie kann man die Windows (Klassennamen) von WMP wenn er so versteckt finden?



Gruß





-------------

Innos 21. Sep 2007 18:45

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

Zitat von taktaky
h:=FindWindow(nil,'Windows Media Player');

glaube das liegt daran...
entweder du downloadest x-spy (ein prog mit dem du von Programmen das Handle rausbekommst) oder du benutzt eben diese function^^

Delphi-Quellcode:
function GetWMPHandle : hwnd;
287 begin
288 result := FindWindow('WMPlayerApp', nil);
289 result := FindWindowEx(result, 0, 'WMPAppHost', 'WMPAppHost');
290 if result = 0 then result := Findwindow(nil,'Windows Media Player');
291 end;
dann musste nur noch hinschreiben (auf deinen code bezogen)

Delphi-Quellcode:
h:=GetWMPHandle;
ungetestet aba sollte gehn... wie gesagt mit x-spy kriegste eine besseren handle und sparst di diese ganze funktion^^

EDIT: ups^^ das mit dem webrowsern hab ich überlesen... aba da müsstest du dann erst deinen webbrowser ansprechen und dann dein WMP glaub ich mal

taktaky 21. Sep 2007 20:01

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

mir ist lieber einen Code.

Ich habe die Funktion verwendet, bleibt leider der versteckte Windows Media Player immer unendeckt!


Gruß





____________

DeddyH 21. Sep 2007 20:10

Re: FindWindow() von WMP der in Hintergrund spielt !!!
 
Hast Du Dir schon einmal Gedanken darüber gemacht, dass der verwendete MediaPlayer in diesem Fall ein Browser-Plugin sein könnte?

taktaky 21. Sep 2007 20:23

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

Zitat von DeddyH
Hast Du Dir schon einmal Gedanken darüber gemacht, dass der verwendete MediaPlayer in diesem Fall ein Browser-PlugIn sein könnte?

Nicht gemacht ! Du hast vollkommen Recht Deddy. Das kann sein :gruebel:

Und wenn es ein Browser Plug-In wäre, heißt das vergeblich ?



Gruß

DeddyH 21. Sep 2007 20:36

Re: FindWindow() von WMP der in Hintergrund spielt !!!
 
Sorry, da muss ich passen, nicht meine Materie.

taktaky 22. Sep 2007 10:45

Re: FindWindow() von WMP der in Hintergrund spielt !!!
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von DeddyH
Sorry, da muss ich passen, nicht meine Materie.

Hallo Deddy

ich habe diese Information mit Hilfe von WinSpay :
[Edit]Siehe Anhang[/Edit]

So habe ich so versucht :

Delphi-Quellcode:

const
{Windows Media Player API}
...
WMP_MEDIA_PLAY_PAUSE   = $E0000;

procedure TForm1.Button1Click(Sender: TObject);
var myHandle:HWND;
begin
//myHandle := 331038;
//myHandle := FindWindow(nil, 'ActiveMovieWindow'); // über seinen Titel finden
//myHandle := FindWindow('VideoRenderer', 'ActiveMovieWindow'); // über seinen Klassennamen finden
//myHandle := FindWindow('WMPlayerApp', 'Windows Media Player'); // über seinen Classname finden
if myHandle <> 0 then
  Sendmessage(myHandle, WM_APPCOMMAND, 0, WMP_MEDIA_STOP)

  else
  ShowMessage('Nicht gefunden');

end;

end.
Woran liegt das Problem?!



Gruß




-------------------


_________________________

[edit=SirThornberry] Mfg, SirThornberry[/edit]

Billi Berserker 22. Sep 2007 11:23

Re: FindWindow() von WMP der in Hintergrund spielt !!!
 
Das Handle per WinSpector or X-Spy oder whatever raussuchen bringt dir nix da es sich jedesmal eh ändert.
Was du brauchst ist Titel oder noch besser den Namen der Fenster Klasse des Players (oder beides). Damit kannst du das Fenster finden und eventuell steuern.

Die Frage ist jedoch welches Fenster das richtige ist (kann auch das parent fenster von dem was du ausgewählt hast sein) und ob es sich mit den selben Nachrichten wie das WMP Fenster Steuern läßt. Am besten mal Onkel Google befragen...

taktaky 22. Sep 2007 12:15

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

der Windows Media Player spielt in Webseite in Hintergrund (Vielleicht als Plug-In).
HTML-Code :
Delphi-Quellcode:
<html>
<head>
<title>Test</title>
</head>
<body>

[img]test.avi[/img]

</body>
</html>
Wie kann ich den Titel oder den Classname rausfinden?

Der Onkel Google hilft aber nicht viel :mrgreen:. Hier ist alles, alles was er mir geschenckt hat :
Delphi-Quellcode:
  function TVideoWindow.GetVideoHandle: THandle;
  begin
    if FVideoWindow <> nil then
      result := FindWindowEx(Parent.Handle,0,Pchar('VideoRenderer'), Pchar(name))
    else
      Result := Canvas.Handle;
  end;

Was muss ich tun, um einen Code zu generieren?
es ist nicht möglich mit der Option "Unter der Maus" !

wie kann ich das Button Code klicken, ohne die Maus :mrgreen:

Hier ist das Video(ein Video in HTML-Seite) zum Testen :
Demo (Video) versteckt




Gruß


___________________________

jfheins 22. Sep 2007 16:23

Re: FindWindow() von WMP der in Hintergrund spielt !!!
 
Winspy hat eine integrierte Funktion "Code generieren" - hast du die mal ausprobiert? Funktioniert das?


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:11 Uhr.
Seite 1 von 4  1 23     Letzte »    

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