AGB  ·  Datenschutz  ·  Impressum  







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

Windows RawInput Funktionen

Ein Thema von BigAl · begonnen am 3. Feb 2024 · letzter Beitrag vom 5. Feb 2024
Antwort Antwort
BigAl

Registriert seit: 6. Sep 2008
Ort: Kehl
504 Beiträge
 
Delphi 12 Athens
 
#1

Windows RawInput Funktionen

  Alt 3. Feb 2024, 11:56
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?
Man sollte nie so viel zu tun haben, dass man zum Nachdenken keine Zeit mehr hat. (G.C. Lichtenberg)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Windows RawInput Funktionen

  Alt 3. Feb 2024, 13:24
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 https://www.delphipraxis.net/212854-...ffline-11.html
* und außerdem https://www.delphipraxis.net/214473-...vor-winmd.html



RawInput ist sooo alt ... was fehlt denn?
Hätte gedacht, dass man dafür so Einiges im Delphi findet.
$2B or not $2B

Geändert von himitsu ( 3. Feb 2024 um 13:40 Uhr)
  Mit Zitat antworten Zitat
BigAl

Registriert seit: 6. Sep 2008
Ort: Kehl
504 Beiträge
 
Delphi 12 Athens
 
#3

AW: Windows RawInput Funktionen

  Alt 3. Feb 2024, 13:40
In Delphi fehlt Vieles und der Rest ist nicht aktuell und schon garnicht vollständig.
Drum gibt/gab es ja Projekte wie die JCL.

Es gibt im GetIt ein neues Projekt, welches automatisiert die "ganze" API von Windows importiert, aber
* erstmal ist GetIt grade im Arsch https://www.delphipraxis.net/212854-...ffline-11.html
* und außerdem https://www.delphipraxis.net/214473-...vor-winmd.html
Bisher hatte ich eigentlich in Delhhi (Winapi) ziemlich alles gefunden was ich brauche. War sehr selten das da was fehlte und dann hat man da schnell was gefunden bzw. konnte sich das selbst schreiben. Nur leider zu diesem Thema finde ich irgendwie nichts.

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.
Man sollte nie so viel zu tun haben, dass man zum Nachdenken keine Zeit mehr hat. (G.C. Lichtenberg)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Windows RawInput Funktionen

  Alt 3. Feb 2024, 13:50
...

RawInput ist sooo alt ... was fehlt denn?
Hätte gedacht, dass man dafür so Einiges im Delphi findet.
PS:
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
$2B or not $2B

Geändert von himitsu ( 3. Feb 2024 um 13:58 Uhr)
  Mit Zitat antworten Zitat
BigAl

Registriert seit: 6. Sep 2008
Ort: Kehl
504 Beiträge
 
Delphi 12 Athens
 
#5

AW: Windows RawInput Funktionen

  Alt 3. Feb 2024, 14:09
[QUOTE=himitsu;1532959]
...
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
Das wurde aber früher installiert, als es GetIt noch gab
Man sollte nie so viel zu tun haben, dass man zum Nachdenken keine Zeit mehr hat. (G.C. Lichtenberg)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Windows RawInput Funktionen

  Alt 5. Feb 2024, 01:12
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 Bei Google suchenWindows.UI.Xaml.dll)


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;
$2B or not $2B

Geändert von himitsu ( 5. Feb 2024 um 01:16 Uhr)
  Mit Zitat antworten Zitat
Der schöne Günther

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

AW: Windows RawInput Funktionen

  Alt 5. Feb 2024, 08:25
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...
  Mit Zitat antworten Zitat
BigAl

Registriert seit: 6. Sep 2008
Ort: Kehl
504 Beiträge
 
Delphi 12 Athens
 
#8

AW: Windows RawInput Funktionen

  Alt 5. Feb 2024, 09:02
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...
Das wäre natürlich ideal. Im Device Manager wird das Teil als "HID-compliant touch screen" angezeigt. Windows 11 behandelt es aber als normale Maus (GetCurrentInputMessageSource liefert IMDT_MOUSE und nicht IMDT_TOUCH). Es wird halt immer der Mauszeiger angezeigt, was störend und teilweise verwirrend ist. Abschalten des Zeigers ist auch nicht so prickelnd, da ja trotzdem die Buttons etc, über denen sich der Mauszeiger befindet, ge-highlited werden...

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.
Man sollte nie so viel zu tun haben, dass man zum Nachdenken keine Zeit mehr hat. (G.C. Lichtenberg)

Geändert von BigAl ( 5. Feb 2024 um 09:18 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Windows RawInput Funktionen

  Alt 5. Feb 2024, 10:41
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 MSDN-Library durchsuchenGetMessageExtraInfo gesetzt bekommen.



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)
Angehängte Dateien
Dateityp: 7z PowerManagement.exe.7z (796,7 KB, 1x aufgerufen)
$2B or not $2B

Geändert von himitsu ( 5. Feb 2024 um 14:26 Uhr)
  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 21:11 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