Ich möchte eine App erstellen, die angezeigt wird, wenn der Benutzer seinen Bildschirm berührt. Es sollte nicht für Klick funktionieren. Ich habe nach den Berührungshilfen in Windows 7/8 gesucht. Aber ich habe gesehen, dass jedes Touch-Fenster mit RegisterTouchWindow registriert werden muss
TL; DR
Gibt es eine Möglichkeit, die Position der Berührungspunkte außerhalb meines Fensters (global) zu erhalten?
RegisterTouchWindow ist für Win 8 Apps nicht mehr notwendig.
Soweit ich weiß, gibt es mehrere Möglichkeiten, Ihren Zweck mit einigen Einschränkungen zu erreichen.
Dieser Artikel hier funktioniert auf beiden Win 7 & amp; 8. Die Hersteller-ID und die Produkt-ID des Touchscreens sind jedoch erforderlich. Es besteht die Möglichkeit, dass Ihre Anwendung mit einem Touch-Gerät nicht richtig funktioniert.
Verwenden Sie RegisterPointerInputTarget auf Win 8. Von meinem Debugging hat der Windows 8 Touch-Mechanismus seine einzigartigen Eigenschaften. Zwischen einem Aufsetzen und einem Auffrischen werden alle Berührungsereignisse an das Fenster gesendet, das das erste Berührungsereignis empfängt, unabhängig davon, ob das Fenster minimiert oder von einem anderen Fenster abgedeckt wird oder das WS_EX_TRANSPARENT-Attribut in seiner späteren Periode festgelegt wird. Die Berührungsereignisse zwischen einem Drücken und Freigeben können nur dann an ein anderes Fenster weitergegeben werden, wenn das erste Fenster zerstört wird. Mit dieser API werden alle Berührungsereignisse an das registrierte Fenster gesendet. Andere Fenster können keine Berührungsereignisse mehr empfangen, bis UnregisterPointerInputTarget wird vom registrierten Fenster aufgerufen, oder die Berührungseingabe wird mit InjectTouchInput . "Input, der vom registrierten Eingabeziel injiziert wird, wird nicht abgefangen." Beachten Sie, dass für die Verwendung dieser API UI-Zugriffsberechtigung erforderlich ist. Ein Beispiel finden Sie hier .
Windows-Hook. Bei der Desktop-App unter Win 7/8 können Touch-Ereignisse mithilfe von SetWindowsHookEx problemlos verknüpft werden mit WH_CALLWNDPROC oder WH_GETMESSAGE. Bei der Metro-App unter Win 8 kann nur das erste Zeigerereignis in der Meldungsschleife des Fensters erkannt werden. Obwohl ein Zeigerereignis entweder durch einen Klick oder durch einen Fingertipp erfolgen kann, GetPointerType kann Ihnen sagen, ob es sich um einen Touch-Pointer oder einen Mauszeiger handelt. Beispiele für die Verwendung von Hooks finden Sie unter hier .
Ein Code-Snippet zum Behandeln von Zeigerereignissen:
%Vor%