[gelöst] CD-/DVD-LW unter W98 öffnen
[gelöst] CD-/DVD-LW unter W98 öffnen
moin, moin...
Gibts eine andere Möglichkeit als CDAudio, um unter Win98 das LW zu öffnen ?
Ich hab die Codes aus http://www.purebasic.fr/german/viewtopi ... ct&start=0
getestet, aber entweder laufen sie nicht unter W98 oder (CDAudio) brauchen >30 Sek zum Öffnen.
Da ich >300 Medien erfassen will, bräuchte ich was, was schneller öffnet und es sollte auf allen Windows-Versionen laufen.
tia...
scholly
Gibts eine andere Möglichkeit als CDAudio, um unter Win98 das LW zu öffnen ?
Ich hab die Codes aus http://www.purebasic.fr/german/viewtopi ... ct&start=0
getestet, aber entweder laufen sie nicht unter W98 oder (CDAudio) brauchen >30 Sek zum Öffnen.
Da ich >300 Medien erfassen will, bräuchte ich was, was schneller öffnet und es sollte auf allen Windows-Versionen laufen.
tia...
scholly
Zuletzt geändert von scholly am 21.04.2008 23:54, insgesamt 2-mal geändert.
Ich bin blutiger PB-Anfänger.
seit 17.12.08: PB 4.3 unter XP Home(SP3)
seit 17.12.08: PB 4.3 unter XP Home(SP3)
Vielleicht gehts hiermit schneller.
Hatte ich irgend wann mal in Profan geschieben.
FF
Code: Alles auswählen
Procedure OpenCD()
buffer$=Space(128)
mciSendString_("open cdaudio alias cd",buffer$,128,0)
mciSendString_("SET CD DOOR OPEN",0,0,0)
EndProcedure
Procedure CloseCD()
buffer$=Space(128)
mciSendString_("open cdaudio alias cd",buffer$,128,0)
mciSendString_("SET CD DOOR CLOSED",0,0,0)
EndProcedure
FF

Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Danke, aber das ist genauso lahm.
Ich hab erst gedacht, daß es am System/LW liegt, aber irgendwoher hab ich eine kleine eject.exe, die braucht nich so lang.
Kann es sein, daß das daran liegt, daß dort der LW-Buchstabe direkt angegeben werden kann und nicht erst das LW gesucht werden muß ?
Source suchen gehend...
scholly
Ich hab erst gedacht, daß es am System/LW liegt, aber irgendwoher hab ich eine kleine eject.exe, die braucht nich so lang.
Kann es sein, daß das daran liegt, daß dort der LW-Buchstabe direkt angegeben werden kann und nicht erst das LW gesucht werden muß ?
Source suchen gehend...
scholly
Ich bin blutiger PB-Anfänger.
seit 17.12.08: PB 4.3 unter XP Home(SP3)
seit 17.12.08: PB 4.3 unter XP Home(SP3)
Kann ich dir nicht sagen. Hatte ich damals unter win95 am laufen und da hatte es nicht so lange gedauert.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Damit braucht das LW mit fast 30 Sekunden fast 5x solange wie ein kompilierter PowerBasic-Code, siehe http://www.purebasic.fr/german/viewtopic.php?t=7899.AND51 hat geschrieben:Warum geht denn InitCDAudio() nicht?
Und bei >300 Medien macht das ganz schön Zeit und nervt einfach nur...
Ich bin blutiger PB-Anfänger.
seit 17.12.08: PB 4.3 unter XP Home(SP3)
seit 17.12.08: PB 4.3 unter XP Home(SP3)
@scholly
jetze mich mal ran und übersetze das PowerBasic Programm.
etwas geduld bitte.
FF
jetze mich mal ran und übersetze das PowerBasic Programm.
etwas geduld bitte.
FF

Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Teste das mal:
Code: Alles auswählen
;------------------------------------------------------------------------------
#VWIN32_DIOC_DOS_IOCTL = 1 ; DOS IOCTL commands
#VWIN32_DIOC_DOS_INT25 = 2 ; absolute disk Read
#VWIN32_DIOC_DOS_INT26 = 3 ; absolute disk write
#VWIN32_DIOC_DOS_INT13 = 4 ; INT 13
#VWIN32_DIOC_DOS_DRIVEINFO = 6 ; Win95B Or later
;#IOCTL_STORAGE_BASE = %FILE_DEVICE_MASS_STORAGE
#IOCTL_STORAGE_GET_MEDIA_TYPES = $002D0C00
#IOCTL_STORAGE_GET_MEDIA_TYPES_EX = $002D0C04
#IOCTL_STORAGE_CHECK_VERIFY = $002D4800
#IOCTL_STORAGE_MEDIA_REMOVAL = $002D4801
#IOCTL_STORAGE_EJECT_MEDIA = $002D4808
#IOCTL_STORAGE_LOAD_MEDIA = $002D480C
#IOCTL_STORAGE_RESERVE = $002D4810
#IOCTL_STORAGE_RELEASE = $002D4814
#IOCTL_STORAGE_FIND_NEW_DEVICES = $002D4818
#IOCTL_STORAGE_RESET_BUS = $002D5000
#IOCTL_STORAGE_RESET_DEVICE = $002D5004
Structure DIOC_REGISTERS
regEBX.l
regEDX.l
regECX.l
regEAX.l
regEDI.l
regESI.l
regFlags.l
EndStructure
;------------------------------------------------------------------------------
Procedure.l LoadMedia(drive.s)
Protected hDisk.l
Protected fResult.l
Protected cb.l
Protected Regs.DIOC_REGISTERS
Protected bDisk.l
Protected *Pointer
*Pointer = 0
OS = OSVersion()
If OS = #PB_OS_Windows_95 Or OS = #PB_OS_Windows_98 Or OS = #PB_OS_Windows_ME
bDisk = (Asc(UCase(drive)) - 65) + 1
hDisk = CreateFile_("\\.\vwin32", 0, 0, *n1, 0, #FILE_FLAG_DELETE_ON_CLOSE, 0)
If hDisk = #INVALID_HANDLE_VALUE
Debug "WIN95 #INVALID_HANDLE_VALUE"
ProcedureReturn 0
EndIf
Regs\regEAX = $440D ;eject media
Regs\regEBX = bDisk
Regs\regECX = $0849
fResult = DeviceIoControl_(hDisk, #VWIN32_DIOC_DOS_IOCTL, Regs, SizeOf(DIOC_REGISTERS), Regs, SizeOf(DIOC_REGISTERS), @cb, 0)
If (regs\regFlags And 1) = 1
fResult = 0
EndIf
Else
hDisk = CreateFile_("\\.\"+drive, #GENERIC_READ, 0, *n1, #OPEN_EXISTING, 0, @handle)
If hDisk = #INVALID_HANDLE_VALUE
Debug "WINNT #INVALID_HANDLE_VALUE"
ProcedureReturn 0
EndIf
fResult = DeviceIoControl_(hDisk, #IOCTL_STORAGE_LOAD_MEDIA, 0, 0, 0, 0, @cb, 0)
EndIf
CloseHandle_(hDisk)
ProcedureReturn fResult
EndProcedure
;------------------------------------------------------------------------------
Procedure.l EjectMedia(drive.s)
Protected hDisk.l
Protected fResult.l
Protected cb.l
Protected Regs.DIOC_REGISTERS
Protected bDisk.l
*Pointer = 0
OS = OSVersion()
If OS = #PB_OS_Windows_95 Or OS = #PB_OS_Windows_98 Or OS = #PB_OS_Windows_ME
bDisk = (Asc(UCase(drive)) - 65) + 1
hDisk = CreateFile_("\\.\vwin32", 0, 0, *n1, 0, #FILE_FLAG_DELETE_ON_CLOSE, 0)
If hDisk = #INVALID_HANDLE_VALUE
Debug "WIN95 #INVALID_HANDLE_VALUE"
ProcedureReturn 0
EndIf
Regs\regEAX = $440D ;eject media
Regs\regEBX = bDisk
Regs\regECX = $0849
fResult = DeviceIoControl_(hDisk, #VWIN32_DIOC_DOS_IOCTL, Regs, SizeOf(DIOC_REGISTERS), Regs, SizeOf(DIOC_REGISTERS), @cb, 0)
If (regs\regFlags And 1) = 1
fResult = 0
EndIf
Else
hDisk = CreateFile_("\\.\"+drive, #GENERIC_READ, 0, *n1, #OPEN_EXISTING, 0, @handle)
If hDisk = #INVALID_HANDLE_VALUE
Debug "WINNT #INVALID_HANDLE_VALUE"
ProcedureReturn 0
EndIf
fResult = DeviceIoControl_(hDisk, #IOCTL_STORAGE_EJECT_MEDIA, 0, 0, 0, 0, @cb, 0)
EndIf
CloseHandle_(hDisk)
ProcedureReturn fResult
EndProcedure
Debug EjectMedia("H:")
Delay(2000)
Debug LoadMedia("H:")
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
SUPER!!!
Herzlichen Dank, auch wenn die Antwort was gedauert hat; heute wars trocken und da waren im Garten die Erdbeerbeete dran und dann bin ich versehentlich eingepennt
Unter W98 genauso fix wie das PowerBasic-Compilat.
Das sollte ins Code-Archiv übernommen werden
Wandert bei mir sofort in die Proc-Sammlung.
happy...
scholly

Herzlichen Dank, auch wenn die Antwort was gedauert hat; heute wars trocken und da waren im Garten die Erdbeerbeete dran und dann bin ich versehentlich eingepennt

Unter W98 genauso fix wie das PowerBasic-Compilat.
Das sollte ins Code-Archiv übernommen werden

Wandert bei mir sofort in die Proc-Sammlung.
happy...
scholly
Ich bin blutiger PB-Anfänger.
seit 17.12.08: PB 4.3 unter XP Home(SP3)
seit 17.12.08: PB 4.3 unter XP Home(SP3)