Frage zu registerhotkey-wrapper - SourceCode-Austausch

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von Louis.Cyfer.

    Frage zu registerhotkey-wrapper - SourceCode-Austausch

    Bezug: [VB.NET] RegisterHotKey-Wrapper
    wow .. ok .. der Thread is schon etwas älter aber eine frage hab ich noch dazu:

    das registrieren/deregistrieren funzt soweit .. ich kann nur nirgendwo defenieren, was passiert, wenn ein hotkey gedrückt wird.
    wär cool wenn jmd dazu mal was schreibt :)

    Greetz
    MfG Cyfer
    ---
    Dim Louis.Cyfer As Coder.Object
    Do While Louis.Cyfer.ReadyState <> Louis.Cyfer.ReadyState.Complete
    Application.DoEvents()
    Loop
    ' Der Beste Code ist immer noch der eigene
    ---

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

    stimmt.. hab es erst bemerkt, als ich dein code in der zip gelesen hab.

    habe es jetzt so gemacht:

    VB.NET-Quellcode

    1. Private WithEvents iHKey As New Hotkey
    2. Private Sub iHKey_Pressed(ByVal sender As Object, ByVal e As EventArgs) Handles iHKey.Pressed
    3. If STOfound = True Then
    4. Select Case iHKey.Value
    5. Case Keys.Pause
    6. SendKeys.Send(Textbox2.Text)
    7. End Select
    8. End If
    9. End Sub


    aber sendkeys arbeitet nicht richtig, denn in textbox2 steht mehr als nur 1 zeichen. er sendet aber nur das erste zeichen dieses strings

    woran kann das liegen?
    MfG Cyfer
    ---
    Dim Louis.Cyfer As Coder.Object
    Do While Louis.Cyfer.ReadyState <> Louis.Cyfer.ReadyState.Complete
    Application.DoEvents()
    Loop
    ' Der Beste Code ist immer noch der eigene
    ---
    Setz mal einen Haltepunkt auf die Zeile

    VB.NET-Quellcode

    1. SendKeys.Send(Textbox2.Text)
    und sieh Dir im Debugger den Inhalt von Textbox2.Text an.
    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!
    da schreibt ers ja richtig ... auch wenn ichs als MsgBox schicke .. etc etc .. aber da wo es hinsoll kommt es nicht so an, wie es soll, sondern nur der 1 character der Textbox

    €diT: hmm.. ok es scheint an der PAUSE-taste an sich zu liegen
    .. habs mal getestet mit Keys.D1 (da klappt alles wies soll)

    bin etwas ratlos, soll ich mal versuchen die taste loslassen zu lassen wenn gedrückt?
    MfG Cyfer
    ---
    Dim Louis.Cyfer As Coder.Object
    Do While Louis.Cyfer.ReadyState <> Louis.Cyfer.ReadyState.Complete
    Application.DoEvents()
    Loop
    ' Der Beste Code ist immer noch der eigene
    ---

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Louis.Cyfer“ ()

    Wo kommt es denn an bzw. wo soll es denn ankommen?
    Was passiert, wenn Du das mit einem Notepad machst?
    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!
    in eine textbox einer anderen anwendung, aber anstatt cyfer kommt nur c an

    .. habe es jetzt auch mal mit der anderen methode probiert, die ErfinderDesRads mitgeliefert hat (frmRegisterMany) .. man muss aber für jeden Hotkey eine eigene sub schreiben, soweit ich gesehn hab.

    €diT: also anscheinend haben modifier-keys auswirkingen auf das verhalten, also wenn man nur den PAUSE key verwenden will geht das nicht oder nur STRG oder sowas .. man MUSS ne richtige kombi machen.. wie STRG + ALT + ENTF etc.
    dann kappt das auch richtig und flüssiger als die GetAsynchKeyState - Version mit timer, der nicht immer 100% genau arbeitet. Das hierhingegen, muss ich echt sagen, hat stil^^
    MfG Cyfer
    ---
    Dim Louis.Cyfer As Coder.Object
    Do While Louis.Cyfer.ReadyState <> Louis.Cyfer.ReadyState.Complete
    Application.DoEvents()
    Loop
    ' Der Beste Code ist immer noch der eigene
    ---

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Louis.Cyfer“ ()

    RegisterHotkey registriert eine TastenKombi systemweit. Diese Tastenkombi gelangt dann an keine Anwendung mehr, sondern nur noch dahin, wo registriert wurde.

    Man kann jede Tastenkombi registrieren, auch EinzelTasten wie Keys.Pause, nur ist dieser Key dann systemweit in keiner Anwendung mehr verfügbar, deshalb registriert man vorzugsweise Kombis, von denen man ausgeht, dasse in Anwendungen nicht verwendet werden.

    Viele Anwendungen treffen aber auch Vorkehrungen gegen Sendkeys, um zu verhindern, dasse per Bot bedient werden - das ist ja, was du vorzuhaben scheinst.
    mir gings ja nur darum dass ich speziell PAUSE oder die rechte STRG taste nicht alleine nutzen kann, weil dies nicht so recht funkionieren will. (warum auch immer) .. der string wird korrekt gefüllt, aber aufgrunddessen, dass es special-tasten sind, mag der nich so recht :P

    .. ich steh jetz eher vor dem problem, dass ich in den einer combobox ausgewähltem buchstaben (einzeln) in einen key umwandeln muss, aber das isn andres topic.

    und ja es ist ein versuch eines bots um meinem system etwas mehr komfort zu verschaffen zwecks programmen anweisen, dies oder das zu tun und danach gleich was zu laden etc etc. nicht für games oder sowas..


    vielen dank für deine Class ! is echt sinnvoller und/oder schneller als die GetAsynchKeyState-Prozedur per timer .-.
    MfG Cyfer
    ---
    Dim Louis.Cyfer As Coder.Object
    Do While Louis.Cyfer.ReadyState <> Louis.Cyfer.ReadyState.Complete
    Application.DoEvents()
    Loop
    ' Der Beste Code ist immer noch der eigene
    ---