AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

MausReaktion außerhab der FORM

Ein Thema von wschrabi · begonnen am 22. Mai 2023 · letzter Beitrag vom 24. Mai 2023
Antwort Antwort
wschrabi

Registriert seit: 16. Jan 2005
448 Beiträge
 
#1

MausReaktion außerhab der FORM

  Alt 22. Mai 2023, 14:06
Hallo
Ich habe 2 Screens links das FORM und rechts ein Anderes Fenster.
Ich möchte jetzt wenn ich auf dem Anderen Fenster bin einen Screenshoot machen, wenn ich die Maus klicke (MouseUP). Doch wie kann ich das realisieren wenn die Maus ausserhalb der FORM ist? Der Screenshoot läuft, doch der Event wann ich den Screenshoot machen möchte möchte ich mit Maus auf dem anderen FEnster (nicht Das Delphi Form) steuern. DANKe für jeden Tipp.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: MausReaktion außerhab der FORM

  Alt 22. Mai 2023, 14:18
Du kannst dafür einen Maushook verwenden: SetWindowsHookEx(WH_MOUSE_LL, ...
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#3

AW: MausReaktion außerhab der FORM

  Alt 22. Mai 2023, 14:20
Wenn der MouseDown in deinem Programm/Fenster passiert, dann bleibt das Capture bei deiner Anwendung, auch wenn sich die Maus außerhalb deiner Fenster bewegt. (so lange, bis zum MouseUp)
$2B or not $2B
  Mit Zitat antworten Zitat
wschrabi

Registriert seit: 16. Jan 2005
448 Beiträge
 
#4

AW: MausReaktion außerhab der FORM

  Alt 24. Mai 2023, 08:40
ich hab das hier gefunden: https://entwickler-ecke.de/topic_Mou...m_44763,0.html
Doch wie geht das mit dem MouseHook? DANKE
  Mit Zitat antworten Zitat
wschrabi

Registriert seit: 16. Jan 2005
448 Beiträge
 
#5

AW: MausReaktion außerhab der FORM

  Alt 24. Mai 2023, 09:16
danke mit der Idee mit HOOK. Es klappt nun, doch nicht in WIN11 ! Wieso wird da Das nicht gemacht? In win 10 klappte es.
Also ich versteh das nicht. auf dem EntwicklerPC mit WIN 10 klappte und auf einen anderen PC mit WIN 10 oder 11 klappte es nicht. Woran kann das liegen, dass der HOOK nicht klappt.

Geändert von wschrabi (24. Mai 2023 um 09:25 Uhr)
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: MausReaktion außerhab der FORM

  Alt 24. Mai 2023, 09:21
Es sollte sich in "Windows 11" mit Mouse-Hooks nichts geändert haben.
Quellen:
Kannst du ein Beispiel von deinem Code posten? Hast du es mal in einer frischen virtuellen Maschine ausprobiert?
  Mit Zitat antworten Zitat
klaus schaaff

Registriert seit: 25. Jul 2009
24 Beiträge
 
#7

AW: MausReaktion außerhab der FORM

  Alt 24. Mai 2023, 10:48
Hallo wschrabi,

der MouseHook wird soviel helfen, wie weit du ihn ausgebaut hast.
Der kann in 7-9 Variationen aufgebaut werden. Was du eigentlich
bräuchtest wäre der WH_JOURNALRECORD, nicht der WH_MOUSE oder
WH_MOUSE_LL. Nur:
Zitat:
Journaling Hooks APIs are unsupported starting in Windows 11 and will be removed in a future release. Because of this, we highly recommend calling the SendInput TextInput API instead.
Außerdem, alle Hooks der SetWindowsHookExW Funktion sind nicht
Debugfähig unter Delphi IDE (getestet von mir bis Delphi 2009).
Läuft der Debug-Pointer in die HOOKPROC, hängt das Betriebssysten sich auf, keine Tasten funktionieren mehr, auch
die Maus nicht. Weiterer Problempunkt: Drücken von Klammeraffengriff [Strg + Alt + Entf] entfernt den Hook aus dem
System. Es läuft auf Blindprogrammierung hinaus ohne eine
Möglichkeit die Ursache von Fehlern finden zu können. Alles nur nach Try & Error.
Dein angefragter Fall ist äußerst aufwendig, leider.
Ich könnte nur deinen Code anschauen und Vermutungen anstellen,
warum was nicht funktioniert. Alles in allem ist das Experten-Programmierung und kein RAD (Rapid Application Development).

Was ich gemacht habe, im gleichen Fall Screenshot, ist ein
SysHotKey, ein systemweiter Hotkey [Strg + Shift + y].
Warum? Die Screenshot-Anwendung muss während des Shots FormMain.Visible:= false; minimiert in die Taskleiste reicht nicht, sonst wird der Screen samt Screenshot-Anwendung fotografiert. Das will man nicht! Dann:
Code:
    repeat
      t2:= GetTickCount;
      Sleep(10);
    until t2 - t1 > 500;
Nach dem Screenshot muss die Screenshot-Anwendung wieder FormMain.Visible:= true. Weiter, der Mouse-Cursor sollte in den Shot. Dazu hat Renate Schaaff (Gruß an sie) was gepostet. Sie hat es etwas anders gelöst als ich, aber funktionierend.

Der Vorteil von SysHotKey ist nur, er hat funktioniert, während alle anderen Lösungen versagt haben, aus unterschiedlichsten Gründen. Ich könnte gerne meinen Screengrabber zu Verfügung stellen, siehe Anhang Hilfe.pdf. Das komplette System Delphi 2009 ist jedoch 40 MB groß und hat davon 30 MB Komponenten, die installiert werden müssen.

Wenn du dir das alles antun möchtest, deine Entscheidung.

Liebe Grüße
Klaus Schaaff
Angehängte Dateien
Dateityp: pdf Hilfe.pdf (494,7 KB, 6x aufgerufen)

Geändert von klaus schaaff (24. Mai 2023 um 10:53 Uhr) Grund: Der Anhang wurde nicht gespeichert!
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: MausReaktion außerhab der FORM

  Alt 24. Mai 2023, 11:45
Du kannst Dich eines Tricks bedienen, erschaffe eine per "AlphaBlend := True; AlphaBlendValue := 1;" sogut wie unsichtbare OnTop form die sich auf alles ausdehnt, geb der einen Maus-Handler mit und die Sache ist erledigt.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Antwort Antwort


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 05:52 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