Vollständige Programmbeendigung

  • VB6

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von Unknown.

    Vollständige Programmbeendigung

    Wie sorge ich dafür, dass mein Programm definitiv beendet und komplett aus dem Speicher entfernt wird? Einzige Bedingung: Alle Ereignisse (wie z.B. QueryUnload) müssen noch ausgeführt werden.

    Bisher habe ich noch keine vernünftige Lösung gefunden.
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    Meinst du das, wenn du das Programm beendest noch mal vorher QueryUnload aufgerufen wird ?
    Geht es dir darum das der Speicher komplett freigegeben wird, oder willst du nur schreib Arbeit sparen ?
    Bei Unload bleibt der Code vom Programm ja noch im Hauptspeicher, bei End wird kein Ereigniss mehr aufgerufen.
    Kurzum : Mit VB aufrufen gehs wohl nich du musst auf eine API zurückgreifen, ein Befehl fällt mir grad nich ein, ich guck aber mal nach !

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Unknown“ ()

    Es gibt einfach folgendes Problem: Mein Programm (der Half-Life Game Connector) bleibt manchmal nach dem Beenden noch im Speicher aktiv. Das heisst, plötzlich kommt der HLGC wieder zum Vorschein, obwohl ich ihn beendet habe. Das ist natürlich ziemlich schlecht. Daher möchte ich wissen, wie ich ein VB Programm todsicher beenden kann. Aber einfach End aufrufen ist schlecht, da wie gesagt alle Ereignisse noch ausgeführt werden müssen (z.B. um das TrayIcon zu entfernen).
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    Wenn der Benutzer das Programm über den X (Schliessen)
    Knopf drückt wird ja das QueryUnload Ereigniss aufgerufen.
    Beim aufruf, nimmst du Uninitailisierungs-Vorgänge vor, entfernst Systray, etc und rufst dann End auf.
    Am besten schreibst du eine funktion die das macht.
    Wird das Programm über den Menüpunkt beenden geschlossen, rufst du noch vorher die funktion zum uninitialisern und beendest es mit end !

    Die Probs habe ich auch immer ich mach das einfach so:

    <pre>
    Private Declare Sub FatalExit Lib "kernel32" Alias "FatalExit" (ByVal code As Long)
    </pre>

    Mit dieser Deklaration ist es kein Prob mehr, aber achtung wenn das Projekt aus der IDE läuft kann es beim aufruf, die IDE mitreißen!

    Dieser Link

    vbarchiv.net/archiv/tipp_details.php?pid=39

    hilft, zum bestimmen, ob die Anwendung noch in der IDE läuft oder bereits kompiliert wurde.

    ;)
    So solltest du das Pogramm aber nich beenden !
    FatalExit ist ein Notfall aufruf, den ein programm macht wenn es ansonsten großen Ärger anrichten würde !
    Benutz End (auch nich Unload dann bleibt der Code immer noch aktiv das is nich besodneres erfreulich)

    ( Bei Fatalen Fehlern, Fatal Exit eben ;) )

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Unknown“ ()

    Dann ist FatalExit ein Notfall Aufruf...

    Aber, warum nicht diesen anwenden, was da falsch dran?

    Edit: End macht Ende, wieder was gelernt ;)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „kskiller“ ()

    Naja, weil dann auch dieses Fenster kommt Schwerwiegernder Fehler in bla bla bla (und bei xp noch soll dieses problem an microsoft gesendet werden bla bla bla)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Unknown“ ()