![]() |
Windows RawInput Funktionen
Hallo zusammen,
ich möchte an einem Touch-Bildschirm den Mauszeiger verstecken (Screen.Cursor := crNone) sobald die Eingaben vom Touch kommen. Sobald eine evtl. angeschlossene Maus aktiv wird soll der Mauszeiger aktiviert werden (Screen.Cursor := crDefault). Meine Idee war nun die "RawInput" Funktionen der Windows API zu nutzen um herauszufinden wer die Eingabe mache. Über GetRawInputDeviceList könnte erstmal eine List der der Devices abgerufen werden etc. Aber da scheiter es schon. Sämtliche "RawInput"-Funktionen sind nirgends zu finden. Sind die "RawInput"-Funktionen in Delphi 12 nicht enthalten? Gibt es irgendwo eine "recommended" Quelle zu diesen Funktionen? |
AW: Windows RawInput Funktionen
In Delphi fehlt Vieles und der Rest ist nicht aktuell und schon garnicht vollständig.
Drum gibt/gab es ja Projekte wie die JEDI Windows API Library. Es gibt im GetIt ein neues Projekt, welches automatisiert die "ganze" API von Windows importiert, aber * erstmal ist GetIt grade im Arsch ![]() * und außerdem ![]() RawInput ist sooo alt ... was fehlt denn? Hätte gedacht, dass man dafür so Einiges im Delphi findet. |
AW: Windows RawInput Funktionen
Zitat:
Von dem "Auto-Import" halte ich nicht so viel. Erfahrungsgemäß produziert das jede Menge Müll. Aber ich lasse mich da gerne belehren. Dann werde ich halt wieder bei Visual Studio schauen und mir da die Sachen rausziehen die ich brauche. Dachte halt es gibt schon was Fertiges. |
AW: Windows RawInput Funktionen
Zitat:
C:\Users\%username%\Documents\Embarcadero\Studio\23.0\CatalogRepository\WindowsAPIfromWinMD-1.0\Windows.UI.Input.pas C:\Users\%username%\Documents\Embarcadero\Studio\23.0\CatalogRepository\WindowsAPIfromWinMD-1.0\Windows.UI.WindowsAndMessaging.pas ...\CnPack VCL Components\Source\NonVisual\CnRawInput.pas |
AW: Windows RawInput Funktionen
[QUOTE=himitsu;1532959]
Zitat:
|
AW: Windows RawInput Funktionen
Joar, bevor Delphi gestorben ist.
Eigentlich hatte ich gestern auch mal überlegt endlich mein System zurückzusetzen, aber dann ginge Delphi ja nicht. Mein Problem ist aktuell nur, dass immer alle Explorer.exe (inkl. Taskleiste) abstürzen/neustarten, wenn der Bildschirm aus dem Standby kommt. (irgendein Dreck mit der ![]() Versuch mal einen der Beiden, während du die Message (OnMouseIrgendwas/OnKeyIrgendwas bzw. WM_MOUSE_irgendwas/WM_KEY_irgendwas) behandelts.
Delphi-Quellcode:
// Winapi.Windows.pas
type INPUT_MESSAGE_DEVICE_TYPE = ( IMDT_UNAVAILABLE = 0, IMDT_KEYBOARD = 1, IMDT_MOUSE = 2, IMDT_TOUCH = 4, IMDT_PEN = 8, IMDT_TOUCHPAD = 16 ); INPUT_MESSAGE_ORIGIN_ID = ( IMO_UNAVAILABLE = 0, IMO_HARDWARE = 1, IMO_INJECTED = 2, IMO_SYSTEM = 4 ); function GetCurrentInputMessageSource(inputMessageSource: PINPUT_MESSAGE_SOURCE): BOOL; stdcall; function GetCIMSSM(inputMessageSource: PINPUT_MESSAGE_SOURCE): BOOL; stdcall; |
AW: Windows RawInput Funktionen
Wäre nicht der richtige Ansatz, den korrekten Treiber für den Touch zu installieren, sodass der auch ehrlich sagt, dass er ein Touch ist? Windows versteckt doch den Mauszeiger automatisch, wenn man über Touch bedient.
Wenn der Touch-Bildschirm allerdings sagt "Ich bin eine Maus", dann kann es Windows ja gar nicht besser machen... |
AW: Windows RawInput Funktionen
Zitat:
Update: Von Windows selbst wird der Touch wohl als solcher erkannt. Wenn ich z.B. auf dem Desktop mit dem Finger länger auf ein Symbol drücke wird "rechte Maustaste" ausgelöst. Was ja bei einer Maus so nicht passiert. Der Mauszeiger verschwindet trotzdem nicht. |
AW: Windows RawInput Funktionen
Liste der Anhänge anzeigen (Anzahl: 2)
Ich hatte auch mal bissl damit rumgespielt, da ich eh grade ein TestProjekt hab, wobei ich über diese API gestolpert war.
OnMouseMove, OnMouseDown/OnMouseUp und MouseWheel an der Form, also überall zwischen den GroupBoxen, sowie OnKeyDown und OnKeyUp mit KeyPreview. Lokal stimmt, also Maus=Hardware. Im RDP behaptet es, es käme von der Hardware. Bei AnyDesk wird aber von Injected geredet. Wird es aktuell nicht innerhalb einer "Input"-Message abgefragt, dann heißt es oft Unavailable. Mein Touchpad behauptet es wäre die Maus (beide Win10-DELL und Win11-HP). (vermutlich wegen der Mausemulation) Beim Touchscreen kommt IMDT_TOUCH (Win10-DELL) und er hat auch von Hardware/Treiber eine ![]() PS: Seitdem ich das GetCurrentInputMessageSource/GetCIMSSM hinzugefügt hab, meckert der Defender, in Win10, beim ersten Start nach dem Kopieren der EXE (startet sie aber dennoch nach ein paar Sekunden, oder beim zweiten Doppelklick) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:46 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