Tastaturbelegung verändern

Hallo
ich bräuchte eine kleine Veränderung meiner Tastatur und zwar sollten
während das VB- Progrämmchen läuft folgende Veränderungen laufen:

Die Taste 7 soll auf s
Taste 8 auf y
Taste 9 auf x

Ist sowas realisierbar???
Problem ist, es gibt twar tools die sowas können, leider hats im Internet bei dem Onlinespiel keine Auswirkung gehabt, sondern nur auf Text. Weiss jmd den Grund dafür???

Nach Abschalten des Programms sollte natürlich wieder alles normal laufen.

Mfg Werner

Hallo Werner,

Ist sowas realisierbar???

in Grenzen ja.

Problem ist, es gibt twar tools die sowas können, leider hats
im Internet bei dem Onlinespiel keine Auswirkung gehabt,
sondern nur auf Text. Weiss jmd den Grund dafür???

Ja. Du hast nicht die Tasten vertauscht, sondern die Zeichen. Allerdings nur für Deine Form. Wenn Du das für ein anderes Fenster bewerkstelligen möchtest, musst Du in den Datenstrom dieses anderen Fensters eingreifen.

Nach Abschalten des Programms sollte natürlich wieder alles
normal laufen.

Klar. Sieh Dir mal bei http://www.activevb.de das Tutorial zu ‚Subclassing‘ an, da wird erklärt, wie so etwas geht.

http://www.activevb.de/tutorials/tut_subcls/subcls.html

Gruß Rainer

Die Taste 7 soll auf s
Taste 8 auf y
Taste 9 auf x

Was wäre wenn du die Tasten gar nicht erst vertauschst, sondern nur wenn die Taste s gedrückt wird, automatisch auch die Taste 7 gedrückt wird?

Wenn das ganze innerhalb deiner Form passiert, kannst du die Events KeyDown etc. verwenden. Willst du das ganze systemweit verwenden, musst du dir ein Programm schreiben, das sagen wir jede Millisekunden die gedrückten Tasten abfragt. Die benötigte Funktion heißt dazu GetAsyncKeyState und auf ActiveVB gibt es ein sehr schönes Codebeispiel dazu:
http://www.activevb.de/tipps/vb6tipps/tipp0070.html

Tastenanschläge kannst du dann einfach mit der Funktion SendKeys durchführen.

z.B.

Private Sub Form\_KeyDown(KeyCode As Integer, Shift As Integer)
 If KeyCode = vbKeyA Then
 SendKeys "7"
 End If
End Sub

mfg dixxi

Hi
deswegen geht das aber trotzdem noch nicht im System oder???
Wie soll ich ausserhalb der VB-Exe dann beeinflussen, das ich die Taste 9 bei gedrücktem A simuliere.

Mfg Werner

Die Taste 7 soll auf s
Taste 8 auf y
Taste 9 auf x
Problem ist, es gibt twar tools die sowas können, leider hats
im Internet bei dem Onlinespiel keine Auswirkung gehabt,
sondern nur auf Text. Weiss jmd den Grund dafür???

Hi Werner,

wenn da die VB-Lösung nicht funktioniert weiß ich in VB-Hinsicht natürlich auch nicht weiter.

Aber vielleicht klappt noch was uraltes. Ich habe gerade geschaut, die Config.sys gibt es noch unter WinXP, zwar leer, aber das macht nix, es zeigt, daß sie noch von WinXP beim Start gelesen wird.

Ob darin enthaltene Anweisungen nur in einem Dos-Fenster wirken oder aber auch für WinXP gelten weiß ich nicht.

Zumindest wäre es den Versuch wert *find*, daß du googelst wie man in die config.sys die ansi.sys einbindet.
Dazu noch in die autoexec.bat (steht beides in c:) diesen Befehl:

prompt $e[65;66p

der in Dos bewirkt daß bei Eingabe des Tastaturzeichens 65 (A) das Tastataturzeichen 66 (B) erscheint.

Nach diesen Änderungen in config.sys und autoexce.bat den PC neu starten und einfach mal das große a eingeben und schauen was auf dem Bildschirm angezeigt wird, A oder B…

Falls es klappt, kann man dann auch xys „umlegen“, wenn nicht, naja, dann gings halt nicht :smile:

Gruß
Reinhard

Die Taste 7 soll auf s
Taste 8 auf y
Taste 9 auf x

http://de.wikipedia.org/wiki/Autohotkey

damit kannst Du jede Taste belegen mit was
Du willst und vieles vieles mehr.

als Scriptbefehle dann einfach:

s::7
y::8
x::9

LG Alex

Hallo Werner,

deswegen geht das aber trotzdem noch nicht im System oder???
Wie soll ich ausserhalb der VB-Exe dann beeinflussen, das ich
die Taste 9 bei gedrücktem A simuliere.

doch, das geht.

Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer

Private Sub Form\_Load()
 Timer1.Interval = 100
 Timer1.Enabled = True
End Sub

Private Sub Timer1\_Timer()
 If GetAsyncKeyState(65) Then
 SendKeys "9"
 End If
End Sub

Das muss nur laufen, darf ruhig minimiert oder unsichtbar sein.
Die ‚9‘ wird dann an das aktive fenster geschickt, das ‚a‘ vorher allerdings auch. Wenn das nicht stört …

Gruß Rainer

Hi Alex
bitte nochmal melden.
Das klappt so super.

Gibt es auch eine Möglichkeit auf einer Taste zb die Tastenfolge

9, Ctrl, 8, Ctrl, 9 zu legen.

Das wäre fantastisch.

Mfg Werner

Das klappt so super.

prima

Gibt es auch eine Möglichkeit auf einer Taste zb die
Tastenfolge
9, Ctrl, 8, Ctrl, 9 zu legen.

probier mal

ö::
 send {Control down}
 Send {Control up}
 send, 9
 send {Control down}
 Send {Control up}
 send, 8
return

Falls das STRG zu schnell kommt, muß man vielleicht noch
zwischen Down+Up bisschen warten. Meld Dich.

LG ALex

Hi Alex
leider funktioniert das nicht,
irgendwie hakt es oder es geht nur 1 befehl.
Gibts ne andere Lösung, irgendwer muss doch auch mal 2 tasten hintereinander ausgeführt haben, ich finde im Netz nichts dazu.

mfg werner