Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Windows 10 Bildschirmtastatur automatisch in numerischer Darstellung öffnen (https://www.delphipraxis.net/208624-windows-10-bildschirmtastatur-automatisch-numerischer-darstellung-oeffnen.html)

Taschenrechner 30. Aug 2021 12:19

Windows 10 Bildschirmtastatur automatisch in numerischer Darstellung öffnen
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo!

Kennt jemand eine Lösung um in Windows 10 die Bildschirmtastatur (tabtip.exe) automatisch in numerischer Darstellung zu öffnen?

Es handelt sich beim aktuellen Projekt um eine Anwendung auf der die Metropolis UI liegt. Wenn jetzt auf ein Eingabefeld, das numerischen Input erwartet, gedrückt wird, kommt immer die klassische Tastaturansicht und man muss JEDES MAL erst mittels der Taste "&123" umschalten auf Zahlenansicht. -> Siehe Screenshots -> "Tastatur1,png" zeigt das immer erscheinenden Standardlayout, erst nach Tab / Klick auf Taste "&123" links unten wird auf die Zahlenansicht geschaltet (Tastatur2.png)

Die Eigenschaft "KeyboardType" im Objektinspektor auf "vktNumbersAndPunctuation" bringt leider rein gar nichts. Es kommt trotzdem immer das Standardlayout.

Für Hilfe bin ich dankbar!

Viele Grüße Didi

Delphi.Narium 30. Aug 2021 14:56

AW: Windows 10 Bildschirmtastatur automatisch in numerischer Darstellung öffnen
 
Schau mal bitte dort: https://social.msdn.microsoft.com/Fo...10-application

Tabtip.exe wird dort per PostMessage geschlossen.

Analog dazu müsste per PostMessage nach dem Start von Tabtip.exe auch in die numerischer Darstellung gewechselt werden können.

Grob sowas in der Art (ungetestet):
Delphi-Quellcode:
TouchhWnd := FindWindow(nil, 'IPTip_Main_Window');
PostMessage(TouchhWnd, WM_KEYDOWN, VK_TAB, 0);
PostMessage(TouchhWnd, WM_KEYUP, VK_TAB, 0);
PostMessage(TouchhWnd, WM_KEYDOWN, VK_RETURN, 0);
PostMessage(TouchhWnd, WM_KEYUP, VK_RETURN, 0);

Der schöne Günther 30. Aug 2021 15:14

AW: Windows 10 Bildschirmtastatur automatisch in numerischer Darstellung öffnen
 
Das ist aber ein ziemlicher Hack der doch auseinander fällt, sobald sich an der Tastatur-Anwendung doch nur mal eine Tab-Reihenfolge oder sonstwas ändert.

Steku 30. Aug 2021 16:27

AW: Windows 10 Bildschirmtastatur automatisch in numerischer Darstellung öffnen
 
Hi,

ich weiß nicht ob sich die Beschreibung von hier https://docs.microsoft.com/en-us/win...ectedfrom=MSDN
nach Delphi umsetzen lässt, aber vielleicht hilft es trotzdem irgenwie weiter...

Grüße
Steku

himitsu 30. Aug 2021 17:00

AW: Windows 10 Bildschirmtastatur automatisch in numerischer Darstellung öffnen
 
https://docs.microsoft.com/en-us/win...pi/inputscope/

Also mit dem XAML vom Vorredner direkt geht es wohl nicht,
auch wenn es ein MSDN-Library durchsuchenSetInputScopeXML gibt, aber bei dem steht halt was vonwegen "Do not use".

Aber es gäbe ja auch noch MSDN-Library durchsuchenSetInputScope, MSDN-Library durchsuchenSetInputScopes oder MSDN-Library durchsuchenSetInputScopes2.

Taschenrechner 30. Aug 2021 21:20

AW: Windows 10 Bildschirmtastatur automatisch in numerischer Darstellung öffnen
 
Erstmal Danke für Euer Feedback.

1. bzgl. der Lösung von Delphi.Narium: wie kriegt man denn raus wie man die die "&123" ansteuert?

2. bzgl. des Vorschlags von himitsu: das sieht nach viel "versuch macht klug" aus...

3. Die Lösung die ich bei stackoverflow gelesen haben wäre einen Mausklick zu simulieren. Ist natürlich auch nicht richtig gut (oder?), aber wenn nix besseres gibt? Wie würdet Ihr da vorgehen?

VG

Moombas 31. Aug 2021 13:19

AW: Windows 10 Bildschirmtastatur automatisch in numerischer Darstellung öffnen
 
In AutoIt gibt es für so etwas ControlClick (https://www.autoitscript.com/autoit3...ntrolClick.htm), mann muss natürlich vorher die Handles etc. herausfinden (bei Autoit über dessen Window Info Tool) aber zumindest scheint bei W7 es nicht möglich sein die Buttons der Tastatur zu bekommen und somit direkt anzusprechen.

Aber wäre es nicht wesentlich einfacher diese 10 Tasten selber zu programmieren?

himitsu 31. Aug 2021 13:38

AW: Windows 10 Bildschirmtastatur automatisch in numerischer Darstellung öffnen
 
Delphi-Referenz durchsuchenTKeyboardLayouts (Layout=NumPad und ließe sich auch um eigene Layouts erweitern)
oder TAdvTouchKeyboard
oder ...

Taschenrechner 2. Sep 2021 15:45

AW: Windows 10 Bildschirmtastatur automatisch in numerischer Darstellung öffnen
 
Hallo zusammen,

ich scheitere schon beim ermitteln der Koordinaten des Touch Keyboards Tabtip.exe

procedure TTestform.Button1Click(Sender: TObject);
var TouchWindow, ControlHandle:Hwnd;
WindowRect:TRect;
pos:TPoint;
begin


touchWindow:= FindWindow(nil, 'IPTIP_Main_Window');

//touchWindow:= FindWindow(nil, 'Unbenannt - Editor'); //Notepad
//touchWindow:= FindWindow(nil, 'Microsoft Text Input Application'); //Notepad

if TouchWindow <> 0 then
begin
GetWindowRect(TouchWindow,WindowRect);

if (edit1.Text <=' ') or (edit2.Text<=' ') then
begin
pos.x:=WindowRect.Left;
pos.Y:=WindowRect.Top;
edit1.text:=intToStr(pos.x);
edit2.text:=intToStr(pos.y);
Label2.text:='Touchpad Pos Links: '+intToStr(pos.x) +' Touchpad Pos Top:= '+ intToStr(pos.Y);
end
else begin
//übernehme die Zahlen in den beiden Edit-Feldern
pos.X:=strToInt(trim(edit1.text));
pos.Y:=strToInt(trim(edit2.Text));
end;
aendereTastaturLayout(true,pos,TouchWindow); //auf numerisch
end;
end;



Mit Notepad klappt alles: touchWindow:= FindWindow(nil, 'Unbenannt - Editor'); //Notepad


1. Kriegt Ihr die Koordinaten raus mit FindWindow?
2. Gegoogelt und es hieß mal mit Microsoft Text Input Application versuchen --> touchWindow:= FindWindow(nil, 'Microsoft Text Input Application'); passiert aber auch nix...


Ansonsten würde das mit dem Mausklick simulieren funktionieren...aber hat jemand ne Idee wie man die Position des Fensters von tabtip.exe ermitteln kann?

Benutze aktuelle Windows 10 Version zum testen Version 21H1 Build 19043.1165

Danke!

Taschenrechner 2. Sep 2021 16:22

AW: Windows 10 Bildschirmtastatur automatisch in numerischer Darstellung öffnen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Weitere Erkenntnisse:

Hab mal mit WinSpy das "Fenster" der Tabtip.exe untersucht....

Scheinbar hat das Fenster immer die Position 0,0 ?!? Alle andere Fenster haben bei mir korrekte Daten zurückgegeben.

Scheinbar heisst das Fenster wirklich "Microsoft Text Input Application"?


hmmm..

bleibt halt wie man jetzt unten links die Taste "&123" treffen will (also klicken/tabben) ohne die Positionsdaten..Oder mach ich was grundlegendes verkehrt?

Danke für Euren Input

Didi

TurboMagic 2. Sep 2021 19:16

AW: Windows 10 Bildschirmtastatur automatisch in numerischer Darstellung öffnen
 
Nochmal die Frage ob nicht auch die Tastatur der VCL benutzt werden kann. Ich hab für die sogar schon Mal ein Hexadezimal Layout gebaut.

Der schöne Günther 2. Sep 2021 19:56

AW: Windows 10 Bildschirmtastatur automatisch in numerischer Darstellung öffnen
 
Ich habe da vor ca. 2 Jahren einiges an Zeit reingesteckt und bin nie zu einem zufriedenstellenden Ergebnis gekommen.
Das "neue" Tabtip ist selbst heute in Windows 11 noch derart verbuggt dass es sich oft gar nicht mehr öffnet und man mittlerweile sogar Adminrechte braucht um den Prozess zu beenden sodass er sich bitte beim nächsten Anlauf zeigen möge.

Im Internet gibt es viele Leute welche die gleiche Frage haben, auch wenn es meistens .NET-Anwendungen mit WinForms sind.

Früher hat das noch mit den Registry-Einträgen funktioniert wie bsp. hier beschrieben:
Mit Windows 1709 oder 1803 hatte Microsoft das schon wieder umgebaut und das war auch der Punkt an dem ich aufgegeben hatte und wieder auf das alte osk.exe zurückgegangen bin.

Wenn dir der Komfort für den Benutzer wichtig ist würde ich mir überlegen einfach so eine Tastatur selbst zu bauen - Ist an sich kein Hexenwerk, du bräuchtest halt ein Formular das nicht aktiviert wird beim Reinklicken (also nicht den Fokus stiehlt) und hast völlige Gestaltungsfreiheit was die Tastatur anbietet.

Eigentlich eine ziemliche Schande dass es hier in Windows keine öffentliche API dafür gibt.


PS: Falls du dich weiter durchkämpfen willst, das hier habe ich seit Jahren auf meiner ToDo-Liste, dass ich mich auch damit auseinandersetzen wollte, da ist jemand (auch mit Delphi) anscheinend schon relativ weit gekommen:
https://stackoverflow.com/q/50226891/2298252

TurboMagic 3. Sep 2021 07:03

AW: Windows 10 Bildschirmtastatur automatisch in numerischer Darstellung öffnen
 
Hallo,

wenn tchnisch möglich würde ich mal die VCL eigene Tastatur benutzen.
Ich hab' die schon in Projekten benutzt und die funktioniert grundsätzlich.
Mit ein wenig Aufwand kann man bei Bedarf auch ein eigenes Layou generieren
und eine numerische Variante gibt's ja von Haus aus.

Grüße
TurboMagic

Moombas 3. Sep 2021 11:06

AW: Windows 10 Bildschirmtastatur automatisch in numerischer Darstellung öffnen
 
Nochmal:
Zitat:

Zitat von Moombas (Beitrag 1493999)
Aber wäre es nicht wesentlich einfacher diese 10 Tasten selber zu programmieren?

Das sind 10-16 Buttons mit einfachster Programmierung und du bist nicht abhängig von Änderungen seitens Microsoft.

Taschenrechner 21. Sep 2021 12:10

AW: Windows 10 Bildschirmtastatur automatisch in numerischer Darstellung öffnen
 
Habs mit Mausklick simulieren gelöst!

VG

TurboMagic 21. Sep 2021 18:36

AW: Windows 10 Bildschirmtastatur automatisch in numerischer Darstellung öffnen
 
Zitat:

Zitat von Taschenrechner (Beitrag 1495193)
Habs mit Mausklick simulieren gelöst!

VG

Danke für die Info. Nur was jetzt gegen die bei der VCL mitgelieferte Tastatur spricht weiß ich immer noch nicht...


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:15 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