restart-exe



  • hi,

    hab eine kleine konsolenanwendung gebastelt die mein programm neustartet, sobald es das fenster nicht mehr findet:

    /* hier der komplette code: */
    
    #include <stdio.h>
    #include <shlobj.h>
    #include <sysutils.hpp>
    #include <forms.hpp>
    
    #pragma hdrstop
    #pragma argsused
    //---------------------------------------------------------------------------
    int main(int argc, char* argv[])
    {
      while (FindWindow(NULL, "Programm")) Sleep(250);
    
      printf("Programm wird jetzt neu gestartet ...\n");
      Sleep(1000);
    
      int ret = (int) ShellExecute(0, "open", (ExtractFilePath(Application->ExeName) +
                                   "\\programm.exe").c_str(), 0, 0, SW_SHOWNORMAL);
    
      if (ret <= 32)
      {
        printf("Fehler beim Neustarten der Anwendung...\n");
        Sleep(2000);
      }
    
      return 0;
    }
    //---------------------------------------------------------------------------
    

    soweit so gut, ABER 😉 wenn ich das beim bcb als standalone kompiliere, bekomme ich ne EXE von 354 kbyte grösse!!

    frage: wie kann ich die grösse des programmes verringern (gleiche funktionalität beibehalten), dabei exe muss standalone sein und nicht auf irgendwelche dll oder sonst was zu greifen sollen???



  • lass mal die ganzen borland header wech. die funktion FindWindow ist meines wissens auch in <windows.h> drin. nimm einfach nur <windows.h> und <stdio.h> / <cstdio>



  • nee, dass bringt nix.

    auch eine Änderung von ExtractFilePath(Application->ExeName) durch GetCurrentDir() bewirkt rein gar nix.



  • Also:

    1. VCL nicht linken
    2. release version erstellen
    3. optimierung auf groesse
    4. alignment runter stellen

    im Projekte Forum ist gerade ein Thread dazu (fuer den VC++)
    auf unter 2KB sollte man die datei schon bringen koennen wenn man hart optimiert.

    ansonsten sollte es mit den 4 von mir genannten sachen auf 16KB unten sein (oder etwas in der groessen ordnung)



  • naja wenn ich die laufzeitpackages nciht mit linke, bin ich auch auf 14kbyte unten, aber dann dürfte es passieren, dass das proggi auf nem fremdrechner ohne entwicklungsumgebung nicht mehr läuft.



  • ab in das andere Compiler Forum

    [ Dieser Beitrag wurde am 12.06.2002 um 17:09 Uhr von kingruedi editiert. ]



  • Original erstellt von Sunday:
    aber dann dürfte es passieren, dass das proggi auf nem fremdrechner ohne entwicklungsumgebung nicht mehr läuft.

    warum? Wenn du keine VCL Sachen verwendest und bei der core WinAPI bleibst -> am besten auch noch printf() durch WriteConsole ersetzen, dann brauchst du nur kernel dlls von Windows, und die sollten doch wohl auf allen Windowssystemen da sein, oder? 😉



  • bei winapi zu finden...

    [ Dieser Beitrag wurde am 12.06.2002 um 19:03 Uhr von Sunday editiert. ]



  • Dieser Thread wurde von Moderator/in Marc++us aus dem Forum Andere Compiler in das Forum Rund um die Programmierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Anmelden zum Antworten