Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Menü+TSR

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
16.02.2010, 16:29 Uhr
Newbie007



Hallo ;-))

Ich habe einen Spiel unter DOS, den ich mit hilfe eines Menüs starten möchte.

Da ich neu in diesem Bereich bin, bräuchte ich dringend hilfe um ein kleines Programm zu diesem Zweck mit Dev-C++, das folgendes erreichen sollte :

1. Sich öffnen und einen einfachen Textmenü mit Titel und Auswahlpunkte zur verfügung stellen (zb 1, 2, 3)
2. Beim auswählen jeder einzelnen dieser Optionen eine bestimmte Datei von einem fremden Ordner in das Spielordner kopieren und anschliessend die Spieldatei (exe) ausführen.
3. Ich spiele dann mein Spiel ganz normal.
4. Um anschliessend das Spiel zu verlassen, muss ich die Tastenkombination STRG+F4 drücken.
5. Dieses TSR sollte diese Tastenkombination abfangen, die vorher in den Spielordner kopierte Datei in den fremden Ordner zurück kopieren anschliessend umbennen, und mich letztendlich ins Textmenü
zurückbringen.

Das sind wahrscheinlich nur ein paar Zeilen Programmierung, aber ich komme einfach nicht drauf.

Es wäre lieb wenn jemand mir dieses kleine Programm schreiben könnte.

Lg an die Community
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
16.02.2010, 16:42 Uhr
Newbie007



PS : Im Punkt fünf muss das Zielordner unter einem neuen Namen erzeugt werden ;-))
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
16.02.2010, 18:57 Uhr
0xdeadbeef
Gott
(Operator)


Dir ist nicht wirklich klar, was ein TSR ist, oder?
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
16.02.2010, 19:56 Uhr
Hans
Library Walker
(Operator)



Zitat von Newbie007:

Das sind wahrscheinlich nur ein paar Zeilen Programmierung, aber ich komme einfach nicht drauf.


Das ist garantiert ein Irrtum.


Zitat von Newbie007:

Es wäre lieb wenn jemand mir dieses kleine Programm schreiben könnte.

Nur gegen Bares. - Aber wenn Du selber programmieren willst, dann fang doch mit dem Auswahlmenü an, das ist auf einer DOS-Oberfläche nämlich sehr einfach. Und dazu braucht es auch nur ein paar Grundlagen.
Ansonsten wäre noch die Frage: Was ist ein TSR? Und wozu braucht(e) man die? - Erklär mal.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
16.02.2010, 20:21 Uhr
0xdeadbeef
Gott
(Operator)


Bei TSR-Programmen (TSR = terminate and stay resident) handelt es sich um eine Art primitiven Vorläufer von Daemon-Prozessen auf Plattformen, die kein präemptives Multitasking beherrschen (wie etwa DOS).

Technisch läuft das unter DOS (wenn ich mich richtig erinnere) etwa so, dass das TSR-Programm einen oder mehrere Interrupt-Handler auf sich umleitet, um dann einkommende Interrupts zu verarbeiten und an das nächste TSR-Programm bzw. den Betriebssystemkern weiterzureichen.

Auf Windows-Systemen kommt man an diese Interrupts natürlich nicht mehr ran, also reden wir hier von echten DOS-Systemen, womit Dev-C++ als IDE/Compiler ausscheiden dürfte. Ich wüsste auch nicht, wo man einen Compiler für diese Systeme auftreiben sollte, und dementsprechend könnte ich nur wild spekulieren, wie dieser die zur Interruptverarbeitung notwendigen 16bit-x86-Assembly-Teile erwarten könnte. Auch liefe man natürlich in böse Probleme, wenn eines der zu startenden Programme mit den Interrupts Schindluder triebe.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
16.02.2010, 20:35 Uhr
Newbie007



TSR = Terminate and stay resident (im hintergrund, damit es eben meine Tastenkombination abfangen), oder habt ihr eine bessere Idee ? ;o)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
16.02.2010, 20:53 Uhr
Newbie007



Ja, genau 0xdeadbeef, so sieht es aus. Alles was ich dir sagen kann, ist wie mein Spiel aussieht : Es wird durch eine Standard gepackte Installationroutine unter Windows installiert.
Es eLegt aber keinerlei Eier im Windows Verzeichnins ab, sondern erzeugt nur einen gesamten Ordner unter C: mit der game.exe Datei, sämtlichen Resourcen Dateien und eine kodierte .dat
Datei die meine Lebenspunkte beinhaltet.
Wenn ich das spiel starte, wird der Bildschirm kurz schwarz, dann kurz blau und dann erscheint das Spiel. Ich weiss nicht ob es unter windows DOS mode oder real DOS mode läuft, ich denke eher real.
Die Sache sieht so aus : ich habe mir mehrere .dat Dateien erzeugt, mit unterschiedlichen Lebenspunktenstände. Bevor ich spiele, möchte ich zum Beispiel eine Datei mit 1000 Lebenspunkten von aussen in meinem Spielordner kopiert haben.
Wenn ich fertig mit dem Spielen bin, sind entweder meine Lebenspunkte gestiegen oder gesunken, deshalb möchte ich diese Datei in einem fremden Ordner kopieren um sie zu archivieren. Dies soll aber in der gleichen millisekunde erfolgen, wo ich aus dem Spiel heraus komme, in dem ich STRG-F4 drücke (es ist die einzige Möglichkeit daraus zu kommen).
Wenn ich jetzt diese Kombination schon anwende, kehrt die ganze Sache immer nach Windows zurück. Wenn aber das Programm mit Menü den ich suche, sei es eine Batch datei, einen BASIC oder C++ Programm unter DOS gestartet wird, wie kann ich machen dass das ganze nach DOS zurückkehrt ?

Lg
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
16.02.2010, 23:39 Uhr
Hans
Library Walker
(Operator)


Hi,

@Beefy: Das Du weist, was ein TSR ist, war mir klar, aber das wollte ich eigentlich von vom Newbie007 wissen, um heraus zu finden, ob er es auch weis. - Hast es aber dennoch gut erklärt.

Was die TSR's angeht, so konnte man mit den 16-Bit DOS Compilern von Borland derlei entwickeln. Bei Turbo C(++) gab es extra Funktionen dafür. Aber die auch von Dir angesprochene Interruptproblematik ist ja gegen Ende der DOS-Ära manchmal extrem ausgeufert, so das selbst Profis ihre liebe Not hatten, ihre Anwendungen narrensicher zu machen, und die Systemstabilität nicht zu gefährden.

@Newbee:
Und den Realmode hat Intel doch ab dem Pentium IV, wenn ich mich nicht irre selbst beerdigt, so das es heute keine neuen Prozessoren mehr gibt, die noch im Realmode laufen können. Stattdessen laufen sie in einem Virtual 386-Mode, der dem Programm lediglich einen Realmode vorgaukelt.

Das Problem, das Du im Posting 006 beschreibst ist ein Fall für Batchdateien, dazu braucht man keine C(++) Anwendung. Wenn Du Dein Spiel aus einer Batchdatei heraus aufrufst, landest Du nach Beendigung des Spiels auch wieder in selbiger. Dann kannst du mit ein paar Kommandozeilen-befehlen (die immer auch in Batchdateien funktionieren) nach belieben Deine Dateien durch die Gegend kopieren oder verschieben. - Erst wenn die Bearbeitung der Batchdatei abgeschlossen ist, landest Du wieder in Windows.

Praktisch kann das so aussehen:
Batchdatei, nennen wir sie mal caller.bat

Code:
@echo off
echo Guten Tag, dies ist die Batchdatei, ich starte das Programm X
X
echo Programm X wurde beendet. Wir sind wieder in der Batchdatei,
echo und können jetzt was anderes machen.
echo
echo Übrigens: Das Programm hat den Wert %errorlevel% zurück gegeben.
@echo on



Das Programm X sei hier ein modifiziertes "Hello World", etwa so:

C++:
#include <iostream>

int main()
{
  std::cout << "Hallo, hier meldet sich das Programm X," << endl;
  std::cout << "und verabschiedet sich auch gleich wieder." << endl;

  return 7;
}



Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: