AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Rechtsklick in Flashplayer abfangen

Rechtsklick in Flashplayer abfangen

Ein Thema von greenmile · begonnen am 8. Sep 2010 · letzter Beitrag vom 9. Sep 2010
Antwort Antwort
greenmile

Registriert seit: 17. Apr 2003
1.107 Beiträge
 
Delphi 10.3 Rio
 
#1

Rechtsklick in Flashplayer abfangen

  Alt 8. Sep 2010, 16:33
Hallo,

ich denke mal, die Frage passt hier rein. Also, ich habe einen TEmbeddedWB in meine Form eingebunden, in der mittels HTML ein Flashplayer geladen wird. Allerdings nervt das Pop-Menü, wenn man mit der rechten Maustaste auf diesen Flashplayer klickt ("Option", "Über" usw.), auch die linke Maustaste (bei Videos z.B. "Pause" / "Play") lässt sich nicht abfangen. Weiß jemand, ob und wie ich das deaktivieren oder abfangen kann? Die Option "menu='false'" in der Quellhtml Datei bringt leider nichts ...

Gruß,
Paul
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.919 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Rechtsklick in Flashplayer abfangen

  Alt 8. Sep 2010, 16:37
Bist Du selbst Erzeuger des Flash-Objektes? Beim Exportieren kann man u.a. dies explizit festlegen.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
greenmile

Registriert seit: 17. Apr 2003
1.107 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: Rechtsklick in Flashplayer abfangen

  Alt 8. Sep 2010, 16:38
Nein, ist ein fremdes Flashobject.
  Mit Zitat antworten Zitat
blackfin
(Gast)

n/a Beiträge
 
#4

AW: Rechtsklick in Flashplayer abfangen

  Alt 8. Sep 2010, 17:49
Du kannst es damit versuchen, die Message WM_RBUTTONDOWN abzufangen und somit auf einen rechten Mausklick + Koordinaten prüfen / reagieren.
Wenn die Mausklick-Koordinaten dann innerhalb des Rects des Flashmovies sind, die Message als "handled" gelten lassen und schon ist das Popup-Menü passé.
Ich hab sowas schonmal gemacht, um genau dieses Flash-Menü zu deaktivieren, allerdings habe ich da den Mausklick generell für das gesamte Delphi-Programm abgeschaltet.
(weil er da eh keine Verwendung hatte..und....reine Faulheit natürlich )

Wenn du den rechten Mausklick in deinem Programm anderweitig brauchst, musst du in meinem Code eben noch eine Prüfung auf den lParam der Message einbauen, der angibt, wo geklickt wurde (X/Y der Client-Area) und dann dementsprechend den Mausklick erlauben oder nicht.
Hier die Message-beschreibung im MSDN: WM_RBUTTONDOWN

Application.OnMessage := Form1.NoFlashRightClick ; ...
..
Delphi-Quellcode:
procedure Form1.NoFlashRightClick(var Msg: TMsg; var Handled: Boolean) ;
begin
   // hier noch durch eine Prüfung ergänzen, wo geklickt wurde (durch den Msg.lParam)

  if((Msg.message = WM_RBUTTONDOWN) and (Msg.wParam = MK_RBUTTON)) then
  begin
    Handled := true ;
  end
  else
  begin
    Handled := false ;
  end;
end;

Mit der linken Maustaste verhält es sich genauso, nur ist das dann natürlich die Message WM_LBUTTONDOWN

Geändert von blackfin ( 8. Sep 2010 um 17:58 Uhr)
  Mit Zitat antworten Zitat
greenmile

Registriert seit: 17. Apr 2003
1.107 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: Rechtsklick in Flashplayer abfangen

  Alt 9. Sep 2010, 10:34
Wow, das funktioniert erste Sahne, vielen Dank. Für die Nachwelt hier der Source:


Code:
Application.OnMessage := NoFlashRightClick;
Code:
procedure TfrmMain.NoFlashRightClick(var Msg: TMsg; var Handled: Boolean);

  Function CursorInPlayerWindow: Boolean;
    var cPos, playerPos: TPoint;
  begin
    GetCursorPos(cPos);
    playerPos := Player.ClientToScreen(point(0,0));
    Result := (cPos.x>playerPos.x) and (cPos.y>playerPos.y) and (cPos.x<(playerPos.x+Player.Width)) and (cPos.y<(playerPos.y+Player.Height)));
  end;

begin
  Handled := false;

  If ((Msg.message = WM_RBUTTONDOWN) and (Msg.wParam = MK_RBUTTON)) then begin
    If CursorInPlayerWindow then Handled := True;
    // Hier ggf eigenes Menü "aufpoppen" lassen
  End Else If ((Msg.message = WM_LBUTTONDOWN) and (Msg.wParam = MK_LBUTTON)) then begin
    If CursorInPlayerWindow then Handled := True;
  End Else If ((Msg.message = WM_RBUTTONDBLCLK) or (Msg.message = WM_LBUTTONDBLCLK)) then begin
    If CursorInPlayerWindow then Handled := True;
  End;
end;
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 15:18 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