Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Einheitliche MediaPlayer Steuerung (https://www.delphipraxis.net/107309-einheitliche-mediaplayer-steuerung.html)

gibb 28. Jan 2008 14:50

Re: Einheitliche MediaPlayer Steuerung
 
Zitat:

Zitat von bitsetter
Hallo,

kann ja sein, dass WM_KEYDOWN und WM_KEYUP nicht vom VCL Player ausgewertet wird.
Hast du schon mal versucht den VCL Player mit windows.SetForegroundWindow() nach vorne zu holen und mit windows.keybd_event() Tastendrücke zu simmulieren?
Kann jetzt aber nicht sagen, ob es mit deiner Fernsteuerung auch funktioniert.

Falls du den VCL Player dann doch per Postmessage steuern möchtest, habe ich mal von den MenuItems die IDs geholt siehe Bild. Damit machst du das gleiche, als wenn du mit der Maus im Hauptmenü rumklickst.

Entschuldige, ich habe erst vorhin gesehen das ich dich hier so grausam übergangen habe...

Könnte mir jemand einen gefallen machen ? ich habe hier nur win2k und zuhause kein D2007 und ich müsste wissen wie der korrekte klassen &Fenster Name des Windows Media Player heisst damit ich ihn in den vordergrund setzen kann...

danke falls jemand schnell die zeit hat und ansonsten schaff ich das auch irgendwie zuhause ;)
LG Severin

bitsetter 28. Jan 2008 15:17

Re: Einheitliche MediaPlayer Steuerung
 
Zitat:

Zitat von gibb
Ob ich mir beide wege offen behalten will oder ob ich umstellen will so das die applikation immer wieder die fenster in den Vordergrund rückt oder wie das das ganze genau ablaufen soll...

Ich würde die Fenster nur nach vorne holen wenn es unbedingt notwendig ist, da es sonst nerven kann, wenn irgend ein Fenster sich in den Vordergrund drängt.

Zitat:

Zitat von gibb
Könnte mir jemand einen gefallen machen ? ich habe hier nur win2k und zuhause kein D2007 und ich müsste wissen wie der korrekte klassen &Fenster Name des Windows Media Player heisst damit ich ihn in den vordergrund setzen kann...

danke falls jemand schnell die zeit hat und ansonsten schaff ich das auch irgendwie zuhause ;)
LG Severin

Bei mir geht es so:
Delphi-Quellcode:
FindWindow('WMPlayerApp', 'Windows Media Player')

Hador 28. Jan 2008 15:32

Re: Einheitliche MediaPlayer Steuerung
 
Also, ich weiß ja nicht, wie du das Handle vom VLC ermittelst, aber bei mir funktioniert es so problemlos:
Delphi-Quellcode:
var
  wnd: HWND;
begin
  wnd := FindWindow('VLC DirectX', 'VLC (hardware YUV overlay DirectX output)');

  if wnd <> 0 then
  begin
    PostMessage(WND, WM_KEYDOWN, VK_SPACE, 0);
    PostMessage(WND, WM_KEYUP, VK_SPACE, 0);
  end;
end;

gibb 28. Jan 2008 15:40

Re: Einheitliche MediaPlayer Steuerung
 
Zitat:

Zitat von bitsetter
Zitat:

Zitat von gibb
Ob ich mir beide wege offen behalten will oder ob ich umstellen will so das die applikation immer wieder die fenster in den Vordergrund rückt oder wie das das ganze genau ablaufen soll...

Ich würde die Fenster nur nach vorne holen wenn es unbedingt notwendig ist, da es sonst nerven kann, wenn irgend ein Fenster sich in den Vordergrund drängt.

Ja das dachte ich mir auch... VLC wird ja meistens zum Video schauen benutzt daher ist das nicht weiter tragisch. Und der MediaPlayer will einfach nicht so wie ich will daher soll er nun in den vordergrund bis ich herausgefunden habe wie ich das anders machen kann.

Zitat:

Zitat von gibb
Könnte mir jemand einen gefallen machen ? ich habe hier nur win2k und zuhause kein D2007 und ich müsste wissen wie der korrekte klassen &Fenster Name des Windows Media Player heisst damit ich ihn in den vordergrund setzen kann...

danke falls jemand schnell die zeit hat und ansonsten schaff ich das auch irgendwie zuhause ;)
LG Severin

Bei mir geht es so:
Delphi-Quellcode:
FindWindow('WMPlayerApp', 'Windows Media Player')

mhmmm komisch... und mit dem handle kannst du auch SetForeGroundWindow ausführen ? weil bei mir hackt das dort immer. resp. ich kriege immer ein False zurück und dann auf wiedersehen und gute nacht nix ist dann mit tastenkeys senden.

(Ich habe einen externen tester ;) also wird bei ihm nix gesendet wobei er mir genau denselben handle angeben hat...)

gibb 28. Jan 2008 15:41

Re: Einheitliche MediaPlayer Steuerung
 
Zitat:

Zitat von Hador
Also, ich weiß ja nicht, wie du das Handle vom VLC ermittelst, aber bei mir funktioniert es so problemlos:
Delphi-Quellcode:
var
  wnd: HWND;
begin
  wnd := FindWindow('VLC DirectX', 'VLC (hardware YUV overlay DirectX output)');

  if wnd <> 0 then
  begin
    PostMessage(WND, WM_KEYDOWN, VK_SPACE, 0);
    PostMessage(WND, WM_KEYUP, VK_SPACE, 0);
  end;
end;

ich mach das so:
FCurrentHandle := FindWindow('wxWindowClassNR','VLC media player');

und das Funktioniert auch ;) VLC ist nun komplett implementiert und da brauch ich nix mehr... ich haue jetzt nur noch auf dem WMP rum bis der auch einigermassen das macht was ich will ;)

gibb 29. Jan 2008 08:33

Re: Einheitliche MediaPlayer Steuerung
 
Weiss jemand ob es möglich ist mit windows.keybd_event() f1 tasten zu drücken ?

weil es ist nämlich so das ich das gefühl habe das kann nicht funktionieren... jedenfalls nicht so wie ich das mache...

Delphi-Quellcode:
     
 keybd_event(112,0,0,0);
 keybd_event(112,0,KEYEVENTF_KEYUP,0);
oder ist das richtig so ?

lg Severin

bitsetter 29. Jan 2008 09:05

Re: Einheitliche MediaPlayer Steuerung
 
Hallo,

in Delphi öffnet sich damit bei mir die Hilfe.
Delphi-Quellcode:
  keybd_event(VK_F1,0,0,0);
  keybd_event(VK_F1,0,KEYEVENTF_KEYUP,0);
Edit: scheint aber das gleiche zu sein.

gibb 29. Jan 2008 09:13

Re: Einheitliche MediaPlayer Steuerung
 
wollte gerade sagen 112 = VK_F1 ;)

Mhmmm komisch komisch komisch.... ich kriege das mit dem MediaPlayer einfach nicht zum laufen... der erhält die Kommandos nicht... wobei er immer in den vordergrund gerückt wird. und somit auch die events ausgelöst werden. Hat jemand eine idee woran das liegen könnte ? Ich verstehe langsam die welt nicht mehr...

Lg Severin

gibb 29. Jan 2008 09:33

Re: Einheitliche MediaPlayer Steuerung
 
kann mir jemand volgenden code mit dem windows media player testen =? bei mir will das einfach nicht funktionieren...

Delphi-Quellcode:
 
  FCurrentHandle := FindWindow('WMPlayerApp', 'Windows Media Player');

  if SetForeGroundWindow(FCurrentHandle) then
  begin
    keybd_event(112,0,0,0);
    keybd_event(112,0,KEYEVENTF_KEYUP,0);
  end;
passiert da was bei euch ? sollte die hilfe öffnen...

LG Severin...

bitsetter 29. Jan 2008 10:12

Re: Einheitliche MediaPlayer Steuerung
 
Bei mir erscheint die Hilfe vom Mediaplayer, habe allerdings noch Version 8 drauf. :oops:
Wird denn
Delphi-Quellcode:
  keybd_event(112,0,0,0);
  keybd_event(112,0,KEYEVENTF_KEYUP,0);
überhaupt ausgeführt. Vielleicht wäre es auch besser , wenn du dem Fenster noch einen kurzen Augenblick Zeit geben würdest nach vorne zu kommen.
Zitat:

Zitat von gibb
wollte gerade sagen 112 = VK_F1 ;)

Man sollte trotzdem die vorgegebenen Konstanten benutzen, auch wenn es jetzt so geht, da sich der Wert später eventuell auch mal ändern kann.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:59 Uhr.
Seite 2 von 3     12 3      

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