eine andere EXE starten lassen??



  • Hello Boyz and Girls 😃

    hab ne frage... wie kann ich eine andere Exe per button starten lassen? ich will nämlich ein Autorun Menu für ein Bericht schreiben den ich auf CD mit nem Programm abgeben muss....
    Freue mich über jede hilfe 🕶



  • Siehe FAQ, "externes Programm starten".



  • das ist so viel zu komplieziert und unnötig...
    ich will das nur so wie das im letzten beitrag ist vom "externes programm laden" in deinem link.
    ich hab da zwei buttons, eins soll ein doc laden und das andere soll ne exe laden. ohne prüfung und weiteren schnickschnack 😃
    geht das nicht einfach irgendwie so in der art von
    RunApplication("iceman.exe");
    ????



  • ShellEdxecute??? Wieso? Einfacher gehts mit WinExecute(const Char*, int), dazu musst du allerdings die windows.h includieren.

    Beispiel:

    #include<windows.h>
    
    // [...] \\
    
    void __fastcall Form1::Btuuon1Click(TObject *Sender)
    {
      WinExec(Datei.c_str(),0); /* Datei.c_str() Bedeutet, dass er Datei, also String, nach Char* konvertiert. */
    }
    

    Und ne *.doc laden? Naja, es ist zwar nicht sehr schön, wenn man das so löst, aber es ist die einfachste variante:

    system("Mein.doc"); // Hier musst du noch die stdlib.h includieren

    [ Dieser Beitrag wurde am 25.06.2003 um 11:56 Uhr von Spieleprogrammierer editiert. ]



  • Wenn du die Prüfungen nicht brauchst dann lass sie halt weg. An einem einfachen ShellExecute ist nichts Kompliziertes.



  • Naja, an ShellExecute(char*,char*,char*,char*,int); ist nix kompliziert *g*

    Also ich hab bisher nie begriffen, welches char* was ist. Könntest du ja mal posten, dann glaub ich dir.



  • ShellExecute(
        HWND hwnd,  // Handle des Elternfensters
        LPCTSTR lpOperation,    // welche Operation
        LPCTSTR lpFile, // File oder Folder
        LPCTSTR lpParameters,   // Exe Params 
        LPCTSTR lpDirectory,    // Default Directory
        INT nShowCmd    // Show or not to show...
       );
    

    Was ist daran kompliziert???



  • hmm, und Operation, was gehört da rein?, das andere kapier ich noch.



  • Schau doch mal in die (Win32) Hilfe bzw. in die MSDN, da ist die Funktion gut beschrieben.



  • Was ist daran kompliziert???

    Für unseren (o.T. Marc++us) "merkbefreiten" Spieleprogrammierer ist es das schon ...

    @Major Pain

    folgende Codezeilchen sind doch nicht soooo kompliziert, oder? Und ein Blick in die MSDN-Hilfe zeigt doch, welche Parameter erwartet werden, außerdem steht doch schon alles im oben geposteten Link unter "ShellExecute"

    ShellExecute(NULL, "open", "document.doc", NULL, NULL, SW_SHOWNORMAL);
    

    oder besser:

    ShellExecute(NULL, "open", "c:\\pfad\\winword.exe", "document.doc", NULL, SW_SHOWNORMAL);
    

    [ Dieser Beitrag wurde am 25.06.2003 um 13:14 Uhr von F98 editiert. ]



  • achso, einfach nur open, naja, das is natürlich unkompliziert, ich dachte da gäbe es mal wieder irgendwelche codes *g*

    Aber wer nur ne EXE ausführen will, sollte trotzdem mit WinExecute(String,int); arbeiten, ist kürzer.



  • WinExec sollte man vermeiden, da es, wie in der Hilfe beschrieben, ledigich aus Kompatibilitätsgründen zu alten Windowsversionen vorhanden ist. Es ist also durchaus möglich, dass es schon in der nachsten SDK-Version kein WinExec mehr gibt.



  • Also ich hab XP, und bei mir klappts ohne Probleme.



  • Das bestreitet ja auch niemand. Es ist aber theoretisch möglich, dass WinExec im nächsten Windows-SDK (und damit evtl. im nächsten BCB) nicht mehr unterstützt wird und du deinen Code dann ändern müsstest. Ein guter Programmierer vermeidet es aus diesem Grund prinzipiell, solche 'Legacy'-Funktionen einzusetzen, wenn es einen zeitgemässen Ersatz gibt.



  • Original erstellt von Spieleprogrammierer:
    Also ich hab XP, und bei mir klappts ohne Probleme.

    ...und die Worte aus dem Munde eines angehenden Applikationsentwicklers... *kopfschüttel*

    Wir hatten doch die Diskussion shconmal: Nur weil was gefressen wird und noch "tut", ists noch lang nicht richtig. Wegen solcher kleiner Schnitzer wie du sie dir hier z.B. mit WinExec erlaubst, kann man nie die alten Zöpfe abschneiden, weil sonst die typen die das verwendet hatten plötzlich zu heulen beginnen weil sie ihre Software umschreiben müssen...

    -junix



  • hmm... is ja blöd.



  • seufz... mir juckts aber auch immer wieder in den fingern, nen saublöden kommentar zu unserem neuen starprogrammierer zu schreiben...

    @major pain

    die prüfung auf den rückgabewert sind nicht umsonst dabei, denn nur so kannst du feststellen, ob die ausführung erfolgreich war oder ob irgendein fehler aufgetreten ist. die funktion kannste doch irgendwo in eine unit packen deren header du includierst. dann kannste doch überall im programm RunApplication() aufrufen!



  • sorry, aber das ist mir zu hoch, so weit bin ich noch nicht 😞
    kann mir nichtmal jemand einfach sagen was ich GENAU schreiben soll wenn ich das programm auf ner cd als autorun starten lasse. es soll einmal ein word doc laden, z.B. "/docs/apb.doc" und eine andere exe z.B. "/data/iceman.exe"

    kann mir das jemand schreiben? ohne prüfung und den ganzen kram, einfach nur das die dateien in diesen ordnern liegen und dann geöffnet werden.
    so wie auf einer normalen cd mit autorun funktion...
    würd nich freuen, morgen ist nämlich abgabe und das würde meinem projekt den letzten kick geben.



  • autorun ner cd hat doch nix mit bcb zu tun. dafür ist die autorun.ini oder so da!



  • jo, das is die autorun.ini
    und die is so aufgebaut

    [autorun]
    OPEN=DeineExeDatei.exe
    ICON=DeinIcon.ICO,0

    Hat aber wirklich nix mit bcb zu tun.

    J0



  • @Major Pain

    1. Wie JO schon schreibt machen.
    2. Aus dem unter 1. gestarteten Programm heraus das Dokument und/oder die exe per ShellExecute starten, so wie ich und andere es schon ein paarmal beschrieben haben. Was genau ist daran so schwer?
    3. goto 1.


Anmelden zum Antworten