AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Automatische Anzeige der virt. Tastatur unterdrücken
Thema durchsuchen
Ansicht
Themen-Optionen

Automatische Anzeige der virt. Tastatur unterdrücken

Ein Thema von hotrs02 · begonnen am 25. Jul 2022 · letzter Beitrag vom 16. Aug 2022
Antwort Antwort
Benutzerbild von himitsu
himitsu

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

AW: Automatische Anzeige der virt. Tastatur unterdrücken

  Alt 3. Aug 2022, 20:44
Zitat:
Ich glaube die gibt es nicht mehr
Vor vielleicht 2 Monaten hatte ich ein Windows 10 zurückgesetzt (auf einem PC mit Touch und ohne Tastatur).

Nach bissl verzweifeltem mehrmaligem rumgeklicke in den Tastatur-Einstellungen war ich über diese Option gestoßen.
Ich glaube die war ganz weit unterhalb der anderen Option, zum Einblenden der Tastatur,

aber als ich für die Doku später nochmal danach sehen wollte ... seitdem finde ich die Option nicht mehr.


Zitat:
Was ich nicht verstehe, wieso haben die das SetInputScope nicht schon längst eingebaut
Die brauchen bekanntlich immer 10-20 Jahre, bis sie das Neue finden und eingebaut haben.

SetThreadDescription und sogar GetThreadDescription gibt es auch schon seit über 7 Jahren
und dennoch arbeitet TThread.NameThreadForDebugging immernoch ausschließlich mit einer Exception.
Echt blöd, denn wird der Debugger erst später angehängt, sind die Namen verloren und auch im Programm kann man die Namen nicht auslesen.


Für Unicode hatten sie auch 9 ähh 16 Jahre gebraucht. (WinNT/Win2000)
64 Bit (Windows) kam 10 ähh 18 Jahre zu spät.
Für macOS/OSX kam es fast genau 10 Jahre nach der Veröffentlichung.
Bei iOS brauchten sie dafür nur 4 Jahre.
64 Bit iOS/OSX kam auch wieder 1-2 Jahre zu spät. (viele konnten nicht mehr oder mußten mit der Beta kämpfen)
Und Linux ... da haten sie schonmal nach nur 2 Jahren ein Kylix ... aber der jetzige Linux-Compiler kam ebenfalls 16-17 Jahre zu spät.



[edit]
Ohhh, ich seh grade, dass MSDN-Library durchsuchenSetInputScope gerade mal erst 21 Jahre alt ist.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 3. Aug 2022 um 21:22 Uhr)
  Mit Zitat antworten Zitat
Der schöne Günther

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

AW: Automatische Anzeige der virt. Tastatur unterdrücken

  Alt 3. Aug 2022, 21:22
Ich wollte nur dalassen dass sich bei MS noch keiner dazu geäußert hat, aber vielleicht kommt da ja noch was...
Angehängte Grafiken
Dateityp: png Screenshot 2022-08-03 222142.png (137,6 KB, 15x aufgerufen)
  Mit Zitat antworten Zitat
hotrs02

Registriert seit: 7. Apr 2022
41 Beiträge
 
#3

AW: Automatische Anzeige der virt. Tastatur unterdrücken

  Alt 4. Aug 2022, 09:28
Ich wollte nur dalassen dass sich bei MS noch keiner dazu geäußert hat, aber vielleicht kommt da ja noch was...
Danke für das Update!
  Mit Zitat antworten Zitat
einbeliebigername

Registriert seit: 24. Aug 2004
140 Beiträge
 
Delphi XE8 Professional
 
#4

AW: Automatische Anzeige der virt. Tastatur unterdrücken

  Alt 3. Aug 2022, 21:53
Hallo,

SetThreadDescription und sogar GetThreadDescription gibt es auch schon seit über 7 Jahren
und dennoch arbeitet TThread.NameThreadForDebugging immernoch ausschließlich mit einer Exception.
Echt blöd, denn wird der Debugger erst später angehängt, sind die Namen verloren und auch im Programm kann man die Namen nicht auslesen.
Das ist doch auch wieder so einfach und schnell umsetzbar. Ja, Ok, Debugger ist vieleicht etwas aufwendiger und beim Remotedebugger muss etwas mehr gemacht werden. Aber das ist doch kein Ding wo gesamt Embarcadero Wochen, Monate dran arbeitet.

Ich wollte nur dalassen dass sich bei MS noch keiner dazu geäußert hat, aber vielleicht kommt da ja noch was...
Hoffentlich bekommst du da eine Antwort. Vielleicht kann man da auch Antworten auf die anderen offenen Fragen zur Bildschirmtastatur bekommen. Obwohl das ja eigentlich Aufgabe von Embarcadero wäre.
Mit freundlichen Grüßen, einbeliebigername.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Automatische Anzeige der virt. Tastatur unterdrücken

  Alt 3. Aug 2022, 22:34
Im Notfall macht man einfach Beides, so lange bis man fertig ist.
Da diese Funktion ja erst seit Windows 10 existiert, bräuchte man eh ein IF-WinVer im Programm. (gut, man könnte jetzt auch sagen, dass die anderen Windowse eh tot sind, also egal )

Und sie haben ja bereits im Debugger/RemoteDebugger/PAServer eine Stelle, wo sie den Stacktrace auslesen, dafür haben sie bereits das Handle des Threads und können somit ohne Probleme auch GetThreadDescription aufrufen.
Und die andere Stelle, wo die Threads aufgelistet werden, da haben sie bestimmt auch die Handles und können das ebenfalls machen.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 3. Aug 2022 um 22:37 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Automatische Anzeige der virt. Tastatur unterdrücken

  Alt 4. Aug 2022, 16:51
Joar, also bezüglich SetInputScope gibt es noch garkeine Meldungen auf https://quality.embarcadero.com


und beim Anderen .... joar, hatte schon wieder ganz vergessen, aber da hat sich eh nichts getan
https://quality.embarcadero.com/brow...Description%22
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
einbeliebigername

Registriert seit: 24. Aug 2004
140 Beiträge
 
Delphi XE8 Professional
 
#7

AW: Automatische Anzeige der virt. Tastatur unterdrücken

  Alt 8. Aug 2022, 15:43
Hallo,

ich habe noch weiter geforscht. Mir fehlt ja noch das Reagieren auf das Ein-/Aus-blenden der Tastatur. Ich habe mit den Schlagwörtern und Bezeichnern von der Seite https://docs.microsoft.com/de-de/win...touch-keyboard die Suchen gequält.

Bei einer Suche für dieses Thread bin ich mal auf den Blogbeitrag (https://blogs.embarcadero.com/de/delphi-winui-3-demo/) von Embarcadero zum Thema Win UI 3 gestoßen. Dort geht es eigentlich mehr um XAML, aber man ist ja schon etwas verzweifelt und greift nach dem kleinsten Strohhalm. Ich hatte auch schon das Demo-Projekt aus GetIt auf der Platte und bin mit einem Bezeichner fündig geworden.

In der Unit Winapi.UI.ViewManagement gibt es die Klasse TCore_CoreInputView mit der Klassenmethode GetForCurrentView . Diese gibt ein Interface vom Type Core_ICoreInputView zurück, welches unteranderem zwei Funktionen TryShowPrimaryView und TryHidePrimaryView kennt. Ich habe das mal ausprobiert (aktualisiertes Projekt im Anhang). Bei mir geht mit den Funktionen die Bildschirmtastatur auf und zu.

Bloß mit dem OcclusionsChanged werde ich nicht ganz warm. Die Liste, welche man da bekommt, ist sehr oft leer. Und bei dem OcclusionKind hab ich bis jetzt nur Floating gesehen.

Nun gilt es an die richtigen Interfaces zu kommen. Mich interessiert z.B.:
Delphi-Quellcode:
  Core_ICoreInputView4 = interface(IInspectable)
  ['{002863D6-D9EF-57EB-8CEF-77F6CE1B7EE7}']
    function add_PrimaryViewShowing(handler: TypedEventHandler_2__Core_ICoreInputView__Core_ICoreInputViewShowingEventArgs): EventRegistrationToken; safecall;
    procedure remove_PrimaryViewShowing(token: EventRegistrationToken); safecall;
    function add_PrimaryViewHiding(handler: TypedEventHandler_2__Core_ICoreInputView__Core_ICoreInputViewHidingEventArgs): EventRegistrationToken; safecall;
    procedure remove_PrimaryViewHiding(token: EventRegistrationToken); safecall;
  end;
Angehängte Dateien
Dateityp: zip Dp211080.AutomatischeAnzeigeDerVirtTastaturUnterdruecken.zip (67,0 KB, 4x aufgerufen)
Mit freundlichen Grüßen, einbeliebigername.
  Mit Zitat antworten Zitat
Der schöne Günther

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

AW: Automatische Anzeige der virt. Tastatur unterdrücken

  Alt 8. Aug 2022, 18:57
Du warst schneller, den IInputView hatte MS jetzt auch:

Zitat:
Emily Bender

Howdy, I believe this may help: CoreInputView.PrimaryViewShowing Event (Windows.UI.ViewManagement.Core) - Windows UWP applications | Microsoft Docs

There's a function called TryCancel, so when the SIP wants to show, in your handler you call TryCancel

LMK if there's more help i can provide, a thread over mail may be helpful as I can loop in relevant text input devs who can help debug
  Mit Zitat antworten Zitat
hotrs02

Registriert seit: 7. Apr 2022
41 Beiträge
 
#9

AW: Automatische Anzeige der virt. Tastatur unterdrücken

  Alt 9. Aug 2022, 15:38
Vielen Dank an euch beide für eure Mühen.

Das kommt genau richtig, der Ansatz mit dem doppelten, schreibgeschützten Eingabefeldern hat nämlich leider doch einen Haken. Wir nach auf von TEdit.SetFocus das Eingabefeld erneut angeklickt, so öffnet sich letztendlich doch leider noch die Tastatur.

Ich werde mir die Tage die genannte Schnittstelle genauer anschauen.
  Mit Zitat antworten Zitat
einbeliebigername

Registriert seit: 24. Aug 2004
140 Beiträge
 
Delphi XE8 Professional
 
#10

AW: Automatische Anzeige der virt. Tastatur unterdrücken

  Alt 9. Aug 2022, 23:39
Hallo,

Ach, ich schnell ... ne.

den IInputView hatte MS jetzt auch:
Ne, MS hat das bestimmt schon länger. Wir haben es jetzt teilweise auch. Es fehlt noch vieles.

Zitat:
Emily Bender

Howdy, I believe this may help: CoreInputView.PrimaryViewShowing Event (Windows.UI.ViewManagement.Core) - Windows UWP applications | Microsoft Docs

There's a function called TryCancel, so when the SIP wants to show, in your handler you call TryCancel

LMK if there's more help i can provide, a thread over mail may be helpful as I can loop in relevant text input devs who can help debug
Ich habe bei meinem Testprojekt weiter gemacht (aktualisierte Version im Anhang) und soweit vollständig vorhanden die Events implementiert. Für das enthaltene Memo habe ich das TryCancel beim PrimaryViewShowing mal umgesetzt.

Es funktioniert wenn man die Bildschirmtastatur generell nicht aufgehen lassen will (also immer ein TryCancel macht, aber ich habe das bei Anwendungswechsel noch nicht getestet). Das Problem ist, dass dieses PrimaryViewShowing bei jedem Focuswechsel gefeuert wird, auch wenn die Bildschirmtastatur schon eingeblendet ist. Wenn man das TryCancel aufruft wenn die Tastatur bereits eingeblendet ist, geht diese nicht zu und kommt etwas durcheinander. Sie schließt sich dann nicht mehr automatisch. Leider fehlt noch eine Möglichkeit abzufragen ob die Tastatur eingeblendet ist.

Beim stöbern in der MS-Doku bin ich auf CoreTextEditContext.InputPaneDisplayPolicy gestoßen. Damit soll man das automatische Einblenden der Tastatur abschalten können. Der nötige Aufzählungstyp ist auch schon in der Unit Winapi.UI.Text vorhanden. Aber das entsprechende Interface fehlt.
Angehängte Dateien
Dateityp: zip Dp211080.AutomatischeAnzeigeDerVirtTastaturUnterdruecken.zip (68,5 KB, 5x aufgerufen)
Mit freundlichen Grüßen, einbeliebigername.
  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 16:30 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