Ansteuern eines externen Programms

  • VB.NET
  • .NET 4.5

Es gibt 25 Antworten in diesem Thema. Der letzte Beitrag () ist von Hourmin.

    Hourmin schrieb:

    Danach gehe ich oben ins drop down Menü
    in welchem Programm ist das Menü?

    Hourmin schrieb:

    Ein weiterer Button soll Text in das öffnen feld reinschreiben
    in welchem Programm ist der Button?
    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).
    VB-Fragen über PN / Konversation werden ignoriert!
    Sorry für meine schwammige Ausdrucksweise. So soll der Ablauf sein:
    1. Ich Debugge entwickeltes Programm
    2. Ich betätige einen Button1 im entwickelten Programm, der
    Notepad startet
    (Notepad startet)
    3. Ich klicke im Notepad auf Datei - Öffnen
    (Notepad Dialog "Öffnen" wird angezeigt)
    4. Ich wechsele zum entwickelten Programm und klicke auf Button2,
    der mir in das Öffnen Feld vom Notepad einen Text reinschreibt (den Dateinamen)
    @Hourmin OK.
    Dann musst Du den Datei-Öffnen-Dialog als neues Fenster behandeln und das ganze von vorn beginnen.
    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).
    VB-Fragen über PN / Konversation werden ignoriert!
    @Hourmin Ist die Auflistung ohne und mit OFD vom Notepad mit EnumChildWindows() unterschiedlich?
    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).
    VB-Fragen über PN / Konversation werden ignoriert!
    Selbst wenn ich die Funktion EnumChildWindows() und EnumWindow() komplett
    lösche funktioniert das Ändern deiner Testapplikation (FernsteruerungTestGui) nach wie vor.
    Daher hab ich das momentan garnicht eingebaut.
    Der findet die FensterHandles doch über ihren Titel und die Steuerelemente über FindWindowEx (Klasse, Name bzw. Beschriftung)

    Daher sollte es doch komplett ohne funktionieren.
    Edit:

    VB.NET-Quellcode

    1. '////////////////////////////////////////Test mit Notepad
    2. Private Sub Button1_Click_1(sender As Object, e As EventArgs) Handles Revitstart.Click
    3. _Process = New Process()
    4. _Process.StartInfo.FileName = "Notepad.exe"
    5. _Process.Start()
    6. _Process.WaitForInputIdle(1000)
    7. End Sub
    8. Private Sub Button2_Click_1(sender As Object, e As EventArgs) Handles Button2.Click
    9. Dim _chldWnd As IntPtr = NativeMethods.FindWindow("#32770", "Öffnen")
    10. Dim hwnd As IntPtr = NativeMethods.FindWindowEx(_chldWnd, IntPtr.Zero, "Edit", "")
    11. NativeMethods.SendMessage(hwnd, NativeMethods.WM_SETTEXT, IntPtr.Zero, "Test")
    12. End Sub
    13. End Class


    Also das WindowHandle findet der auf jedenfall. Der findet komischerweise nur beim childWindow nicht die Steuerelemente
    über FindWindowEx. Beim MainWindowHandle dagegen schon.
    Also man kann mir sagen was man möchte; das ist unlogisch.

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