|
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 |
ytwinky
Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 29.04.2006, 18:34 Titel: Wie umgehe ich Laufwerk A: und B: |
|
|
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 ) _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
|
raph ael
Anmeldungsdatum: 12.04.2006 Beiträge: 472
|
Verfasst am: 05.05.2006, 19:50 Titel: |
|
|
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 |
|
|
ytwinky
Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 05.05.2006, 20:03 Titel: |
|
|
raph ael hat Folgendes geschrieben: | Ich hoffe das hilft dir irgendwie... | ..nicht wirklich
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 |
|
|
|
|
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.
|
|