SendKeys nicht möglich im externen Internetexplorer unter windows 10

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Dideldum.

    SendKeys nicht möglich im externen Internetexplorer unter windows 10

    Schönen guten Abend, ich hab am Wochenende ein kleines Programm geschrieben, das mir auf Arbeit das Leben ein kleines wenig leichter machen soll.
    Kurz gesagt: Das Programm läuft im Hintergrund und fügt per Tastenkombination den TOTP-Code in das von mir ausgewählte Textfeld in einer Externen Anwendung ein. Das ganze funktioniert sehr gut und hat keine mir bekannten Fehler. In jeder Anwendung funktioniert das ganze. Außer im InternetExplorer bzw. im eingebauten InternetExplorer von Eclipse.
    Im neuen Edge Browser funktioniert alles einwandfrei. Die externe Anwendung öffnet einen Internetbrowser, um den Login auszuführen - diesen konnte ich als InternetExplorer identifizieren. Auch weitere Tests im Standard InternetExplorer belegen das mein Code nur im Internetexplorer nicht funktioniert. Mein Code wird einwandfrei ausgeführt und versucht auch den TOTP-code durch "SendKeys("^V", True)" in den InternetExplorer einzusetzen.
    Allerdings wird nichts eingesetzt. Ist dies ein bekanntes Problem mit dem InternetExplorer? Gibt es zu so einem Problem bereits eine Lösung? Ich füge hier einfach mal den Teil von Code ein der den SendKeys beinhaltet. Bitte nicht so grob mit mir sein was den Code angeht :D mache sowas nur in meiner Freizeit und ich bin kein Profi in dem Gebiet. Vielen Dank schonmal im Voraus


    VB.NET-Quellcode

    1. Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
    2. If m.Msg = _HOTKEY AndAlso hotkeyPressed = False Then
    3. Dim id As IntPtr = m.WParam
    4. Select Case (id.ToString)
    5. Case "1"
    6. Try
    7. hotkeyPressed = True
    8. Dim totp As New Totp(Base32Encoding.ToBytes(My.Settings.secretkey))
    9. code = totp.ComputeTotp()
    10. Dim hdcpy As String
    11. hdcpy = My.Computer.Clipboard.GetText
    12. If hdcpy = "" Then
    13. hdcpy = code
    14. End If
    15. My.Computer.Clipboard.SetText(code)
    16. If CheckBox2.Checked = True Then
    17. NotifyIcon2.ShowBalloonTip(500, "1", "Folgender Code wurde eingesetzt: " + code, ToolTipIcon.Info)
    18. End If
    19. My.Computer.Keyboard.SendKeys("^V", True)
    20. My.Computer.Clipboard.SetText(hdcpy)
    21. Catch ex As Exception
    22. MsgBox("Der Secret Key ist ungültig. " + ex.Message, MsgBoxStyle.Critical, "1")
    23. End Try
    24. ' Case "2"
    25. ' CASE 2
    26. End Select
    27. System.Threading.Thread.Sleep(500)
    28. hotkeyPressed = False
    29. End If
    30. MyBase.WndProc(m)
    31. End Sub


    CodeTags korrigiert; bitte zukünftig darauf achten, das richtige CodeHighlighting zu verwenden ~VaporiZed

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

    Willkommen im Forum.

    Meinst Du mit Internet Explorer tatsächlich den Microsoft Internet Explorer, den man um Himmels Willen wegen Verfalldatumüberschreitung nicht mehr verwenden sollte?
    Was passiert, wenn Du den Internet Explorer an sich öffnest und per Button-Klick irgendwas per SendKeys zukommen lässt? Klappt das? Verändert sich was, wenn Du Deine App per Admin-Rechten startest?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    VaporiZed schrieb:

    en man um


    Hallo und danke,
    Ja ich meine tatsächlich den Microsoft Internet Explorer :D eigentlich traurig das man sowas heutzutage noch benutzt aber ändern kann ich daran leider auch nichts. Ich kann morgen mal ein Bild von den Eigenschaften des eingebauten Browsers im Loginscreen machen. Und nein es ändert sich absolut nichts ob ich irgendwas mit Admin starte... Weder mein Programm noch Internet Explorer oder die Externe Anwendung. Habe auch schon durchprobiert: Buttonpress -> 10s warten -> Sendkeys... Bringt auch nichts... Leider bekomme ich den Internet Explorer nicht auf meinem PC zuhause installiert, um das ganze mal genauer anzuschauen. Gibt es noch andere Wege dem Internet Explorer irgendwelche daten rüberbringen könnte außer Sendkeys?
    Du kannst es mit keybd_event versuchen:
    learn.microsoft.com/de-de/wind…er/nf-winuser-keybd_event

    Oder auch mit SendMessage:(selbst WM_KEYDOWN und WM_KEYUP schicken)
    learn.microsoft.com/en-us/wind…er/nf-winuser-sendmessage

    Auf pinvoke.net findest du sicher die Deklarationen für NET.
    Zitat von mir 2023:
    Was interessiert mich Rechtschreibung? Der Compiler wird meckern wenn nötig :D

    DTF schrieb:

    Du kannst es mit keybd_event versuchen:
    learn.microsoft.com/de-de/wind…er/nf-winuser-keybd_event


    Schönen guten Abend, wollte mich nur mal melden. Das oben hat mir einen kleinen Denkanstoß gegeben. So ganz alleine mit WM_KEYDOWN und WM_KEYUP oder Keybd_event hat leider auch nicht so ganz geklappt. Habe aber mir eine Bibliothek installiert die das ganze ganz einfach zum Laufen gebracht hat. Durch "InputSimulatorPlus" hat das ganze funktioniert. Ich hab noch ein wenig was verändern müssen, weil es sich nicht verstanden mit Tastenkombination und direkter Zahleneingabe.

    VB.NET-Quellcode

    1. Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
    2. If m.Msg = _HOTKEY Then
    3. Dim id As IntPtr = m.WParam
    4. Select Case (id.ToString)
    5. Case "1"
    6. Try
    7. While Not IsCtrlKeyReleased()
    8. System.Threading.Thread.Sleep(100)
    9. End While
    10. Dim totp As New Totp(Base32Encoding.ToBytes(My.Settings.secretkey))
    11. code = totp.ComputeTotp()
    12. My.Computer.Clipboard.SetText(code)
    13. If CheckBox3.Checked = True Then
    14. If CheckBox2.Checked = True Then
    15. NotifyIcon2.ShowBalloonTip(500, "", "Folgender Code wurde Kopiert: " + code, ToolTipIcon.Info)
    16. End If
    17. Clipboard.SetText(code)
    18. Else
    19. If CheckBox2.Checked = True Then
    20. NotifyIcon2.ShowBalloonTip(500, "", "Folgender Code wurde eingesetzt: " + code, ToolTipIcon.Info)
    21. End If
    22. Dim simulator As New InputSimulator()
    23. simulator.Keyboard.TextEntry(code)
    24. If CheckBox4.Checked = True Then
    25. simulator.Keyboard.KeyPress(VirtualKeyCode.RETURN)
    26. End If
    27. End If
    28. Catch ex As Exception
    29. MsgBox("Der Secret Key ist ungültig. " + ex.Message, MsgBoxStyle.Critical, "Fehler")
    30. End Try
    31. ' Case "2"
    32. ' CASE 2
    33. End Select
    34. End If
    35. MyBase.WndProc(m)
    36. End Sub
    Hi,
    ich hatte auch so ein Problem mit Sendkeys und habe das gelöst, indem ich dem User folgende Optionen gebe.
    Hierbei dürfte die zweite Option vielleicht Dein Problem beseitigen.
    Hiermit wird der String nicht mit Strg+V, sondern die Zeichen einzeln nacheinander gesendet.
    Das funktioniert auch in Anwendungen, die das Einfügen mit Strg+V unterbinden.
    Wenn es Dich interessiert, poste ich gerne den Code dazu.
    Beste Grüsse
    Bilder
    • Sendkeys.jpg

      72,71 kB, 905×605, 18 mal angesehen

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