EXE és COM fájlok indítása C++ Bulder programból. Válasz Nektek!
2002-11-27T11:39:26+01:00
2002-11-27T11:39:26+01:00
2022-07-27T21:27:01+02:00
  • Sziasztok. Ha szeretnétek programot indítani C++ Builder programotokból, akkor tegyétek a következőket:

    Elősször létre kell hoznotok 2 struktúrát.
    Ahhoz, hogy a formból bárhonnan elérhessétek, célszerű a form H fájljában létrehozni.
    //-------------------Unit1.h-------------------------
    PROCESS_INFORMATION ProgiInfo ;
    STARTUPINFO StartInfo ;

    //A Button1 megnyomására elindítunk egy programot.

    //--------------unit1.cpp------------------------------
    void __fastcall TForm1 :: Button1Click ( TObject *Sender )
    {
    int sikerült_e; //A CreateProcess függvény visszatérési értékét tárolja.

    AnsiString utvonal ; //Ebben tároljuk a futtatandó program útvonalát

    AnsiString parameter ; //Ebben tároljuk a futtatandó programnak átadandó paramétert
    AnsiString parancssor ; //Ebben tároljuk az átadandó, teljes parancssort

    //A StartInfo struktúra feltöltése.

    StartInfo.lpReserved = NULL ;
    StartInfo.lpDesktop = NULL ;
    StartInfo.dwFlags = NULL ;
    StartInfo.wShowWindow = NULL ;
    StartInfo.cbReserved2 = 0 ;
    StartInfo.lpReserved2 = NULL ;
    StartInfo.cb = sizeof ( StartInfo ) ;

    //Beállítjuk a változókat
    utvonal = "C: WINDOWS NOTEPAD.EXE " ;

    parameter = "C: AUTOEXEC.BAT" ;
    //Most előállítjuk a ténylegesen átadandó parancssort
    // Az utvonal és a parameter változók elejére és végére elhelyezünk egy-egy idézőjelet,
    // valamint közéjük rakunk egy üres karaktert.
    // Erre azért van szükség, hosszú könyvtárneveket is meg tudjunk adni.
    // Például: C: Program Files MsOffice word.exe
    parancssor = """ + utvonal + """ + " "" + parameter + """ ;
    //Megpróbáljuk elindítani a programot
    sikerult_e = CreateProcess ( utvonal.c_str ( ) , parancssor.c_str ( ) , NULL , NULL , false , NULL , NULL , NULL , &StartInfo , &ProgiInfo ) ;
    //Ha a sikerult_e váltózó értéke a hívás után nulla, akkor nem sikerült az indítás
    if ( sikerült_e == 0 )
    {
    Application -> MessageBox ( utvonal.c_str ( ) , "Program indítási hiba!" , MB_OK | MB_ICONERROR ) ;
    }
    else
    {
    Application -> MessageBox ( utvonal.c_str ( ) , "A program elindult!" , MB_OK | MB_ICONINFORMATION ) ;
    }

    Sikeres indítás után a ProgiInfo struktúra tartalmaz adatokat az elindított programról.

    Természetesen nem muszáj a programoknak indítási paramétert megadni, de van rá lehetőségetek.
    Mutasd a teljes hozzászólást!
abcd