VB 2010 sendkeys Problem

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    VB 2010 sendkeys Problem

    Hallo ich habe ei Problem wen als Admin starte Dan funktioniert der sendkeys befehl nicht das der auf den linken Button geht und mit enter bestätigt das es als Admin gestartet werden soll , wen ich das ohne Admin starte funktioniert alles super bitte um Hilfe(Lösung).
    ---------------------------------------------------------------------------------------------------------------------------------

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    3. System.Threading.Thread.Sleep(3000)
    4. Dim oProcess As New Process
    5. With oProcess.StartInfo
    6. .FileName = "C:\NTR2013.exe"
    7. .WindowStyle = ProcessWindowStyle.Normal
    8. .Verb = "runas"
    9. SendKeys.SendWait("{Left}")
    10. SendKeys.SendWait("{Enter}")
    11. End With
    12. oProcess.Start()
    13. System.Threading.Thread.Sleep(3000)
    14. SendKeys.SendWait("a")
    15. SendKeys.SendWait("{Enter}")
    16. SendKeys.SendWait("a")
    17. SendKeys.SendWait("{Enter}")
    18. System.Threading.Thread.Sleep(30000)
    19. Close()
    20. End Sub
    21. End Class

    --------------------------------------------------------------------------------------------------------------------------------------

    VB.NET-Tag eingefügt. ~Trade

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

    Willkommen im Forum. :thumbup:

    Ekayta schrieb:

    VB.NET-Quellcode

    1. System.Threading.Thread.Sleep(3000)
    Was soll dies als ersterr Befehl in der Form_Load? Streiche diese Zeile ersatzlos.
    Nach

    VB.NET-Quellcode

    1. oProcess.Start()
    machst Du besser ein

    VB.NET-Quellcode

    1. oProcess.WaitForInputIdle(3000)
    rein.
    Problem: SendKeys sendet an das Fenster, das den Fokus hat. Das Zielfenster jedenfalls hat den Fokus wahrscheinlich nicht, deswegen funktioniert Dein Code nicht.
    Du musst dieses Fenster noch aktivieren, bevor Du Tasten sendest:
    SetActiveWindow()
    Die VB.NET-Deklaration findest Du hier.
    Den Parameter hwnd nimmst Du hier: oProcess.MainWindowHandle
    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!
    Das soll Benutzersteuerung mit ja bestätigen das es als Admin gestartet wird

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Dim oProcess As New Process
    With oProcess.StartInfo
    .FileName = "C:\NTR2013.exe"
    .WindowStyle = ProcessWindowStyle.Normal
    .Verb = "runas"
    SetActiveWindow(oProcess.MainWindowHandle)
    SendKeys.SendWait("{Left}")
    SendKeys.SendWait("{Enter}")

    End With



    leider geht das nicht so wie ich es dachte , kannst du mir zeigen wie ich das hinbekomme

    Ekayta schrieb:

    Das soll Benutzersteuerung mit ja bestätigen das es als Admin gestartet wird


    Warum solch eine Entscheidung dem User abnehmen? Wenn du persoenlich nicht gefragt werden willst bzw. es dir zu bloed ist gefragt zu werden, schalte die UAC auf deinem System aus! Kann mir auch nicht vostellen das MS das so gewollt hat, daher denke ich wirste da so nichts machen koennen(Nie getestet). Mir faellt nur 1 Grund ein es zu versuchen, aber da bist du mit einem Exploit besser bedient.
    And i think to myself... what a wonderfuL World!

    Ekayta schrieb:

    nicht so
    Wo wird denn da ein Prozess gestartet?
    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!