 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Mecki Igel

Anmeldungsdatum: 10.09.2004 Beiträge: 985 Wohnort: Niederbayern
|
Verfasst am: 16.02.2005, 10:43 Titel: Screen-Mode-Änderungs-Vermeidung bei Starten anderer EXE |
|
|
Guten Morgen
Ich hab hier mal ne allgemeine Frage, die mich schon lange interessiert:
Wenn ich eine Batch habe, welche zwei Programme (QB) nacheinander startet: Code: | Prog1.exe
Prog2.exe
cls |
Beide Programme laufen bei mir jetzt mit einer Auflösung von 1024x768x256c, könnte aber genau so gut SCREEN 12 oder so sein - das Problem ist das selbe:
Wie kann ich es vermeiden, dass man beim Aufruf der anderen EXE erstmal vor einem schwarzen Bildschirm sitzt, was dadurch hervorgerufen wird, dass nach Beendigung der ersten EXE für die Batch wieder Screen 0 gesetzt wird.
Das gleiche Problem ist bei normalem RUN ohne Umwege über eine Batch übrigens auch vorhanden.
Hat jemand da ne Idee?
Grüßle,
Mecki _________________ » Yodl.de: So sucht man gestern.
» Geld verdienen im Netz + ICQ.
» Firefox!
» 100€ zu gewinnen
» FreeBASIC.de |
|
Nach oben |
|
 |
Dusky_Joe

Anmeldungsdatum: 07.01.2005 Beiträge: 1007 Wohnort: Regensburg/Oberpfalz
|
Verfasst am: 16.02.2005, 17:16 Titel: |
|
|
Solange du von beiden Progs die BAS-Quellcodes hast, könntest du sie zu einem Zusammenfassen, und als einzelne Module behandeln. Sonst fällt mir nämlcih nix ein, wie man die DOS-Routinen umgehen könnte... (Bzw die, die DOS emulieren, aber des is ja egal...) _________________ fully biological degradable
Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet. |
|
Nach oben |
|
 |
Mecki Igel

Anmeldungsdatum: 10.09.2004 Beiträge: 985 Wohnort: Niederbayern
|
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 16.02.2005, 21:17 Titel: |
|
|
Auf APIs kann man bekanntlich in vielen Bereichen auf zwei Arten zugreifen: integrierte QB-Befehle, z.B. SCREEN oder CALL INTERRUPT direkt. Im ersteren Fall verwaltet QB offene Resourcen gewissermassen mit, so dass beispielsweise eine noch offene Datei, bei der das CLOSE vergessen wurde, bei einem SYSTEM/END trotzdem geschlossen wird. Dasselbe auch bei SCREEN: QB merkt sich, dass wir zuletzt nicht mehr im SCREEN 0 waren und setzt dies zurück.
Bei CALL INTERRUPT gibt es diese Verwaltung nicht. Beim alten Commodore Amiga war es noch extremer: Wer direkt auf die intuition.library zugriff, konnte problemlos das halbe RAM mit verwaisten Screens und Windows füllen, die nach Beendigung keinem Prozess mehr gehörten.
Heutige Betriebssysteme dagegen führen genauso wie QB ebenfalls Buch darüber, wer bestimmte Resourcen belegt. Aus diesem Grund werden unter Linux offene Dateien bei einem "Segmentation fault" mit Core-Dump geschlossen - ist dort auch gut so, denn sonst könnte jemand bei mir auf den Webserver ein fehlerhaftes CGI-BIN-Script hochladen, welches nach ein paar hundert Homepagebesuchern (die alle einen "500 Internal Error" zu sehen bekommen) allmählich die File Deskriptoren aufbrauchen würden, so dass ich rebooten müsste... ;-)
Zurück aufs eigentliche Problem: Unter reinem MS-DOS 6.22 weiss ich auf alle Fälle, dass COMMAND.COM keine Rücksetzung des Videomodus vornimmt, sondern man bekommt dort sogar einen grafischen DOS-Prompt, wenn der gewählte Videomodus BIOS-Textausgabe (bei VESA nicht mehr Pflicht für einen Hersteller!) unterstützt. Dagegen bei aktivem Windows mit CMD.EXE kann es gut möglich sein, dass dieser nach Beendigung der NTVDM vom ersten .EXE alle Resourcen inkl. Videomodus wieder aufräumt - sprich zurücksetzt. _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|