![]() |
Automatische Anzeige der virt. Tastatur unterdrücken
Hi *.*.
Wir haben eine Delphi 11 VCL Applikation, die auf einem Tablet-PC mit aktuellem Windows 10 / 11 ohne angeschlossene Tastatur läuft. Für Eingaben verlassen wir uns in der Regel auf die automatisch angezeigte virt. Tastatur. Allerdings haben wir verschiedene Dialoge, die eine eigene, permanent sichtbare und mit speziellen Knöpfen ausgestattete virt. Tastatur anzeigen. Für diese Dialoge möchten wir nun die automatische Anzeige der virt. Tastatur bei Anwahl einer TEdit-Instanz per Touch unterbinden. Ich bin dabei auf das Interface ITextInputPanel gestoßen, was aber nicht wie gewünscht funktioniert. Eine einfache Testanwendung mit einem Knopf und einem Eingabefeld macht beim Drücken des Knopfes folgendes:
Delphi-Quellcode:
Trotzdem wird danach bei Anwahl des Eingabefeldes automatisch die virt. Tastatur von Windows aufgerufen.
type
tEditHack = class(tEdit); procedure TForm1.Button2Click(Sender: TObject); var TIP: IUnknown; Value: Integer; begin tEditHack(Edit1).TipMode := tipDontCare; // autom. Anzeige der Tastatur durch die VCL unterdrücken! TIP := nil; if Succeeded(CoCreateInstance(CLASS_TextInputPanel, nil, CLSCTX_INPROC_SERVER or CLSCTX_LOCAL_SERVER, IUnknown, TIP)) then if Succeeded((TIP as ITextInputPanel).Set_AttachedEditWindow(Edit1.Handle)) then if Succeeded((TIP as ITextInputPanel).Set_InPlaceVisibleOnFocus(Integer(False))) then begin (TIP as ITextInputPanel).Get_InPlaceVisibleOnFocus(Value); if Bool(Value) then ShowMessage('Get_InPlaceVisibleOnFocus: TRUE') else ShowMessage('Get_InPlaceVisibleOnFocus: FALSE') end else ShowMessage('Set_InPlaceVisibleOnFocus failed...') else ShowMessage('Set_AttachedEditWindow failed...') else ShowMessage('CoCreateInstance failed...'); end; Wenn man sich nun die Beschreibung zu ITextInputPanel bei Microsoft anschaut, so findet sich dort bereits der Hinweis, dass das Interface in späteren Versionen von Windows ggf. nicht zur Verfügung steht. Stattdessen wird auf IInputPanelConfiguration verwiesen, was aber laut Dokumentation unter Windows 10 nicht funktioniert. Man muss doch irgendwie innerhalb einer Anwendung das Verhalten der virt. Tastatur beeinflussen können? Hat jemand vielleicht einen entscheidenden Hinweis? Gruß |
AW: Automatische Anzeige der virt. Tastatur unterdrücken
Unter
![]() Zitat:
Wir haben uns bei unseren Kiosk-Applikationen schon vor länger von dem Windows-Automatismus verabschiedet und machen immer eigene Eingabe-Dialoge mit stinknormalen VCL-Popups. Die funktionieren wenigstens auch bei der nächsten Windows-Halbjahresversion immer noch. |
AW: Automatische Anzeige der virt. Tastatur unterdrücken
Bei einer Kiosk-Anwendung funktioniert das natürlich. Aber halt nicht, wenn auf dem Tablet-PC nicht nur unsere Anwendung genutzt wird.
Wenn sich keine Möglichkeit finden sollte, dann muss der Anwender wohl den Tablet-Mods deaktivieren und die Tastatur bei Bedarf manuell über die Task-Leiste aufrufen. (Gibt es in der Richtung eigentlich von Microsoft bereitgestellte Foren, in der man eine offizielle Anfrage zu so einer Schnittstelle stellen könnte?) |
AW: Automatische Anzeige der virt. Tastatur unterdrücken
Ich bin bei Microsoft im "Developer TAP" (Technology Adoption Preview)-Programm, da kann man sich mit den Entwicklern austauschen, kann aber etwas dauern. Ich versuche da diese Woche einmal nachzufragen, hatte da auch einmal Beschreibung für eine undokumentierte API für Touchpads bekommen. Aber ich würde ehrlich gesagt da nicht zu viel erwarten.
|
AW: Automatische Anzeige der virt. Tastatur unterdrücken
Vielleicht ist es ein Versuch wert.
Vielen dank schonmal. |
AW: Automatische Anzeige der virt. Tastatur unterdrücken
![]() Da steht notfalls auch, wie man für die eigene Anwendung diese Tastatur komplett deaktiviert. Selber anzeigen der Tastatur (oder was Alternativem), da wo man sie braucht, müsste man dann noch machen. Die notmale Bildschirmtastatur ist ja ein Graus. Im WindowsInstaller, weiß Windows noch, dass keine Tastatur angeschlossen ist und zeigt dort die Virtuelle an, aber nach dem ersten Start, ist alles wieder vergessen und man muß erstmal wissen, wie man nur per Touch im Startmenü das findet. Die Option zum Anzeigen ist schnell gefunden, aber die fast versteckte Option die Tablet-Tastatur auch im Desktop-Modus zu nutzen ... damit wird es dann besser, weil Diese Tastatur dann auch Edit/Anwendungen verschiebt, wenn sie auf geht. (nur Delphi-XE hat noch einen Bug, wenn Tastatur zu und es eigentlich wieder Vollbild wird, aber das Programm dann halb bleibt) Wenigstens liegt die angedockte Tablet-Tastatur nicht immer ungünstig überm Programm, vorallem immer da, wo man hinklicken wollte. Auch bissl ungünstig ist, dass man oftmals zwei Mal ins Edit klicken muß, damit die Tastatur auf geht. |
AW: Automatische Anzeige der virt. Tastatur unterdrücken
Hallo,
Zitat:
Die Touch-Tastatur läuft bei Microsoft unter dem Thema erleichterte Bedienung. Dazu zählt z.b. auch alles was man braucht um seine Anwendung für Menschen mit eingeschrängtem Sehvermögen zu öffnen. Und das läuft über das UIAutomation. Ich würde jetzt gern Sourcecode zeigen, aber das ist nicht meiner. Aber schau mal unter ![]() Vollständig verstanden habe ich das auch noch nicht. Und mir fehlt noch das Reagieren auf das Erscheinen und Verschwinden der Tastatur. Steuern, ob die Tastatur automatisch aufgeht, lässt sich nach meiner Errinnerung durch die Funktion
Delphi-Quellcode:
.
function Get_IsReadOnly(out pRetVal: Integer): HResult; stdcall;
Bei mir sieht die auch so aus:
Delphi-Quellcode:
if ReadOnly then
pRetVal := 1 else pRetVal := 0; // Maybe? result := S_OK; |
AW: Automatische Anzeige der virt. Tastatur unterdrücken
Zunächst danke für die Hinweise.
Zitat:
Auch der Eintrag in der Registry, der die Anzeige der virt. Tastatur für eine Applikation unterdrücken soll, funktioniert nicht (mehr). Eine angezeigte virt. Tastatur kann ich zumindest über
Delphi-Quellcode:
zuverlässig wieder ausblenden.
Handle := FindWindow(PChar('IPTip_Main_Window'), nil);
if Handle <> 0 then PostMessage(Handle, WM_SYSCOMMAND, SC_CLOSE, 0); |
AW: Automatische Anzeige der virt. Tastatur unterdrücken
Danke für deinen Hinweis.
Zitat:
|
AW: Automatische Anzeige der virt. Tastatur unterdrücken
Gab es am TEdit nicht mal ein Property, wo man einstellen konnte welche Tastatur aufgehen soll?
Dachte eher im FMX, aber auch bei DevExpress grade nichtgefunden, aber mir war so ich hätte mal sowas gesehn. :gruebel: Also normale Tastatur, oder nur Nummerisch, oder wie Telelefon usw. Da hätte man mal nachsehen können, was das macht und ob es da auch eine Einstellung "keine Tastatur" gäbe. |
AW: Automatische Anzeige der virt. Tastatur unterdrücken
Embarcadero hat in einer älteren Delphi Version an TWinControl die protected Eigenschaft
Delphi-Quellcode:
eingeführt. Standardmäßig steht diese auf tipDontCare, TEdit und TMemo z.B. setzen Sie auf tipOpen. Die Eigenschaft wird nicht veröffentlicht und ist nicht dokumentiert. Aus den Quellen lässt sich aber entnehmen, dass versucht wird, bei Erhalt des Fokus mittels ITextInputPanel Schnittstelle die virt. Tastatur einzublenden.
TTipMode = (tipClose, tipOpen, tipDontCare);
property TipMode: TTipMode read FTipMode write FTipMode default tipDontCare; |
AW: Automatische Anzeige der virt. Tastatur unterdrücken
DevExpress sagt "seit XE3"
Zitat:
Und bei TCustomEdit's auf tipOpen gesetzt. Hab mal kurz reingesehn, was sie da machen: Zitat:
Der alte Code zu TabTip.exe / OSK.exe haben sie noch drin, aber jetzt nutzen sie auch ITextInputPanel.SetInPlaceVisibility . [add] Das Ganze scheint aber nur bei TApplication.IsMetropolisUI aktiv zu sein, aber ich kann nirgendwo sehen, wo IsMetropolisUI/UseMetropolisUI aktiviert wird. (klingt nach Windows8-Zeugs) Zitat:
|
AW: Automatische Anzeige der virt. Tastatur unterdrücken
Über die Eigenschaft TipMode war ich letztendlich auf die ITextInputPanel Schnittstelle aufmerksam geworden. Aber wie bereits oben geschrieben, funktioniert die Schnittstelle aktuell nicht mehr wie gewünscht.
|
AW: Automatische Anzeige der virt. Tastatur unterdrücken
Hallo,
jetzt fällt es mir wieder ein. Als ich das brauchte war es bei mir aber andersrum. Die Tastatur ging bei einem Standard-Edit (bei XE8) nicht automatisch auf. Die Lösungen mit Nachrichten an die Tastaturapp schicken oder die Exe aufrufen fielen wegen undokumentiert aus. In irgendeinem Forum stieß ich auf das UIAtomation mit eine Beispielimplementierung für ein Edit. Damit ging bei mir dann die Tastatur automatisch auf. Zitat:
Nach meiner Einschätzung ist die zukunftssichere und vom Microsoft verfolgte Variante das UIAtomation. Mir fehlt aber aktuell die Zeit mich damit zubeschäftigen. Sobalt ich etwas Luft habe (habe bald Urlaub), versuche ich da mal wieder weiterzumachen. |
AW: Automatische Anzeige der virt. Tastatur unterdrücken
Aktuell (Delphi 11) scheint dieses Property garnichts zu machen,
denn siehe
Delphi-Quellcode:
in meinem Post #12.
if Application.IsMetropolisUI and
IsMetropolisUI scheint immer False zu sein. (nichts gefunden, was es aktiviert) Aber man könnte mal versuchen beim Programmstart (also in der DPR, vor Erstellen der Form) das
Delphi-Quellcode:
aufzurufen und es so zu aktivieren.
Application.UseMetropolisUI;
|
AW: Automatische Anzeige der virt. Tastatur unterdrücken
Zitat:
Zitat:
|
AW: Automatische Anzeige der virt. Tastatur unterdrücken
Kann das nicht Auswerten/Funktionieren dieses Properties Mal jemand der sich damit auskennt im QP als Bug melden?
|
AW: Automatische Anzeige der virt. Tastatur unterdrücken
Ich hatte in QP bereits einen Eintrag bzgl. der Veröffentlichung der Eigenschaft TipMode an TWinControl-Nachfahren wie TEdit und TMemo gemacht. Leider war ich da etwas vorschnell und habe erst später die in diesem Faden zusammengetragenen Unzulänglichkeiten herausgefunden. Ich habe den Eintrag gerade dementsprechend ergänzt.
Der Eintrag ist hier zu finden: ![]() |
AW: Automatische Anzeige der virt. Tastatur unterdrücken
Hallo,
ich habe etwas Zeit gehabt selbst nochmal zu testen. Als ich vor einigen Jahr für ein Kunden ein Modul für ein Windows 10 Handheld implementieren solte, ging die Bildschirmtastatur nicht automatisch auf. Dies hat sich geändet. In der gesammten Anwendung (auch die Module welche nicht für Touch entwickelt sind) geht die Bildschirmtastatur bei den Edits und Memos zu gefühlt 95% automatisch auf. Ich denke das ist das Problem. Lieder streickt aktuel das Remotdebuging. Einzige Option die aktuell funktioniert ist das ReadOnly-Property. Das wird bei mir berücksichtigt. |
AW: Automatische Anzeige der virt. Tastatur unterdrücken
Liste der Anhänge anzeigen (Anzahl: 3)
Delphi XE und ohne daß irgendwas im Delphi/Programm aktiviert wurde:
Bei einem PC ohne Tastatur und mit Touch geht inzwischen die virtuelle Tastatur auf, aber ich finde die "wichtige" Option im Windows nicht mehr. Allerdings geht Sie (die angedockte Tablettastatur) immer erst beim zweiten Klick/Tippen ins Edit auf, was schon etwas blöd ist, wenn jemand nicht direkt weiß, dass es eine virtuelle Tastatur gibt. Dagegen ist das "freifliegende" OSK schon bissl blöd, denn beim Verschieben der Tastatur bekommt sie den Fokus und man muß immer erst wieder ins Edit reinklicken, damit die Tastatur funktioniert. Und da das Drecksding immer im Weg ist, muß man es ständig verschieben. Außerdem, wer kommt bitte auf die saublöde Idee eine Tastenkombination für das Aufgehen der Virtuellen zu bauen ... wie soll man Die drücken, wenn es keine Tastatur gibt? :freak: Da steht doch auch noch ganz fett "Gerät ohne physische Tastatur verwenden". Siehe auch Win 8.1-Video ![]() Windows 10 > Startmenü > Einstellungen (links das Zahnrad) > Erleichterte Bedienung > Tastatur (links unten, eventuell erst scrollen) > der oberste Schalter "Bildschirmtastatur verwenden" > Dann geht die Tastatur als freifliegendes Fenster auf, was ständig im weg ist, wenn man mal oben und mal unten im Programm ein Eingabefeld hat. > Der Schalter geht wieder aus, wenn man das Tastaturfenster schließt (nicht minimiert). Das ist die selbe App, welche auch aufgeht, wenn man osk.exe startet, bzw. nach "Bildschirmtastatur" im Startmenü sucht. Anhang 55257 Oben der fette schwarze Streifen, welcher sinnlos Platz verschwendet, das ist die "Textvorhersage", welche aber standardmäßig irgendwie nie etwas anzeigt. (kann man zum Glück in den Einstellungen ausblenden) Außerdem verwenden wir im Programm viel die F-Tasten, welche aber in der Tablettastatur komplett fehlen :wall: und die im freifliegenden OSK grundsätzlich ausgeblendet sind, also sich hinter den Zahlen verstecken (selbst wenn man die Zehnertastatur einblendet). Zitat:
Genauso, wie bereits bei der Installation vom Windows, geht nun von alleine die Tastatur auf, wenn man in ein Edit klickt. (jetzt allerdings erst beim zweiten Klick ins Edit) Diese Tastatur ploppt, von alleine im unteren Teil des Bildschirms, nach oben und verschiebt das Programm so, dass das Edit oben sichtbar bleibt (das Programm wird etwas verkleinert, in der Höhe) Ja, es ist wirklich krank ... im Windows Setup wusste Windows noch, dass die Tastatur fehlt und machte dort die Virtuelle auf, aber nach dem ersten Start war das wieder vergessen und man mußte erst selber rausfinden, wie man nun an eine Virtuelle ran kommt. Und der Shortcut hilft da auch nicht wirklich. :wall: Die Tablettastatur (vermutlich die TabTip.exe) bekommt man ebenfalls, wenn man im Kontextmenü der Uhr das "Bildschirmtastatur anzeigen (Schaltfläche)" aktiviert und dann auf den Knopf drückt. Anhang 55258 Unter Windows 7 hatte man noch eine viruelle Tastatur, die flutschte zur Seite raus, man sie schoß, so als kurzer Streifen, über den man sie von links wieder in den Bildschirm aufziehen konnte (mit dem Finger vom Rand in den Bildschrirm rein wischen) PS: ich weiß jetzt, warum manchme PCs einen USB-Port mit aufgedruckter Tastatur haben. z.B. die kleinen Lenovo ThinkCentre, welche man hinter den Monitor schrauben kann. -> mit Alt+P (oder war's Strg+P) kann man den Rechner dann anschalten (das BIOS UEFI reagiert dort darauf) Anhang 55259 |
AW: Automatische Anzeige der virt. Tastatur unterdrücken
Erstmal danke, dass du dir dafür die Zeit genommen hast.
Zitat:
TEdit.ReadOnly auf TRUE zu setzen bringt mich leider nicht weiter, da ich eine Eingabemöglichkeit benötige. Dann macht es ggf. mehr Sinn, ein eigenes Steuerelement zu entwickeln, welches das Verhalten von TEdit nachbildet. |
AW: Automatische Anzeige der virt. Tastatur unterdrücken
Hallo,
Zitat:
Zitat:
|
AW: Automatische Anzeige der virt. Tastatur unterdrücken
Unsere virt. Tastatur arbeitet momentan so, dass sie Tastendrücke mittels keybd_event simuliert. Für ein TEdit (und ein TMemo) mit der Eigenschaft ReadOnly = TRUE müsste man also anders vorgehen und das Eingabeverhalten nachbilden.
Dazu kommt, dass die Anwendung optional auch mit angeschlossener Tastatur bedient werden soll. Die Eigenschaft ReadOnly darf also nicht grundsätzlich auf TRUE gesetzt werden, sondern in Abhängigkeit einer angeschlossenen Tastatur im Desktop-Modus bzw. durch den Anwender konfigurierbar. Aber du hast recht, beides sollte sich mit vertretbaren Aufwand umsetzen lassen. |
AW: Automatische Anzeige der virt. Tastatur unterdrücken
Zitat:
z.B. kann man im WMI zwar alle Eingabegeräte sehen, aber ob Eines davon eine physische Tastatur ist, lässt sich garnicht so leicht prüfen. Und manches geht plötzlich nicht mehr, wenn man z.B. einen RDP dazwischen hat, bzw. es ist dort plötzlich unverständlicher Weise andersrum. z.B. haben wir ein TEdit, da werden standadmäßig nur Großbuchstaben/Zahlen eingegeben. Beim Edit aber das UpCase zu aktivieren geht nicht, weil es noch ein paar seltene Sonderfälle gibt, wo man alles klein schreiben muß. Ich hatte vor Kurzem mal ausprobiert im OnEnter/OnLeave das CapsLock zu aktivieren, damit es autoatisch standardmäßig Groß ist, dann noch der Kampf, den blöden BallonHint loszuwerden (Capslock-Warnung von Windows) und als alles ging, dann kam jemand mit RDP und es stellt sich raus, dass dort in dem Edit alles klein ist. Gut, es wäre nicht so schlimm, wenn DORT nur das Aktivieren nicht funktionieren würde (über keybd_event auf CapsLock drücken), aber beim rausgehn wird es DORT auch noch groß, also genau andersrum, wie es eingebaut ist. :wall: |
AW: Automatische Anzeige der virt. Tastatur unterdrücken
Ich habe noch einen weiteren Lösungsansatz gefunden: mir war aufgefallen, dass ein TEdit.SetFocus die virt. Tastatur nicht anzeigt.
Also habe ich zunächst versucht, in TEdit.OnClick oder TEdit.OnEnter die Eigenschaft ReadOnly auf FALSE zu setzen. Die Tastatur wurde aber leider weiterhin angezeigt. Dann habe ich mit einem Timer experimentiert, der in TEdit.OnClick / TEdit.OnEnter gestartet wird und nach einer Zeitspanne (250ms) die Eigenschaft ReadOnly auf FALSE setzt. Leider ebenfalls Fehlanzeige. Was aber funktioniert ist, einfach zwei TEdit übereinander zu legen und die Sichtbarkeit zu steuern. Das obere TEdit hat die Eigenschaft ReadOnly auf TRUE gesetzt, das darunter liegende auf FALSE. Das obere ist zunächst sichtbar, das untere nicht. In OnEnter des oberen TEdit wird dann die Sichtbarkeit beider TEdit umgeschaltet, was letztendlich zu dem gewünschten Verhalten führt. Elegant finde ich die Lösung allerdings nicht. Ich werde mir jetzt auch mit Hinblick auf den Aufwand für die Anpassung älterer Dialoge überlegen müssen, welche Lösung ich umsetze. |
AW: Automatische Anzeige der virt. Tastatur unterdrücken
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo,
ich habe weitergeforscht und bin etwas weitergekommen. Wenn man der Seite ![]()
Delphi-Quellcode:
mit der man das Tastaturlayout beeinflussen kann.
SetInputScope(hwnd: HWND; inputscope: TInputScope): HRESULT;
Ich habe mal Delphi 11 installiert und meine Änderungen bzgl. UiAutomation aus dem Kundenprojekt raus gelöst und in ein Testprojekt (Anhang 55275) gebracht. Einiges von dem Sourcecode ist Copy/Past aus dem Internet. Woher kann ich nicht mehr ermitteln. Auch habe ich SetInputScope eingebaut. Das UiAutomation-Zeugs wird noch durchlaufen. Mit dem SetInputScope lässt sich die automatisch eingeblendete Tastatur bzgl. des Layouts auch beeinflussen (z.B. nur Zahlen). Wenn man das ReadOnly des Edits auf True setzt und bei dem Get_IsReadOnly eine 0 zurück gibt, geht die Tastatur auch automatisch auf. Dann aber immer mit dem Standartlayout. Also das SetInputScope gehört zu dem Standartverhalten. Und wenn man kein Standart-Control hat, hilft das UiAutomation. Vieleicht findet ja jemand mit den Infos noch den richtigen Einstieg in die Doku. Ich finde die Dokumentation bei Microsoft mittlerweile als nervend, weil man bei der Suche viel zu oft bei dem XAML-Zeugs landet. Und damit kann man in der VCL absolut nichts anfangen. Aber jetzt noch zu Embarcadero. Was ich nicht verstehe, wieso haben die das SetInputScope nicht schon längst eingebaut. Für einen Entwickler ist das eine halbe Stunde. Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Anhang 55276 * Zitat:
|
AW: Automatische Anzeige der virt. Tastatur unterdrücken
Zitat:
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. :freak: Zitat:
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 ![]() |
AW: Automatische Anzeige der virt. Tastatur unterdrücken
Liste der Anhänge anzeigen (Anzahl: 1)
Ich wollte nur dalassen dass sich bei MS noch keiner dazu geäußert hat, aber vielleicht kommt da ja noch was...
|
AW: Automatische Anzeige der virt. Tastatur unterdrücken
Hallo,
Zitat:
Zitat:
|
AW: Automatische Anzeige der virt. Tastatur unterdrücken
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 :stupid:) 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. :roll: |
AW: Automatische Anzeige der virt. Tastatur unterdrücken
@einbeliebigername
Zunächst danke für deine Bemühungen. Vielleicht kann ich mich irgendwann einmal revanchieren. Zitat:
Bis auf weiteres haben wir uns für die Lösung mit den doppelten Steuerelementen und der Steuerung der Sichtbarkeit entschieden. Damit erreichen wir in unserem Fall die größte Flexibilität. Zitat:
|
AW: Automatische Anzeige der virt. Tastatur unterdrücken
Zitat:
|
AW: Automatische Anzeige der virt. Tastatur unterdrücken
Zitat:
Kein Direktdrücken für eine Schnellwahlfunktion. Für F-Tasten immer stichtbar und Zahlen als Zehnerblock wäre mehr als ausreichend genug Platz. :cry: |
AW: Automatische Anzeige der virt. Tastatur unterdrücken
Joar, also bezüglich SetInputScope gibt es noch garkeine Meldungen auf
![]() und beim Anderen .... joar, hatte schon wieder ganz vergessen, aber da hat sich eh nichts getan :freak: ![]() |
AW: Automatische Anzeige der virt. Tastatur unterdrücken
Liste der Anhänge anzeigen (Anzahl: 1)
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 ![]() Bei einer Suche für dieses Thread bin ich mal auf den Blogbeitrag ( ![]() In der Unit
Delphi-Quellcode:
gibt es die Klasse
Winapi.UI.ViewManagement
Delphi-Quellcode:
mit der Klassenmethode
TCore_CoreInputView
Delphi-Quellcode:
. Diese gibt ein Interface vom Type
GetForCurrentView
Delphi-Quellcode:
zurück, welches unteranderem zwei Funktionen
Core_ICoreInputView
Delphi-Quellcode:
und
TryShowPrimaryView
Delphi-Quellcode:
kennt. Ich habe das mal ausprobiert (aktualisiertes Projekt im Anhang). Bei mir geht mit den Funktionen die Bildschirmtastatur auf und zu.
TryHidePrimaryView
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; |
AW: Automatische Anzeige der virt. Tastatur unterdrücken
Du warst schneller, den IInputView hatte MS jetzt auch:
Zitat:
|
AW: Automatische Anzeige der virt. Tastatur unterdrücken
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. |
AW: Automatische Anzeige der virt. Tastatur unterdrücken
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
Zitat:
Zitat:
Zitat:
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 ![]() |
AW: Automatische Anzeige der virt. Tastatur unterdrücken
Ich hatte heute Zeit, mir dein letztes Beispielprojekt einmal genauer anzuschauen. Leider funktioniert die Unterdrückung der virt. Tastatur auf dem verwendeten Handheld auf Grund der Verwendung von Windows 10 Enterprise LTSC (Version 1809) nicht: das Interface Core_ICoreInputView4 wird von dieser Windows Version noch nicht unterstützt, es wurde laut Dokumenation erst in Version 2004 eingeführt.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:24 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