tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
6
ZUGRIFFE
3543
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von Tortilla
    Tortilla Tortilla ist offline Mitglied
    Registriert seit
    Jun 2004
    Beiträge
    20
    Hi Leute!

    Ich versuche mit VB.NET ein Programm zu bedienen.
    Das bedeutet Buttons klicken, Text eintippen, Ergebnisse Auslesen usw...
    Leider hab ich überhaupt keine Ahnung, wie ich ein anderes Programm mit .NET erkennen und steuern kann. Dazu müsste ich es wohl als Objekt im Quellcode erzeugen.

    Wenn jemand weiß wie es geht, oder vielleicht einen Tip für mich hat, wäre mir damit schon sehr geholfen.

    Thx Tortilla
     

  2. #2
    Avatar von Sunray
    Sunray Sunray ist offline Mitglied Gold
    Registriert seit
    Sep 2003
    Ort
    Schweiz
    Beiträge
    190
    Wenn dieses andere Programm dir "gehört" (-> du den Code hast und es verändern kannst) und in .NET geschrieben ist, kannst du Remoting verwenden.
    Dabei erhält das "steuernde" Programm eine Referenz auf ein Objekt im "zu steuernden" Programm. Das wäre eine Möglichkeit.

    Wenn eben dieses Programm kein .NET Programm ist, könntest du über COM+ auf eine Referenz zugreifen. Auch bekannt als Enterprise Services (glaub ich).

    Ich selber habe bisher höchstens Remoting etwas angetastet (jedoch bisher ohne Erfolgserlebnis).

    Die allerletze Variante wäre eine Netzwerkschnittstelle: Das zu steuernde Programm wartet als Server auf hereinkommende TCP Verbindungen.
    Deine Fernsteuerung dient als Client und sendet dem Server Befehle.
     
    Zu jedem Problem gibt es mindestens eine Lösung.
    Zu jeder Lösung gibt es mindestens eine bessere Lösung

  3. #3
    Avatar von Tortilla
    Tortilla Tortilla ist offline Mitglied
    Registriert seit
    Jun 2004
    Beiträge
    20
    Hey Sunray!

    Leider gehört das Programm nicht mir, was die Sache mit dem Remoting schon mal ausschließt.
    Für die zwei anderen Methoden interessiere ich mich jedoch sehr.
    Gibt es denn eine Möglichkeit z.B. in Visual Studio.NET ein COM-Objekt selbst zu erzeugen, mit dem ich dann das fremde Programm bedienen kann? Ein Link zu einem Tutorial wäre echt dufte!

    Die Sache mit der Netzwerkschnittstelle habe ich mir auch schon überlegt. Allerdings weiß ich nicht so recht wie ich dem Programm als Server die richtigen Befehle schicken kann. Ich will ja auch nicht beim Rumprobieren mit irgendwelchen ungültigen Befehlen den Programmserver zum Absturz bringen.

    Am besten wäre es immernoch, wenn ich die Programmoberfläche aus .NET heraus ansteuern könnte.


    greetz Tortilla
     

  4. #4
    Avatar von Sunray
    Sunray Sunray ist offline Mitglied Gold
    Registriert seit
    Sep 2003
    Ort
    Schweiz
    Beiträge
    190
    Wenn dir das programm nicht gehört wirds schwieriger.
    Viele Programme werden aber mit COM-Komponenten ausgeliefert, die den Zugriff auf die Funktionen der Anwendung ermöglicht.

    Beispiel: MS Office. Wenn du in VS.NET unter Referenz Einfügen auf COM klickst, findest du dort Klassen, mit denen sich Word, Excel usw. fernsteuern lassen.
    Einschränkung: Dein Programm startet eine neue Instanz des Programms. Du kannst nicht bereits laufende Programminstanzen steuern. (Dazu müsste dir das Programm "gehören"...)

    Das "zu fernsteuernde" Programm muss von sich aus eine Möglichkeit bieten, gesteuert zu werden. Ist das nicht der Fall, wirst du dein Vorhaben aufgeben müssen.
     
    Zu jedem Problem gibt es mindestens eine Lösung.
    Zu jeder Lösung gibt es mindestens eine bessere Lösung

  5. #5
    Avatar von Tortilla
    Tortilla Tortilla ist offline Mitglied
    Registriert seit
    Jun 2004
    Beiträge
    20
    Eine COM-Komponente gibt es leider nicht.
    Ob das Programm von sich aus eine Möglichkeit bietet, gesteuert zu werden, weiß ich nicht.
    Es würde ja schon völlig ausreichen, wenn ich in ein Textfeld dieses Programms etwas eintragen und die Menüpunkte auswählen könnte (z.B. Bearbeiten -> Alles markieren). Vielleicht ginge es ja auch über Tastaturbefehle wie "Strg + A".
    Ich habe es schon geschafft, ein laufendes Programm in .NET als Prozess zu erfassen.
    Hier als Beispiel vom Editor:

    Code :
    1
    2
    
    Dim localByName As Process() = Process.GetProcessesByName("Notepad")
    localByName(0).CloseMainWindow()
    Damit kann ich immerhin schon einen laufenden Prozess schließen, also ein Programm beenden.
    Bestimmt gibt es eine Möglichkeit, über den Spy++ den richtigen Prozess herauszulesen und diesen künstlich an das Programm zu schicken.
     

  6. #6
    Avatar von Sunray
    Sunray Sunray ist offline Mitglied Gold
    Registriert seit
    Sep 2003
    Ort
    Schweiz
    Beiträge
    190
    Ich weiss, dass man über die Windows API auf Controls zugreifen kann. Dazu benötigt man ein Handle des Controls. Dieses erhält man unter .NET durch: TextBox.Handle
    Du könntest einer solchen API-Funktion auch das Handle einer "fremden" Textbox übergeben.
    Ich kann dir aber nicht sagen, wie du daran kommst.

    Leider kenn ich mit der WinAPI nicht besonders gut aus. Kann dir nicht einmal sagen, wie du den Inhalt manipulieren könntest..
     
    Zu jedem Problem gibt es mindestens eine Lösung.
    Zu jeder Lösung gibt es mindestens eine bessere Lösung

  7. #7
    Avatar von Tortilla
    Tortilla Tortilla ist offline Mitglied
    Registriert seit
    Jun 2004
    Beiträge
    20
    Könntest du mir bitte mal ein Beispiel geben, wie man mit so einem Handle umgeht?
    Das habe ich noch nicht so ganz begriffen.
     

Ähnliche Themen

  1. Mit C# Website bedienen
    Von dartox im Forum .NET Café
    Antworten: 7
    Letzter Beitrag: 16.07.10, 09:10
  2. vb Programm per Handy bedienen
    Von Arijane im Forum .NET Café
    Antworten: 1
    Letzter Beitrag: 09.02.10, 13:21
  3. Excel mit Tastatur bedienen
    Von IcocaI im Forum Office-Anwendungen
    Antworten: 4
    Letzter Beitrag: 16.03.09, 10:12
  4. vbs - Programm aufrufen und eine Schaltfläche bedienen
    Von Muckel1986 im Forum Visual Basic 6.0
    Antworten: 0
    Letzter Beitrag: 07.07.08, 13:57
  5. Webseite mit VB bedienen
    Von skee im Forum Visual Basic 6.0
    Antworten: 2
    Letzter Beitrag: 21.10.03, 13:22