Français
Eingangshalle

Tatstatur Layout einstellen

 
- page 1 -



Stephan
Sonneborn


allô zusammen,

je voudrais per Profan cela Tastaturlayout sur Englisch ajuster.
normalement fais je cela so:
DECLARE _Fontname$
DECLARE Fontname#
DIM Fontname#, ~KL_NAMELENGTH'9
DEF LoadKeyboardLayout(2) !"User32", "LoadKeyboardLayoutA"
DEF GetKeyboardLayoutName(1) !"User32","GetKeyboardLayoutNameA"
GetKeyboardLayoutName(Fontname#)
_Fontname$ = "000000409"
LoadKeyboardLayout(_Fontname$, ~KLF_ACTIVATE)

mais cela führt trop einer Zugriffsverletzung dans USER32.DLL.

qui sais conseil?

(WIN10, 64Bit)

52 kB
Hochgeladen:21.03.2022
Downloadcounter1
Download
 
Schöne Grüße aus Wittgenstein
von Stephan

Programmierumgebung:| XProfan X4 | WIN10 | AMD FX6100 3,3 GHz
21.03.2022  
 



« cette Beitrag wurde comme Solution gekennzeichnet. »


Georg
Teles
Guten soir,

ahem, qui Funktion LoadKeyboardLayout erwartet une Adresse zur LayoutID (Addr(TLayout#)) ... qui Funktion UnloadKeyboardLayout erwartet wiederrum cela Handle, welches de qui Funktion LoadKeyboardLayout generiert wurde.

Im Beispiel habe vite quelque chose gebastelt (aktuelles Layout wird ausgelesen, englische & après tschechische Tastaturlayout volonté hinzugefügt et anschließend entfernt & sur cela ursprüngliche Layout eingestellt):
DECLARE aktuelle$, TLayout$, TLayout#, hLayoutID_en&, hLayoutID_cs&
DIM TLayout#, 9'~KL_NAMELENGTH'9
DEF LoadKeyboardLayout(2)! "User32", "LoadKeyboardLayoutA"
DEF GetKeyboardLayoutName(1)! "User32","GetKeyboardLayoutNameA"
DEF UnloadKeyboardLayout(1)! "User32","UnloadKeyboardLayout"
cls
' aktuelle clavier
GetKeyboardLayoutName(Addr(TLayout#))
imprimer "aktuelle clavier: "+String$(TLayout#,0)
imprimer
' aktuelle Sauver
aktuelle$ = String$(TLayout#,0)
WAITINPUT
' englische Tastaturlayout hinzufügen
TLayout$ = "00000409"
String TLayout#,0 = TLayout$
' englische Layout ID sichern !
hLayoutID_en& = LoadKeyboardLayout(Addr(TLayout#), 1)'~KLF_ACTIVATE)
imprimer "LayoutID_en: ";(hLayoutID_en&);" (>0 = Erfolg, LayoutID)"
GetKeyboardLayoutName(Addr(TLayout#))
imprimer "englische clavier: "+String$(TLayout#,0)
imprimer
WAITINPUT
' tschechische Tastaturlayout hinzufügen
TLayout$ = "00000405"
String TLayout#,0 = TLayout$
' tschechische Layout ID sichern !
hLayoutID_cs& = LoadKeyboardLayout(Addr(TLayout#), 1)'~KLF_ACTIVATE)
imprimer "LayoutID_cs: ";hLayoutID_cs&;" (>0 = Erfolg, LayoutID)"
GetKeyboardLayoutName(Addr(TLayout#))
imprimer "tschechische clavier: "+String$(TLayout#,0)
imprimer
WAITINPUT
' englische & tschechische Layout entfernen
imprimer UnloadKeyboardLayout(hLayoutID_en&);" (1 = Erfolg/EN-Layout entfernt)"
imprimer UnloadKeyboardLayout(hLayoutID_cs&);" (1 = Erfolg/CS-Layout entfernt)"
imprimer
' sur ursprüngliches Layout zurücksetzen
String TLayout#,0 = aktuelle$
' vorheriges Layout récente magasin !
imprimer LoadKeyboardLayout(Addr(TLayout#), 1);" (1 = Erfolg)"'~KLF_ACTIVATE)
GetKeyboardLayoutName(Addr(TLayout#))
imprimer "aktuelle clavier wiederhergestellt: "+String$(TLayout#,0)
'----------------------------------------------------
DISPOSE TLayout#
WAITINPUT

Edit:
chez LoadKeyboardLayout(Addr(TLayout#), 1)  peux qui String direct benutzt volonté: LoadKeyboardLayout(Addr(TLayout$), 1) wogegen qui Funktion GetKeyboardLayoutName(Addr(TLayout#))  une Bereich nécessaire.

Grüße Georg
 
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4
PC: i7-10700K | 32 Gb | 2x SSD | 1x HDD | RTX 2070s |
Srv: i9-9900K | 32 Gb | 2x SSD | 6x HDD |
Srv. 24/7: J1900 | 8 Gb | 1x SSD | 1x HDD |
27.03.2022  
 




Sven
Bader
allô Stephan,

es du dir sûrement, dass ca dans Windows 10 überhaupt encore so simple allez? qui Systeme riegeln solche tiefen Eingriffe oui toujours plus ab.

avec meinen deux Schüssen ins Blaue suis je malheureusement gescheitert, 1. Fontname# großzügiger dimensionieren, 2. la première "0" effacer, qui faute venez quand même aussi chez mir.

j'ai folgendes sur Stackoverflow trouvé, ici wird aussi une zéro moins verwendet et es wird kommentiert, dass cela Keyboardlayout so lediglich bereitgestellt mais encore pas aktiviert wird et plan dans den Kommentaren qui le doute, dass es sous Windows 10 pas plus allez. [...]  (Stackoverflow)

Grüße
Sven
 
22.03.2022  
 




Stephan
Sonneborn
allô Sven, vielen Dank pour Votre Tests. je hab inzwischen herausbekommen, dass qui Übergabe eines Stings, z.B. "00000407" pour DE ou bien "00000409" pour EN cela Tastaturlayout umstellt. je devrait maintenant seulement encore savons, comment cela aktuelle Taststurlayout est. alors cela, bevor je es umstelle. ensuite peux je es am Programmende wieder zurückstellen...
 
Schöne Grüße aus Wittgenstein
von Stephan

Programmierumgebung:| XProfan X4 | WIN10 | AMD FX6100 3,3 GHz
24.03.2022  
 




Georg
Teles
Guten soir,

ahem, qui Funktion LoadKeyboardLayout erwartet une Adresse zur LayoutID (Addr(TLayout#)) ... qui Funktion UnloadKeyboardLayout erwartet wiederrum cela Handle, welches de qui Funktion LoadKeyboardLayout generiert wurde.

Im Beispiel habe vite quelque chose gebastelt (aktuelles Layout wird ausgelesen, englische & après tschechische Tastaturlayout volonté hinzugefügt et anschließend entfernt & sur cela ursprüngliche Layout eingestellt):
DECLARE aktuelle$, TLayout$, TLayout#, hLayoutID_en&, hLayoutID_cs&
DIM TLayout#, 9'~KL_NAMELENGTH'9
DEF LoadKeyboardLayout(2)! "User32", "LoadKeyboardLayoutA"
DEF GetKeyboardLayoutName(1)! "User32","GetKeyboardLayoutNameA"
DEF UnloadKeyboardLayout(1)! "User32","UnloadKeyboardLayout"
cls
' aktuelle clavier
GetKeyboardLayoutName(Addr(TLayout#))
imprimer "aktuelle clavier: "+String$(TLayout#,0)
imprimer
' aktuelle Sauver
aktuelle$ = String$(TLayout#,0)
WAITINPUT
' englische Tastaturlayout hinzufügen
TLayout$ = "00000409"
String TLayout#,0 = TLayout$
' englische Layout ID sichern !
hLayoutID_en& = LoadKeyboardLayout(Addr(TLayout#), 1)'~KLF_ACTIVATE)
imprimer "LayoutID_en: ";(hLayoutID_en&);" (>0 = Erfolg, LayoutID)"
GetKeyboardLayoutName(Addr(TLayout#))
imprimer "englische clavier: "+String$(TLayout#,0)
imprimer
WAITINPUT
' tschechische Tastaturlayout hinzufügen
TLayout$ = "00000405"
String TLayout#,0 = TLayout$
' tschechische Layout ID sichern !
hLayoutID_cs& = LoadKeyboardLayout(Addr(TLayout#), 1)'~KLF_ACTIVATE)
imprimer "LayoutID_cs: ";hLayoutID_cs&;" (>0 = Erfolg, LayoutID)"
GetKeyboardLayoutName(Addr(TLayout#))
imprimer "tschechische clavier: "+String$(TLayout#,0)
imprimer
WAITINPUT
' englische & tschechische Layout entfernen
imprimer UnloadKeyboardLayout(hLayoutID_en&);" (1 = Erfolg/EN-Layout entfernt)"
imprimer UnloadKeyboardLayout(hLayoutID_cs&);" (1 = Erfolg/CS-Layout entfernt)"
imprimer
' sur ursprüngliches Layout zurücksetzen
String TLayout#,0 = aktuelle$
' vorheriges Layout récente magasin !
imprimer LoadKeyboardLayout(Addr(TLayout#), 1);" (1 = Erfolg)"'~KLF_ACTIVATE)
GetKeyboardLayoutName(Addr(TLayout#))
imprimer "aktuelle clavier wiederhergestellt: "+String$(TLayout#,0)
'----------------------------------------------------
DISPOSE TLayout#
WAITINPUT

Edit:
chez LoadKeyboardLayout(Addr(TLayout#), 1)  peux qui String direct benutzt volonté: LoadKeyboardLayout(Addr(TLayout$), 1) wogegen qui Funktion GetKeyboardLayoutName(Addr(TLayout#))  une Bereich nécessaire.

Grüße Georg
 
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4
PC: i7-10700K | 32 Gb | 2x SSD | 1x HDD | RTX 2070s |
Srv: i9-9900K | 32 Gb | 2x SSD | 6x HDD |
Srv. 24/7: J1900 | 8 Gb | 1x SSD | 1x HDD |
27.03.2022  
 




Georg
Teles
Nabend nochmals,

qui zum Schluss auskommentierte la ligne zuvor muss doch rein:
' vorheriges Layout geladen: là cet bereits existiert hat, muss es pas absolument
' récente geladen volonté, nachfolgende la ligne peux ici vernachlässigt volonté!)
'imprimer LoadKeyboardLayout(Addr(TLayout#), 1);" (1 = Erfolg)"'~KLF_ACTIVATE)

si on plusieurs Tastaturlayouts anfangs hat et cela Beispiel ausführt, wird cela erste Layout zum Schluss aus qui liste ausgewählt ... alors lieber bewusst cela vorherige Layout, quoi zuvor eingestellt était, magasin. (habe qui la ligne im vorherigen poste wieder kommentiert)

Edit:
là fällt mir un, hatte la fois une PCU geschrieben, qui im Grunde qui liste qui Sprachen beinhaltet (Sprachwerte dans Dezimalangaben, cet doit encore dans Hexadezimale umgewandelt volonté siehe pour allemande 1031 = Hex 0407)  [...] 

hatte cet liste pour verwendet  [...] 
 
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4
PC: i7-10700K | 32 Gb | 2x SSD | 1x HDD | RTX 2070s |
Srv: i9-9900K | 32 Gb | 2x SSD | 6x HDD |
Srv. 24/7: J1900 | 8 Gb | 1x SSD | 1x HDD |
27.03.2022  
 



répondre


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

523 Views

Untitledvor 0 min.
Uwe ''Pascal'' Niemeier vor 29 Tagen
Georg Teles08.06.2022
Ernst29.05.2022
ByteAttack20.05.2022
plus...

Themeninformationen



Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Eingangshalle  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie