Deutsch
Forum

Software zum Ändern des Tastaturlayouts

 
- Seite 1 -



Penguin
Tux
Hallo,

gibt es irgendeine Möglichkeit, ein Tool für Windows XP/2000 zu schreiben, welches das Tastaturlayout von Deutsch auf Russisch und von Russisch in Deutsch switchen kann? Dazu benötige ich eine einfache GUI, da die Nutzer nicht wirklich viel Ahnung haben werden. Das wichtige ist, dass dabei keine Registryeinträge geändert werden, weil es sonst Konflikte mit der Rechtevergabe im Netzwerk geben könnte.

Danke schonmal für eure Hilfe
Tony
KompilierenMarkierenSeparieren
declare btndlg&,dlgende%,dlg&
dlg&=Create("Window",%hwnd,"Sprache",10,10,200,120)
Startpaint dlg&
UseFont "CANDARA",25,20,1,0,0
TextColor RGB(0,0,0),RGB(255,255,255)
Endpaint
btnDlg& = CreateButton(dlg&,"Deutsch -> Russisch",30,10,120,30)
btnDlg& = CreateButton(dlg&,"Russisch -> Deutsch",30,45,120,30)

WhileNot dlgende%

    WaitInput

    If GetFocus(btnDlg&)

        dlgende% = 1

    EndIf

Endwhile

destroywindow(dlg&)

Die GUI ist, wenn auch nur vom optischen her, fertig. der Code ist mit Sicherheit reinster Müll und man könnte ihn bestimmt auch noch verbessern. Jetzt geht es darum, die richtigen Funktionen zum richtigen Button zu schreiben.
 


OS: Win XP/Debian
XProfan 10
23.09.2008  
 



 
- Seite 3 -



Penguin
Tux
Danke für den Tipp.
 


OS: Win XP/Debian
XProfan 10
26.09.2008  
 




Frank
Abbing

Ich habe nun beobachtet, dass in beiden Feldern nach jedem Tastendruck das Eingabegebietsschema geändert wird.


Probier mal diesen Code, da sollte das nicht mehr passieren:
KompilierenMarkierenSeparieren
Def ActivateKeyboardLayout(2)!"USER32","ActivateKeyboardLayout"
Def IsFocus(0)!"USER32","GetFocus"
Def &VK_FLAGSR 1 Tastenlayout Russisch
Def &VK_FLAGSD 0 Tastenlayout Deutsch
Declare edit1&,edit2&,text$,x&,y&
WINDOWSTYLE 31+512
Window 0,0-0,1024
Windowtitle "Deutsch - Russisch"
Window 0,0-%maxx,%maxy
UseIcon "Gesicht"
Usefont "Arial",20,0,0,0,0
SetDialogFont 1
edit1& = @Create("MultiEdit",%hWnd,"Russisch",10,10,1000,320)
edit2&=Create("MultiEdit", %hWnd, "Deutsch", 10, 370, 1000, 320)
x&=IsFocus()
y&=0

While 1

    WaitInput
    Case %key=2:Break
    Inc y&

    If x&<>IsFocus()

        x&=IsFocus()
        y&=0

    EndIf

    If ((%GetFocus=edit1&) and (y&=0))

        ActivateKeyboardLayout(0, &VK_FLAGSR)

    ElseIf ((%GetFocus=edit2&) and (y&=0))

        ActivateKeyboardLayout(0, &VK_FLAGSD)

    EndIf

Endwhile

End
 
26.09.2008  
 




Dieter
Zornow
Das funktioniert aber nur, wenn man nur 2 Sprachen eingestellt hat, da es sich ja um eine Rotation handelt. Wenn man wie ich 3 Sprachen installiert hat geht es schief, weil dann mit 3 Layouts rotiert wird
 
Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai., Win 7 32 bit und Win 7 64 bit, mit XProfan X2
26.09.2008  
 




Frank
Abbing
Aber ActivateKeyboardLayout() erwartet doch den Parameter des Tastaturlayouts, da rotiert eigentlich nichts...
Eine bessere Idee hab ich derzeit auch nicht und kann es auch nicht wirklich testen.
 
26.09.2008  
 




Dieter
Zornow
@Frank

HKL_NEXT
Selects the next locale identifier in the circular list of loaded locale identifiers maintained by the system.
HKL_PREV
Selects the previous locale identifier in the circular list of loaded locale identifiers maintained by the system.

Die Funktion erwartet 0 oder 1 und geht dann zum dann zum nächsten Layout. Wenn ich deinen Code teste kommt deutsch, englisch und Thai aber kein russisch. Deshalb klappt es ja nur mit 2 Sprachen
 
Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai., Win 7 32 bit und Win 7 64 bit, mit XProfan X2
26.09.2008  
 




Frank
Abbing
Richtig. In dem Fall musst du auch noch mit LoadKeyboardLayout() oder GetKeyboardLayoutList() arbeiten. Da ich es nicht testen kann, erstelle ich keinen Code, aber die beiden API scheinen mir sehr simpel anzuwenden zu sein.
 
26.09.2008  
 




Stephan
Sonneborn
Ich häng mich hier mal dran:

Kann man mit ActivateKeyboardLayout(hKeyboardlayout&, Flag&) auch ein ganz bestimmtes Layout aktivieren (ggf. auch noch vorher laden, wenn es nicht geladen wurde)?

Irgendwie könnte das wohl mit KLF_SETFORPROCESS gehen als Flag für ActivateKeyboardLayout() gehen.

Mit 1 oder 0 als Flag stellt man offenbar nur in der Liste aller installierten Layouts auf das nächste bzw. vorherige Layout um.
 
Schöne Grüße aus Wittgenstein
von Stephan

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



Hallo Stephan!

Laden geht wohl per LoadKeyboardLayout aber was genau hast denn vor bzw.

ich glaube ich verstehe die Frage nicht so richtig. ^^
 
18.07.2012  
 




Stephan
Sonneborn
Hallo iF,

es geht im Prinzip immer noch um die russischen Texte bzw. deren Darstellung.
Ich habe einen alten Freeware Schriftsatz gefunden, der kyrillische Zeichen in den ersten 255 Zeichen (also nicht im erweiterten Zeichensatz) abbildet.
Dazu muss aber bei der Eingabe das englische Tastaturlayout aktiviert werden.

Wenn man das installiert hat, kann man mit ActivateKeyboardLayout(0,1) bzw. ActivateKeyboardLayout(0,0) zirkular vor oder zurück einen nach dem anderen Zeichensatz aktivieren. Das geht zum einen alphabetisch (wenn man vorher sortiert hat) oder in der Reihenfolge des Anlegens.

Ich muss also gezielt das englische Tastaturlayout einschalten und vorher prüfen, ob es installiert ist.
 
Schöne Grüße aus Wittgenstein
von Stephan

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



Ah!

Schau mal dies hier funktionierte bei mir auf Anhieb:



Ich hatte äöü eingetippt und typisch für eine us-Tastatur wurde dies in ';[ umgesetzt.

5 kB
Hochgeladen:18.07.2012
Ladeanzahl162
Herunterladen
 
18.07.2012  
 




Stephan
Sonneborn
iF (18.07.12)

Ah!

Schau mal dies hier funktionierte bei mir auf Anhieb:https://xprofan.com/files/ueeoi.png

Ich hatte äöü eingetippt und typisch für eine us-Tastatur wurde dies in ';< umgesetzt.


Super!
Das scheint dann die Lösung zu sein.

Wie stelle ich das originale Layout wieder ein?
Kann man da vorher ein Handle auslesen und darauf wieder zurücksetzen?

Allerdings meckert Profan an, die Funktion sei nicht in der dll vorhanden. Ist die nicht in der USER32.dll deklariert?
KompilierenMarkierenSeparieren
DEF LoadKeyboardLayout(2) !"USER32","LoadKeyboardLayout"
 
Schöne Grüße aus Wittgenstein
von Stephan

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




Dieter
Zornow
Es gibt LoadKeyboardLayoutA oder LoadKeyboardLayoutW
 
XProfan X2
Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai., Win 7 32 bit und Win 7 64 bit, mit XProfan X2
19.07.2012  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

32.484 Betrachtungen

Unbenanntvor 0 min.
Stringray08.10.2017
Wilfried Friebe11.01.2016
Georg Teles29.06.2015
mein02.06.2013
Mehr...

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie