Win Tasten abfangen

  • VB.NET

Es gibt 16 Antworten in diesem Thema. Der letzte Beitrag () ist von alca.

    Win Tasten abfangen

    Hallo zusammen,
    Ich habe mal ne Frage:
    Ich möchte folgendermaßen tasten abfangen.

    VB.NET-Quellcode

    1. RegisterHotKey(Me.Handle, 1, Key_NONE, Keys.Tab)
    2. RegisterHotKey(Me.Handle, 2, Key_NONE, Keys.D1)
    3. RegisterHotKey(Me.Handle, 2, Key_NONE, Keys.D2)
    4. RegisterHotKey(Me.Handle, 2, Key_NONE, Keys.RWin)


    Es funktioniert alles bis auf die Rwin Taste!!!! Ich habe auch schon die Lwin Taste Versucht. Die geht jedoch auch nicht.
    Was könnte ich da falsch gemacht haben?

    Vielen Dank
    Das dürfte so was sein wie bei der Tab-Taste, die wird vom System anders behandelt.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Die WIN-Taste ist wie CTRL / SHIFT / ALT eine Modifizier-Taste, d.h. sie dient dazu die Bedeutung von anderen Tasten zu verändern ( -> RegisterHotkey Modifiers ).

    Weiterhin wird sie meist schon vom Betriebssystem abgefangen um bestimmte Betriebssystem Funktionen auszulösen. Also ist es meist keine gute Idee sie als Hotkey zu registrieren, oder auch als Modifier einzusetzen.

    Tobi7996 schrieb:

    Ich möchte eigentlich nur die Win Taste deaktivieren wenn meine Applikation geöffnet ist.
    Klingt wie
    Ich möchte eigentlich nur alle anderen Programme / User beeinträchtigen, wenn meine Applikation geöffnet ist.
    [Close Request]
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Warum sollten bei einer automatisierten Anlage die Win-Tasten gesperrt werden?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Es laufen 3 Programme im Hintergrund. Es darf sozusagen keines geschlossen oder "geändert" werden bei bestimmten Fällen wenn z.B. in der Anlage gerade was aufgezeichnet wird.
    Und es gibt ja viele Bediener die dann am PC rumspielen wärend eines Prozesses. Und das will ich damit unterdrücken...
    Da die WinTaste eh das unnützeste an einem Keyboard ist und man sie nicht benötigt, würde ich es ganz einfach machnen und die Hardwareseitig disablen. Rausbauen oder beim Druckfeld der Taste nen stück Papier drunterlegen um den Kontakt zu unterbinden.

    Tobi7996 schrieb:

    Es darf sozusagen keines geschlossen oder "geändert" werden
    Da macht die Win-Taste gar nix.
    Falls die anderen Programme .NET-Programme sind:
    Geh mal in das FormClosing-Event von deren Hauptfenster, da kannste das Schließen unterbinden in Abhängigkeit vom Beendigungsgrund:

    VB.NET-Quellcode

    1. Private Sub Form1_FormClosing(sender As System.Object, e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
    2. Select Case e.CloseReason
    3. Case CloseReason.TaskManagerClosing, CloseReason.WindowsShutDown
    4. ' nur diese dürfen schließen
    5. Case Else
    6. e.Cancel = True ' alle anderen nicht
    7. End Select
    8. End Sub
    oder so ähnlich
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ne, die anderen Programme sind zugekauft und dadurch nicht editierbar.
    Ich brauche ja die Windows Taste und sämtöiche anderen Tasten ebenfalls für den Service der Anlage oder für die Instandhaltung...
    Wenn das nicht so ohne weiteres möglich ist dann muss ich mir was anderes einfallen lassen...

    Dodo schrieb:

    Da die WinTaste eh das unnützeste an einem Keyboard ist und man sie nicht benötigt, würde ich es ganz einfach machnen und die Hardwareseitig disablen. Rausbauen oder beim Druckfeld der Taste nen stück Papier drunterlegen um den Kontakt zu unterbinden.
    Dann doch lieber per Software, z.B. KeyTweak. Diese verändert das Tastatur-Mapping in der Registry, so daß Keys anders belegt oder vollkommen ignoriert werden. Geht zwar auch selber durch Rumpfuschen in der Registry (-> Aktivieren oder Deaktivieren der Windows-Taste auf der Tastatur), aber bequemer ist es so.
    Die WinTaste öffnet doch lediglich das Startmenü oder in Kombination mit anderen Tasten den schnellen Logout oder sowas, aber ich habe in meiner ganzen PC Zeit noch NIE diese bescheuerte WinTaste gebraucht, die macht mehr Probleme als sie nützt.

    Aber ich habe eben als ich nach "win taste deaktivieren" gesucht habe gleich im ersten Link was interessantes gefunden, ohne groß mit WinAPI oder KeyboardHooks um sich zu werfen. Einfach via Registry kannst die Taste deaktiveren

    support.microsoft.com/kb/216893/de (weiter unten bei Problem manuell beheben)

    Edit: oh Kangaroo was schneller :P
    Wenn Du @Dodo:'s Vorschlag befolgst, solltest Du aber auch bei regulärer Beendigung Deiner Programme das "normale" Funktionieren von Windows wieder herstellen, ansonsten könnte Deinen Programmen Böswilligkeit untergeschoben werden.
    Allerdings ist auch mir immer noch unklar, was die Win-Taste Deinen anderen Programmen anhaben kann.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Eigentlich sollte ein Vordergrundbild genügen mit solch ähnlichem Text:
    Hier läuft ein komplexes System, das nicht gestört werden darf.
    Finger wech, ansonsten Haue :!:
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!