| |
|
|
- 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 KompilierenMarkierenSeparierendeclare 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. |
|
|
| |
|
|
| |
|
- Seite 3 - |
|
|
Penguin Tux | Danke für den Tipp. |
|
|
| |
|
|
|
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: KompilierenMarkierenSeparierenDef 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
|
|
|
| |
|
|
|
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. |
|
|
| |
|
|
|
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. |
|
|
| |
|
|
|
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. ^^ |
|
|
| |
|
|
|
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. |
|
|
| |
|
|
|
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 |
|
|
| 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 X2Er 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 ▲ |
|
|
|