Tastatur Leds steuern (Lauffähige Lösung)

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von fraju.

    Tastatur Leds steuern (Lauffähige Lösung)

    Hallo Leute

    Hier eine Lösung mit einer Frage.

    Warum läuft dieses Teil nicht im Debugger.
    Als DebugEXE habe ich keine Fehlermeldung.
    ..wer findet den Fehler?

    Edit:
    Erweitert und Fehler behoben.



    Gruß
    Dateien
    • Tasten_LEDs.zip

      (93,1 kB, 445 mal heruntergeladen, zuletzt: )

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „fraju“ ()

    ich habe VB.2005.Net


    Ein Aufruf an die PInvoke-Funktion "Tasten_LEDs!WindowsApplication1.Form1::keybd_event" hat das Gleichgewicht des Stapels gestört. Wahrscheinlich stimmt die verwaltete PInvoke-Signatur nicht mit der nicht verwalteten Zielsignatur überein. Überprüfen Sie, ob die Aufrufkonvention und die Parameter der PInvoke-Signatur mit der nicht verwalteten Zielsignatur übereinstimmen.


    Bei Aufruf eines Buttons.

    Der Befehl wird aber bei Weiter richtig ausgeführt.

    Gruß

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „fraju“ ()

    Hallo
    Es muß doch aber einen Grund haben,warum dies bei VB2005.Net auftritt.

    Diese und ähnliche Programme sollen auf alten PCs laufen, z.B 500 mit 256MB Speicher,Framework 2.0
    Je höher die Version ,je aufgeplusterter das Programm.

    Außerdem möchte ich die Ursachen beseitigen nicht die Wirkung.

    Gruß
    Also erstmal Versuch alle 'Long's in 'Integer' umzuschreiben, Long ist ein wenig zu unflexibel.

    VB.NET-Quellcode

    1. Private Declare Sub keybd_event Lib "user32" ( _
    2. ByVal bVk As Byte, _
    3. ByVal bScan As Byte, _
    4. ByVal dwFlags As Long, _
    5. ByVal dwExtraInfo As Long)
    6. Private Const VK_CAPITAL = &H14
    7. Private Const KEYEVENTF_KEYUP = &H2
    8. Private Const VK_NUMLOCK = &H90
    9. Private Const VK_SCROLL = &H91
    10. ' zunächst die benötigte API-Funktion
    11. Public Declare Function GetKeyState Lib "user32" ( _
    12. ByVal nVirtKey As Long) As Integer


    Dadrin alle Long durch Integer tauschen. Also bei mir (Vista, VB 9) funktioniert es auch einwandfrei. Ich habe so die Vermutung dass diese API nicht wirklich richtig läuft. Was genaues kann ich dir aber auch nicht sagen.

    Nick33 schrieb:

    Also erstmal Versuch alle 'Long's in 'Integer' umzuschreiben

    Sieht wie die Lösung aus ;)

    Vermutlich hat Fraju nen alten VB6 genommen und vergessen, dass VB6 "Long" = VB.Net "Integer" ist. Außerdem sind auch die API Parameter üblicherweise 32bit und nicht 64bit

    ...

    right:
    msdn.microsoft.com/en-us/library/ms646304%28VS.85%29.aspx

    DWORD = 32 bit
    PTR = 32 oder 64 bit, aber aus komp. Gründen sollte man 32 verwenden
    Hallo
    ..habe Long in Integer Verändert.
    Läuft jetzt Fehlerfrei.
    Danke für den Hinweis!

    Habe es schon mal gemacht aber wieder vergessen.
    Dafür das Prog bissel erweitert.
    ...bisschen üben.
    Jetzt werde ich mal meine Schieberegister anschließen.
    Weiss jemand wie schnell die Tastatur Befehlsverarbeitung ist.

    Zum experimentieren eine Tastatur als Ein/Ausgabe..für viele Anfänger ausreichen.

    Gruß