Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   MausReaktion außerhab der FORM (https://www.delphipraxis.net/213090-mausreaktion-ausserhab-der-form.html)

wschrabi 22. Mai 2023 13:06

MausReaktion außerhab der FORM
 
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.

jaenicke 22. Mai 2023 13:18

AW: MausReaktion außerhab der FORM
 
Du kannst dafür einen Maushook verwenden:
Delphi-Quellcode:
SetWindowsHookEx(WH_MOUSE_LL, ...

himitsu 22. Mai 2023 13:20

AW: MausReaktion außerhab der FORM
 
Zitat:

Zitat von wschrabi (Beitrag 1522695)
(MouseUP)

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)

wschrabi 24. Mai 2023 07:40

AW: MausReaktion außerhab der FORM
 
ich hab das hier gefunden: https://entwickler-ecke.de/topic_Mou...m_44763,0.html
Doch wie geht das mit dem MouseHook? DANKE

wschrabi 24. Mai 2023 08:16

AW: MausReaktion außerhab der FORM
 
danke mit der Idee mit HOOK. Es klappt nun, doch nicht in WIN11 ! Wieso wird da Das nicht gemacht? In win 10 klappte es.:roll:
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.

Der schöne Günther 24. Mai 2023 08:21

AW: MausReaktion außerhab der FORM
 
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?

klaus schaaff 24. Mai 2023 09:48

AW: MausReaktion außerhab der FORM
 
Liste der Anhänge anzeigen (Anzahl: 1)
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

KodeZwerg 24. Mai 2023 10:45

AW: MausReaktion außerhab der FORM
 
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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:38 Uhr.

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