![]() |
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. |
AW: MausReaktion außerhab der FORM
Du kannst dafür einen Maushook verwenden:
Delphi-Quellcode:
SetWindowsHookEx(WH_MOUSE_LL, ...
|
AW: MausReaktion außerhab der FORM
Zitat:
|
AW: MausReaktion außerhab der FORM
ich hab das hier gefunden:
![]() Doch wie geht das mit dem MouseHook? DANKE |
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. |
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? |
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:
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:
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.
repeat
t2:= GetTickCount; Sleep(10); until t2 - t1 > 500; 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 |
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