Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Menü + TSR
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Newbie01



Anmeldungsdatum: 16.02.2010
Beiträge: 12

BeitragVerfasst am: 16.02.2010, 17:13    Titel: Menü + TSR Antworten mit Zitat

Hallo zwinkern)

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 zuschreiben, 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
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Newbie01



Anmeldungsdatum: 16.02.2010
Beiträge: 12

BeitragVerfasst am: 16.02.2010, 17:44    Titel: Antworten mit Zitat

PS : Im Punkt fünf muss das Zielordner unter einem neuen Namen erzeugt werden zwinkern)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Ferdi



Anmeldungsdatum: 10.03.2007
Beiträge: 284
Wohnort: Berlin

BeitragVerfasst am: 16.02.2010, 18:27    Titel: Antworten mit Zitat

Zu 1) Menü mit PRINT und LOCATE gestalten
Zu 2)
a) Entweder mit MS-DOS- Befehlen (copy) oder direkt in QBasic (mit einer Schleife und 2 geöffneten Dateien)
b) Würde ich mit RUN "Dateiname.exe" machen
Zu 3) Das Spiel als Schleife schreiben und am Ende mit INKEY die entsprechende Tastenkombination abfangen und Schleife verlassen.
(Z.B. mit DO...LOOP UNTIL INKEY = [...])
Thomas Antonis hat ein Programm gaschrieben, mit dem Du [...] herausfinden kannst, einfach 'mal auf http://www.qbasic.de/ suchen
Zu 4) Ein TSR kann man nicht ohne Umwege in QBasic schreiben, was willst Du denn genau?
_________________
Dieser Post wurde cum grano salis gewürzt! Na dann: Guten Appetit!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Newbie01



Anmeldungsdatum: 16.02.2010
Beiträge: 12

BeitragVerfasst am: 16.02.2010, 22:17    Titel: Antworten mit Zitat

Danke Ferdi der schnellen Antwort ;o)

Sieht gut aus, nur würde dieses Programm so geschrieben wirklich im Hintergrund des DOS boxed mode von Windows XP laufen, und warten dass ich STRG-F4 gedrückt habe ? Wenn ja, dann ist es ja perfekt.

Ein Hacken : Wenn ich das Spiel verlassen will und STRG-F4 drücke, kehrt das Spiel immer in Windows zurück. Was sollte mann schreiben damit es in unserem Basic Menü wieder kommt ?

Lg
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Newbie01



Anmeldungsdatum: 16.02.2010
Beiträge: 12

BeitragVerfasst am: 16.02.2010, 22:22    Titel: Antworten mit Zitat

Danke für den Thomas Antonis Tip ;o)

Aber wie heisst das Programm ?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 16.02.2010, 22:41    Titel: Antworten mit Zitat

Hallo!

Newbie01 hat Folgendes geschrieben:
[...]DOS boxed mode von Windows XP[...]

Wenn du vorhast, das Programm unter Windows laufen zu lassen, halte ich ein TSR-Programm für keinen sonderlich geeigneten Ansatz, auch wenn man natürlich auch in einer DOS-Box ein solches laufen lassen kann. "TSR" ist 80er-Jahre-Technik und nicht für Windowsumgebungen gedacht. zwinkern Zudem ist die Entwicklung eines TSR-Programms, wie man sie für eine DOS-Umgebung durchführen würde, nicht gerade trivial, weil man sowas üblicherweise in Assembler programmiert. Mit "nur ein paar Zeilen" QBasic-Code ist es da nicht getan.
Des Weiteren bringt das Ausführen von DOS-Programmen im Hintergrund auf Windows 2000 und XP einen deutlichen Nachteil mit sich: Die CPU-Auslastung schnellt dabei in der Regel auf 100% hoch, sodass alles andere nur noch sehr langsam abläuft. Ruckeln und eine schwergängige Steuerung wären bei Spielen wohl die Folge.

Ich würde stattdessen in eine andere Richtung überlegen: Zunächst würde ich empfehlen, FreeBASIC für die Entwicklung einer solchen Windowsanwendung zu verwenden. Das bringt nämlich verschiedene Vorteile in dieser Angelegenheit mit sich.
Mit FreeBASIC könntest du eine Anwendung erstellen, die das Geforderte umsetzt, ohne dich mit dem TSR-Ansatz und Assembler auseinandersetzen zu müssen. Das ginge in etwa wie folgt: Du schreibst ein FreeBASIC-Programm, das das gewünschte Auswahlmenü zeigt und ggf. mit INPUT o.ä. auf eine Eingabe des Nutzers wartet. Anschließend führst du die genannten Vorbereitungsschritte (Kopieren...) aus und startest das Spiel. Das Programmfenster des FreeBASIC-Programms versteckst du anschließend und überwachst in einer Endlosschleife systemweit die Tastatureingaben (vom Funktionsprinzip her ähnlich eines Keyloggers). Das funktioniert über WinAPI-Funktionen. (Mit QBasic hättest du da keine Chance!) Wird die genannte Tastenkombination eingegeben, verlässt dein FreeBASIC-Programm die Warteschleife und führt beliebige andere Operationen aus. Anschließend könnte wieder zum Menü zurückgekehrt werden.
Das Problem einer übermäßigen CPU-Auslastung wie bei alten DOS-Programmen, zu denen auch QB zählt, hast du mit FreeBASIC unter Windows nicht, weil FreeBASIC für Windows "gedacht" ist und entsprechend richtige Windows-Anwendungen erzeugt, die nicht in einer emulierten Umgebung ablaufen müssen.

Newbie01 hat Folgendes geschrieben:
[...] mir dieses kleine Programm schreiben könnte.

Fazit also: Du solltest dich mit der Programmierung in FreeBASIC auseinandersetzen (Genügend Anleitungen/Tutorials stehen zur Verfügung.) und versuchen, in etwa wie oben beschrieben die Aufgabe anzugehen. Dass dir hier jemand ein fertiges Programm kostenlos schreibt, halte ich für unwahrscheinlich. In einem solchen Programmierforum antworten dir hilfsbereite Communitymitglieder auf deine Programmierfragen, aber kostenlose Arbeitskräfte, die dich ganz nach Wunsch "full service" bedienen und aufbereitete Fertigprodukte liefern, sind das hier nicht. zwinkern

Viele Grüße!
Sebastian
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Newbie01



Anmeldungsdatum: 16.02.2010
Beiträge: 12

BeitragVerfasst am: 16.02.2010, 22:59    Titel: Antworten mit Zitat

Hallo Sebastian, das ist schonmal einen sehr guten Tipp ;o)

Ich habe nie erwartet dass jemand mir so etwas schreibt, nur ich habe schon soviel gesucht (auch was assembler angeht, mit den 21h interrupts etc) aber wusste nicht wo ich anfangen soll.

Ich werde Powerbasic herunterladen und nun es machen wie du es empfohlen hast mit den Augen rollen Zunge rausstrecken

glg
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 16.02.2010, 23:09    Titel: Antworten mit Zitat

Hallo!
Newbie01 hat Folgendes geschrieben:
Ich werde Powerbasic herunterladen und nun es machen wie du es empfohlen hast mit den Augen rollen Zunge rausstrecken

Warum PowerBASIC? Im Gegensatz zum völlig kostenfreien FreeBASIC (siehe auch offizielle FreeBASIC-Anbieterseite) musst du für PowerBASIC bezahlen (proprietäre Lizenz): Laut Herstellerseite ab 169 US$. Inwieweit dein Vorhaben mit PowerBASIC zu realisieren ist, kann ich auch nicht genau einschätzen, weil ich das selbst nicht verwende.

Viele Grüße!
Sebastian
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Newbie01



Anmeldungsdatum: 16.02.2010
Beiträge: 12

BeitragVerfasst am: 16.02.2010, 23:36    Titel: Antworten mit Zitat

Ich meinte natürlich FreeBasic lächeln)))))))))))))

Mann ich brauche dieses Programm dringend, es bringt mich ein wenig durcheinander^^

Was hälst du von diesem Link ?

http://support.microsoft.com/kb/59131/de

Wie würdest du entsprechend ALT-F4 in diesem Freebasic Programm schreiben ?

glg
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 16.02.2010, 23:45    Titel: Antworten mit Zitat

Das ist QBasic. QBasic stammt aus der DOS-Zeit, wo ein Programm eben im Einzelbetrieb lief und somit kannst du unter Windows (=Systemweit) mit solch einem Codefetzen irgendwas abfragen.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4702
Wohnort: ~/

BeitragVerfasst am: 16.02.2010, 23:50    Titel: Antworten mit Zitat

Alt+F4 ist CHR(255, 107)

Reicht ein systemweites Abfragen? Immerhin weiß man ja nicht, ob das Alt+F4 einem anderen Programm gilt.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Newbie01



Anmeldungsdatum: 16.02.2010
Beiträge: 12

BeitragVerfasst am: 17.02.2010, 00:17    Titel: Antworten mit Zitat

Ja ein systemweites abfragen würde reichen ;o)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Newbie01



Anmeldungsdatum: 16.02.2010
Beiträge: 12

BeitragVerfasst am: 17.02.2010, 01:29    Titel: Antworten mit Zitat

Noch eine Frage :

Funktionieren alle QB45 Programme in FreeBasic 1 zu 1 ?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4702
Wohnort: ~/

BeitragVerfasst am: 17.02.2010, 13:39    Titel: Antworten mit Zitat

Vielleicht hilft dir zur letzten Frage das hier weiter:
http://www.freebasic-portal.de/befehlsreferenz/fb-dialektformen-459.html
http://www.freebasic-portal.de/befehlsreferenz/nicht-unterstuetzte-schluesselwoerter-460.html
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Newbie01



Anmeldungsdatum: 16.02.2010
Beiträge: 12

BeitragVerfasst am: 18.02.2010, 05:12    Titel: Antworten mit Zitat

Danke für deine hilfe ;o))

Ich muss unbedingt noch was wissen : wie formuliert mann das aufrufen eines externen Programms ?

zb :

IF .... THEN <run this Program>

Finde nichts darüber traurig
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 18.02.2010, 10:38    Titel: Antworten mit Zitat

Mit SHELL (FB-Befehl) oder ShellExecute (Die DECLARE-Zeile kann man sich sparen, wenn man stattdessen #include "windows.bi" schreibt).
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4702
Wohnort: ~/

BeitragVerfasst am: 18.02.2010, 12:57    Titel: Antworten mit Zitat

Normalerweise wartet dieser Befehl (oder zumindest dann, wenn er richtig aufgerufen wird oder so) dann sowieso auf das Beenden des aufgerufenen Programms. Vielleicht kannst du dir dann ja das globale Alt+F4-Abfangen sparen.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
St_W



Anmeldungsdatum: 22.07.2007
Beiträge: 956
Wohnort: Austria

BeitragVerfasst am: 18.02.2010, 14:17    Titel: Antworten mit Zitat

Ich glaube, dass ich einmal so ein ähnliches Programm geschrieben habe und habe es dir in unveränderter Form hochgeladen:
http://wurzinger.bplaced.net/files/programmierung/qb/PLAY.BAS

Mein Programm diente als Spiele-Archiv und sorgte für die platzsparende Speicherung.
Die Spiele werden in ZIP-Archiven komprimiert gespeichert, vor dem Spielen entpackt und nach dem Spielen auf Wunsch des Benutzers aktualisiert (um z.B. neue Spielstände zu übernehmen).

Da ich damals jedoch nie daran gedacht hätte, dass jemand anderer mein Programm eventuell verwenden könnte, habe ich alles fix für mein damaliges System mit DOS 6.22 und Windows 3.1 programmiert.

Du musst also z.B. die ganzen fixen Pfadangaben ändern. Mein Programm erwartet folgende externen Ordner und Programme:
Das Programm selbst muss sich im Ordner "c:\win31\progs\games\" befinden, ebenso die ZIP-Dateien für die Spiele.
Mit dem Aufruf "PLAY /B" kann man die Spiele einstellen.
Externe Programme:
c:\command.com
c:\dos\choice.com
c:\dos\deltree.exe
c:\dos\pkzip250\pkzip.exe
c:\dos\pkzip250\pkunzip.exe

Aufgrund dieser vielen Anforderungen, die nur ein echtes DOS gut erfüllt (choice.com und deltree.exe sind z.B. unter Windows nicht mehr dabei) denke ich, dass du dir am Besten dein Programm selbst programmierst. Eventuell kannst du dir ja manche Anregungen aus meinem Quellcode holen.

MfG,
St_W
_________________
Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Newbie01



Anmeldungsdatum: 16.02.2010
Beiträge: 12

BeitragVerfasst am: 18.02.2010, 14:31    Titel: Antworten mit Zitat

Danke, das Befehl SHELL versucht tatsächlich das externe Programm zu starten, kommt aber eine Meldung das es eine .ini File fehlt...
Mit welcher Anweisung kann ich alle Dateien des Spielordners mit in der Ausführung des Programms einbeziehen ?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
St_W



Anmeldungsdatum: 22.07.2007
Beiträge: 956
Wohnort: Austria

BeitragVerfasst am: 18.02.2010, 14:39    Titel: Antworten mit Zitat

Möglicherweise musst du bevor du das Spiel startest in dessen Ordner wechseln. Dies funktioniert mit dem Befehl "CHDIR".

z.B.:
Code:
CHDIR "C:\Spiele\Worms 1 Plus"
SHELL "Worms.exe"

_________________
Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic. Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
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.

 Impressum :: Datenschutz