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:

Wie umgehe ich Laufwerk A: und B:

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 29.04.2006, 18:34    Titel: Wie umgehe ich Laufwerk A: und B: Antworten mit Zitat

Hi,
beim Spielen mit VMWare habe ich eine virtuelle W2Kpro-Maschine erstellt.
Einer der ersten Schritte war das Einrichten eines virtuellen Laufwerks:
Partitionieren, Formatieren und startbar machen --> kein Problem
(Die Anzeige auf 1024x768 schon eher, aber das habe ich mit VMWare-Tools gelöst)
Wie finde ich nun heraus, welche Laufwerke in der VM wirklich vorhanden sind?
Mein altes Pascal-Programm VolZ, das für eher kleine Laufwerke ausgelegt war,
versagt hier(unter XP sowieso - trotz 200Mhz-Patch).
Okay vorhandene Laufwerke ermitteln und die nötigen Größenangaben ausgeben ist
keine große Tat..
..Was aber ist mit Laufwerk A: (welches ich diskret ausgeblendet habe)?
Was mit Laufwerk B: (falls vorhanden)?
Unter Windows98SE habe ich mit Port-Befehlen einfach die BIOS-Konfiguration
ausgelesen, das mache ich NICHT unter XP..
Kennt jemand eine API-Funktion, die Angaben über Disketten-Laufwerke macht,
egal, ob eine Disk im Lw ist oder nicht?
Gruß
ytwinky

Ach so, um dieses Programm handelt es sich:
Code:
'Ä=Ž , Ö=™ , Ü=š ; ä=„ , ö=”, ü=? , ß=á ,§=õ , ©=¸
Option Escape
Option Explicit
Const Esc="\27"
Dim As String LwTyp(5), Lng(8)
Dim Drv2Spec(1) As ZString Ptr=>{@"Floppy", @"USB"}
Dim i, Typ, m$, ArgC
Deutsch:
Data "Unbekannt", "Fehlt", "Disk-Lw", "FestPlatte", "NetzLw", "CD/DVD"
Data "Jedes Lw anzeigen(=e)", "Vorhandene Lw anzeigen(=a)", "Was darf's denn sein(Esc=Abbruch)?"
Data "Lw", "Total[MB]", "Frei[MB]", "Typ"
Data "Negative GrӇen bedeuten nicht vorhandene Laufwerke.."
English:
Data "unknown", "missing", "Disk-Drive", "Hard-Disk", "Net-Drive", "CD/DVD"
Data "Show every drive(=e)", "Show available drives(=a)", "Enter your choice(Esc=Abort)?"
Data "Dr", "Total[MB]", "Free[MB]", "Type"
Data "Negative sizes specify not available drives.."

Declare Function GetDriveType Alias "GetDriveTypeA" (ByVal nDrive As STRING) As INTEGER
Declare Function GetDriveSpecs Lib "kernel32" Alias "GetDiskFreeSpaceA" (ByVal DriveName As String, SecsPerClstr As Long, BytesPerSec As Long, FreeClusters As Long, TotalClusters As Long) As Long

Function ShowDriveSpecs(DriveName As String, What As String="T") As Single
  Dim As Long SectorsPerCluster, BytesPerSector, FreeClusters, TotalClusters
  Dim Back As Single
  If Left(DriveName, 1)<"C" Then Return -1
  If GetDriveSpecs(DriveName, SectorsPerCluster, BytesPerSector, FreeClusters, TotalClusters) Then
     If UCase(Mid(What, 1, 1))<>"T" Then TotalClusters=FreeClusters
    Back=TotalClusters*SectorsPerCluster 'or else sizes may be negative ;-))
    Return Back*BytesPerSector/1024/1024
  Else
    Return -1
  End If
End Function

'Main
?"VolZ.Bas ¸2006 by ytwinky, MD"
m$=Ucase(Command(1))
If m$<>"" Then
  If m$<>"E" And m$<>"D" Then
    ?"Do you prefer english? Enter 'e'"
    ?"Soll die Ausgabe deutsch sein? Dann 'd'"
    ?"e | d ?";
    Do
      m$=Ucase$(Inkey$)
    Loop Until Instr("ED"+Esc, m$)>0
    ?m$
  End If
End If

If m$="E" Then Restore English
For i=0 to 5
  Read LwTyp(i)
Next
For i=1 to 8
  Read Lng(i)
Next
m$=Ucase(Command(2))
If m$="" Then
  ?Lng(1)
  ?Lng(2)
  ?Lng(3);
  Do
    m$=Ucase$(Inkey$)
  Loop Until Instr("EA"+Esc, m$)>0
  If m$<>Esc Then ?m$ Else End
End If
?Lng(4);" ";Lng(5);" ";Lng(6);" ";Lng(7)
For i=1 to 26
  Typ=GetDriveType(Chr(64+i)+":")
  If (Typ+(m$="A"))>=1 Then
    ?Chr(64+i)+":  ";
    ?Using "#####.#";ShowDriveSpecs(Chr(64+i)+":"),
    ?Using "######.### ";ShowDriveSpecs(Chr(64+i)+":", "F"),
    If Typ=2 Then
      ?*Drv2Spec(Abs(ShowDriveSpecs(Chr(64+i)+":")>3)) 'everything above 3MB is considered to be an USB-Drive/Stick
    Else
      ?LwTyp(Typ)
    End If
  End If
Next
?Lng(8)
Sleep
Das Programm 'kann' Englisch und Deutsch(falls Englisch auch hier mal Modesprache werden sollte vor lachen auf dem Boden rollen )
_________________
v1ctor hat Folgendes geschrieben:
Yeah, i like INPUT$(n) as much as PRINT USING..
..also ungefähr so, wie ich GOTO..
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
raph ael



Anmeldungsdatum: 12.04.2006
Beiträge: 472

BeitragVerfasst am: 05.05.2006, 19:50    Titel: Antworten mit Zitat

Ich kann zu 99,9 Periodisch % sagen, NEIN. Ich hab' einen Laptop, und zwei Laufwerke, die ich auswechseln kann, aber nur einen Slot. Das ist ein 3.5 Diskettenlaufwerk und ein CD-Laufwerk. Die kann ich nur bei ausge.. vergiss es... Wenn jetzt das CD-Laufwerk installiert ist, und ich das Diskettenlaufwerk anspreche, wartet das System 10 Sekunden. Da reagiert es auf nix. Dann erscheint eine Meldung, dass ich prüfen soll ob das Laufwerk bereit ist und eine Diskette eingelegt ist. Ich kann dann mit Wiederholen und Abbrechen antworten.

Weindows versucht zwar, das Diskettenlaufwerk anzusprechen, aber dann reagiert der PC eine Zeit lang nicht mehr. Beim umgekehrten Fall (wenn ich das CD Laufwerk versuche anzusprechen und das Disklaufwerk ist drinn erscheint gleich die Meldung.

Ich hoffe das hilft dir irgendwie...
_________________
Zitat:
1000 Yottabytes sind absurd. 640 Yottabytes sollten genug für jeden sein.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 05.05.2006, 20:03    Titel: Antworten mit Zitat

raph ael hat Folgendes geschrieben:
Ich hoffe das hilft dir irgendwie...
..nicht wirklich zwinkern
Ich danke dir für den Bericht, mußte aber mittlerweile einsehen, daß ich mich auf dem Holzweg befinde(gelinde gesagt).
Auf einem System ohne Windows kann ich natürlich keine API-Funktionen verwenden..
Also muß es denn wohl doch eine Batch-Lösung sein, wenns denn wirklich sein muß.
Ich glaube, dieses Projekt hat stark an Attraktivität und Wichtigkeit verloren..
Gruß
ytwinky
_________________
v1ctor hat Folgendes geschrieben:
Yeah, i like INPUT$(n) as much as PRINT USING..
..also ungefähr so, wie ich GOTO..
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 FreeBASIC. 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