Announcement

Collapse
No announcement yet.

Tasten tauschen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Tasten tauschen

    Hallo,

    ich habe ein kleines Problem, bin aber bei Google nicht fündig geworden.

    Ich brauche ein Programm/DLL, die ich unter XP laden kann, was mir 2 Tasten tauscht.
    Und zwar so: wenn ich "Rollen" drücke soll "ESC" ausgelöst werden und umgedreht.

    Ich will niemanden ärgern oder so, ein Nutzer hat eine Linkshänder-Tastatur bekommen, da ist der Nummernblock links, aber bei AUTOCAD ist die wichtigste Taste die ESC-Taste, dadurch liegt sie nichtmehr außen und sie muss über den Nummernblock fassen.
    Bei dieser Tastatur ist die äußerste Taste die "Rollen-Taste" deshalb möchte ich die beiden tauschen.

    ich habe folgenden Code gefunden:

    [highlight=vbnet]Protected Overrides Function ProcessCmdKey(ByRef msg As Message, _
    ByVal keyData As Keys) _
    As Boolean
    Const WM_KEYDOWN As Integer = &H100

    If (msg.Msg = WM_KEYDOWN) And _
    (keyData = Keys.Escape) Then
    Dim roll As Keys
    SendKeys.Send(roll.RWin)
    Return True
    End If
    Return MyBase.ProcessCmdKey(msg, keyData)
    End Function[/highlight]

    Das Event wird auch ausgelöst, die Überprüfung klappt auch, ABER das SendKeys.Send() löst bei mir einen Crash aus.

    Das kann daran liegen, das ich kein Formular oder so aktiviert habe? Kann ich mit SendKeys.Send Systemtasten senden?
    Ich weiß, ich sende nicht die Rollen-Taste, ich wollte erstmal testen, welche CKonstante ist die Rollen-Taste?

    Wie kann der Code aussehen, wenn ich es als DLL mit den Windowsstart mitladen lassen will, wo muss ich die DLL einbinden?

    Danke!

    Gruss ALex
    Zuletzt editiert von facebraker; 11.05.2009, 12:19. Reason: Email-Notification

  • #2
    Hi,

    vielleicht hilft dir http://dotnet-snippets.de/dns/globaler-keyhook-SID803.aspx weiter.

    mfG Gü
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

    Comment


    • #3
      Hi Gü,
      danke fr den Tipp, mein Problem ist, ich stehe irgendwie auf de rELitung, wie kann ich in der Funktion die Tastentauschen?

      [highlight=vbnet]Private Function KeyboardHookProc(ByVal nCode As Integer, ByVal wParam As IntPtr, ByRef lParam As KBDLLHOOKSTRUCT) As IntPtr
      Dim fEatKeyStroke As Boolean

      'Console.Write(lParam.vkCode.ToString & ", " & "nCode: " & CStr(nCode) & ", wParam: " & CStr(wParam) & ", lParam.vkCode: " & CStr(lParam.vkCode) & ", lParam.dwExtraInfo: " & CStr(lParam.dwExtraInfo) & ", lParam.flags: " & CStr(lParam.flags) & ", lParam.scanCode: " & CStr(lParam.scanCode) & vbCrLf)

      If nCode <> HC_ACTION Then GoTo Ende

      'wParam kann folgende Werte annehmen WM_KEYUP und WM_KEYDOWN (Taste gedrückt/losgelassen)
      'wird fEatKeyStroke=true gesetzt, so wird dieser Tastendruck "verschluckt", er hat für das System NIE statt gefunden.

      ende:
      If fEatKeyStroke Then
      Return New IntPtr(1)
      Exit Function
      End If

      Return CallNextHookEx(mHandle, nCode, wParam, lParam)
      End Function[/highlight]

      Gruss aLEx

      Comment


      • #4
        http://www.supershareware.com/software/change-keyboard-keys.html
        http://www.softlist.net/products/change_keyboard_mapping.html
        sind zwei Links zu bestehender Freeware/Shareware.

        Wie es selbst programmiert wird muss ich mir auch überlegen.

        mfG Gü
        "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

        Comment


        • #5
          Morgen Gü,

          ich habe das hier gefunden:

          http://www.activevb.de/tipps/vb6tipps/tipp0589.html

          Ich bräuchte aber ein bisschen Hilfe bei portieren :-(

          Gruss ALex

          Comment


          • #6
            Hi,

            hab noch was gefunden was interessant sein könnte: http://dotnet-snippets.de/dns/tasten-mittels-scancodes-umbelegen-SID398.aspx

            mfG Gü
            "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

            Comment


            • #7
              XP kann von Hause aus Tasten umdefinieren:

              http://www.dirk-schwarzmann.de/software/keydefiner.php

              Da kannst du dir eine .reg Datei erzeugen, einspielen, neustarten, Fertig...

              So hatte ich mir mal die total unnötige Capslock Taste als Windowstaste gemappt...

              Comment

              Working...
              X