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:
- VCL nicht linken
- release version erstellen
- optimierung auf groesse
- 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.