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:

Auslesen des Aktuellen Bildschirms

 
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
Xolios
aka Ray


Anmeldungsdatum: 07.12.2004
Beiträge: 589
Wohnort: Wildeshausen

BeitragVerfasst am: 26.01.2005, 10:25    Titel: Auslesen des Aktuellen Bildschirms Antworten mit Zitat

Moin!

Also mal ein kompliziert zu stellende Frage.
Ich möchte z.B.
ein zeichen auslesen...

CLS
?"Hallo"
?"Du da"

Es wird ja angezeigt:
Hallo
Du da

Jetzt möchte ich z.B. das H auslesen oder das a
und in eine Variable speichern.
Boah is das schwer zu erklären...

Oder als zweite Beispiel:

cls
shell "cd"

zeigt den aktuellen Pfad an
und wie kann ich den Pfad auslesen??

Hoffe ich hab nicht so wirr geschrieben.

Danke im Voraus!y
Gruß
Ray
_________________
www.ray-earth.de
Anm.: Neue ICQ
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen Yahoo Messenger MSN Messenger
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 26.01.2005, 12:55    Titel: Antworten mit Zitat

schau ma in der QB-Onlinehilfe, da gabs ne Screen-funktion (nicht befehl!) ich glaub die hatte damit was zu tun.
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
SpionAtom



Anmeldungsdatum: 10.01.2005
Beiträge: 395

BeitragVerfasst am: 26.01.2005, 14:05    Titel: Antworten mit Zitat

Also das mit der SCREEN-Funktion stimmt. Damit habe ich mal einen (leicht zu umgehenden) Kopierschutz gemacht. (Seriennummer eingelesen und so ein Schwachsinn..)

Wenn im Bild das zu sehen ist.
++++++++++++++++++++++++
+Dieses ist die erste Zeile +
+ +

dann kannst du mit SCREEN(zeile, spalte) den Ascii-Wert an der jeweiligen Stelle im Schirm ermitteln.

wert% = SCREEN(1, 4)
würde in unserem Beispiel: 115 ergeben, da dies der ASCII-Wert für ein kleines 's' ist. Alles klar. In der QuickBasic Hilfe kannst du auch noch nachlesen, was man sonst noch damit machen kann (Farberkennung!).
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Paul
aka ICC, HV-Freak


Anmeldungsdatum: 11.09.2004
Beiträge: 588
Wohnort: Uelzen

BeitragVerfasst am: 26.01.2005, 14:16    Titel: Antworten mit Zitat

Moin !
Du brauchst es dir garnicht so schwer machen, den Bildschirm nach SHELL "cd" auszulesen.
Schreib einfach
Code:

SHELL cd > C:\pfad.txt


Das > bewirkt, dass DOS die Bildschirmausgabe in die angegebene Datei umleitet. Kannste dann einfach mit OPEN usw. auslesen. grinsen
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
code



Anmeldungsdatum: 19.01.2005
Beiträge: 154

BeitragVerfasst am: 26.01.2005, 14:18    Titel: Antworten mit Zitat

um den pfad mit cd auszulesen einfach die dateiumleitung mit dos benutzen:

Code:
 SHELL cd>test.txt


nach dem ">" komm der dateiname, in den der bildschirm inhalt geschrieben wird. danach musst du die datei einfach öffnen und kannst den pfad in einer variablen speichern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Dusky_Joe



Anmeldungsdatum: 07.01.2005
Beiträge: 1007
Wohnort: Regensburg/Oberpfalz

BeitragVerfasst am: 26.01.2005, 18:57    Titel: Antworten mit Zitat

Genau das hab ich mir beim letzten QB-Wettbewerb zunutze gemacht *g*
Da gings darum, ein Prog mit höchstens 5 KB zu schreiben.
Ich hab eine Ordnerwahlroutine gemacht.
Du kannst sie dir auf www.qbasic.de/wettbewerb bzw. http://ssteiner.ss.funpic.de/qbwettbewerb/downloads.html runterladen.
Weil ich ziemlich nah an die 5KB rangekommen bin, sind leider keine Kommentare drin, aber ich denke, es ist einigermaßen verständlich. Und spätestens, wenn du dir zusätzlich die Readme anschaust, sollten dir die Codes klar werden.
Vllt sollte ich das zum Tutorial ausarbeiten?

Zur erklärung:
Die Zeile "SHELL DIR >FILE.TXT"
leitet die Ausgabe von DIR in FILE.TXT um, anstatt es auf dem Bildschirm auszudrucken.
Du bekommst also eine Datei, die so aussieht:
Code:

 Volume in Laufwerk D: hat keine Bezeichnung.
 Volumeseriennummer: 4C64-C55F

 Verzeichnis von D:\Dokumente und Einstellungen\Hartinger

08.12.2004  19:15    <DIR>          .
08.12.2004  19:15    <DIR>          ..
07.07.2004  17:12    <DIR>          .jpi_cache
16.11.2004  16:36             2.609 .plugin141_02.trace
29.07.2002  23:14         1.686.944 anno1602_windows2000_xp.exe
03.01.2003  15:33    <DIR>          Application Data
25.01.2005  20:18    <DIR>          Desktop
10.12.2004  16:18    <DIR>          Eigene Dateien
25.01.2005  20:00    <DIR>          Favoriten
06.12.2004  19:34    <DIR>          Startmen?
30.07.2002  20:35    <DIR>          WINDOWS
               2 Datei(en)      1.689.553 Bytes
               9 Verzeichnis(se),    843.440.128 Bytes frei

Das ist zwar schon einigermaßen verwertbar, besser aber, du verwendest:

SHELL "DIR /B"

Das lässt alle unnötigen Angaben weg.
In der Datei steht dann z.B. nur:

QBX.EXE
BC.EXE
TEST.BAS
QBX.QLB
QBX.LIB


Vergiss aber nicht, die Datei dann wieder zu löschen, wenn du sie nicht mehr brauchst! Auch sollte der Pfad der Datei immer gleich bleiben, z.B. C:\




Zur SCREEN-Funktion:
zeichen$ = CHR$(SCREEN(zeile, spalte, 0))
farbe = SCREEN(zeile, spalte, 1)

Ich muss aber sagen, dass ich die Funktion noch nie benutzt habe, weil man meistens weiß, was auf dem bildschirm ausgegeben wird *g*

Wenn du aber immer noch ganze Zeilen vom Bildschirm einlesen willst:

Code:

rows = 50
cols = 80
'Bildschirmgröße.
'Kann variieren, je nach eingestelltem SCREEN, WIDTH u.Ä.
DIM Bildschirm (1 TO rows) AS STRING * cols

FOR zeile = 1 TO rows
 FOR spalte = 1 TO cols
  MID$(Bildschirm, spalte, 1) = CHR$(SCREEN(zeile, spalte, 0))
  NEXT
NEXT



Sinnvoll, wenn man z.B. einen Screenshot von SCREEN 0 machen möchte, aber wie gesagt, ich war noch nie in der "Verlegenheit" *g*

Ich hoffe, das alles hilft dir!
_________________
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
Benutzer-Profile anzeigen Private Nachricht senden
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 26.01.2005, 21:57    Titel: Antworten mit Zitat

Das Thema Bildschirminhalt auslesen wurde bereits diskutiert. Zum Thema Pfad auslesen zwei Varianten:
1.) mit SHELL "dir":

http://beilagen.dreael.ch/QB/AKT_PFAD.BAS

2.) direkt die dafür zuständigen Betriebssystemroutinen aufrufen, einmal in der klassischen MS-DOS 6.22-Form und einmal für heutige lange Dateinamen:

http://beilagen.dreael.ch/QB/AKTPFAD2.BAS

Bildschirmausgabe hat Folgendes geschrieben:
E:\Dokumente und Einstellungen\andreas>qb /l qb c:aktpfad2
Pfad kurz: E:\DOKUME~1\ANDREAS
Pfad lang: E:\Dokumente und Einstellungen\andreas

E:\DOKUME~1\andreas>_

_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
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
Seite 1 von 1

 
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