C++: Externes PRogramm starten

Dieses Thema im Forum "Programmieren" wurde erstellt von benegro, 24. Juli 2002.

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. benegro

    benegro Kbyte

    Registriert seit:
    25. März 2002
    Beiträge:
    464
    Ich fang gerade an C++ zu programmieren und möchte wissen, wie man ein externes Programm startet. (bei VB geht das ja mit shell)
     
  2. Dunkellicht235

    Dunkellicht235 Byte

    Registriert seit:
    29. Mai 2002
    Beiträge:
    13
    Danke für den Tipp. In der Richtung hatte ich da auch mal was gelesen, weiss aber nicht mehr wo.

    Gruss, Mike
     
  3. Sumo

    Sumo Kbyte

    Registriert seit:
    30. August 2000
    Beiträge:
    178
    Du brauchst das Handle des Fensters. Dann kannst du z.B. mit SetWindowText oder SendMessage über WM_SETTEXT etwas hineinschreiben.

    Da diese Funktionen ja sicher auch von dem Programm selber benutzt werden um etwas in die eigenen Fenster zu schreiben, kannst du auch versuchen das vorher abzufangen. Dazu müsstest du die API hooken. Die WinAPI stellt für sowas aber keine Funktionen bereit was das ganze ein wenig kompliziert werden lässt. Wenn es dich interessiert musst du mal gucken was du im Netz so darüber findest.
     
  4. Angel-HRO

    Angel-HRO Megabyte

    Registriert seit:
    31. August 2000
    Beiträge:
    2.524
    So, jetzt wälze ich auch Theorie. Wenn ein Programm etwas in ein Textfeld schreibt, dann geschieht das Intern. Schreibt es Daten, meinetwegen vom Feld in eine Excel Zelle (Beispiel), dann verschickt es Daten. Diese würden sich abfangen lassen.
    Aber Programminterne Routinen? Das Auslösen des Schreibens wird ja auf unterster Ebene realisiert, in Assembler, per eine JMP, JNE, etc. Befehles, der die Vorraussetzung erkennt, dass die Programmroutine in das Textfeld schreibt.
    Ich wüßte nicht, wie sich das abfangen lässt, ob sich das abfangen lässt und wenn ja, wie das über C++ geschehen könnte.
    Fürs Excel Beispiel könnte man die OLE Überwachen und dortige Aktivitäten erkennen.

    André
     
  5. Dunkellicht235

    Dunkellicht235 Byte

    Registriert seit:
    29. Mai 2002
    Beiträge:
    13
    Holla,

    nur mal angenommen... ein Programm schreibt irgendwas in ein Textfeld, dann müsste sich das doch irgendwie anfangen lassen bzw. müsste es möglich sein, aus einem externen Programm heraus etwas in das Textfeld zu schreiben.

    Also quasi: Text abfangen, ersetzen und einfügen mit externem Programm. Weiss wohl, dass sowas machbar ist, nur wie?

    Gruss, Mike
     
  6. Angel-HRO

    Angel-HRO Megabyte

    Registriert seit:
    31. August 2000
    Beiträge:
    2.524
    Wie meinst du das denn? Im Sinne von OLE? Oder was willst du abfangen?
     
  7. Dunkellicht235

    Dunkellicht235 Byte

    Registriert seit:
    29. Mai 2002
    Beiträge:
    13
    Holla!

    Wo Ihr gerade dabei seid... wie fange ich Botschaften anderer gestarteter Programme ab und/oder übergebe Botschaften an andere Programme?

    Gruss, Mike
     
  8. Angel-HRO

    Angel-HRO Megabyte

    Registriert seit:
    31. August 2000
    Beiträge:
    2.524
    Asche auf mein Haupt, habe das ; vergessen.
    Mit den includes hast du ebenfalls recht, aber die Frage war, wie der Befehl heißt, die Vorraussetzungen wären später gekommen
     
  9. specialist7

    specialist7 Kbyte

    Registriert seit:
    29. Juli 2002
    Beiträge:
    490
    Falls du Probleme hast, das zu kompilieren solltest du ein vergessenes Komma einfügen. *g*Der Code sieht dann so aus:
    WinExec("[Programmname",SW_SHOW);
    Ich glaube, du brauchst noch irgendwelche includes, wie windows.h
    oder so...

    Viel Spaß!!!!!!
     
  10. Angel-HRO

    Angel-HRO Megabyte

    Registriert seit:
    31. August 2000
    Beiträge:
    2.524
    Also mit C++ für Windows geht das über die Funktion WinExec ("[Programmname]" SW_SHOW)
     
Status des Themas:
Es sind keine weiteren Antworten möglich.

Diese Seite empfehlen