Seite 1 von 3

Laufwerk auswerfen

Verfasst: 24.03.2005 19:43
von Pure-r-Freak
kennt jemand eine andere lösung um ein laufwerk zu öffnen und zu schließen, als das aus den code archiv
(habe leider die PB demo)
:bluescreen:

Verfasst: 24.03.2005 19:50
von Hroudtwolf
Mit den CD-Audio Befehlen von PB gehts auch. Da du die Demo hast gehen ja die APIs nicht !

Verfasst: 24.03.2005 20:15
von Pure-r-Freak
kannst du mir bitte helfen ich bekomm das nich hin
hab das aus der cdaudio so verstanden;

Code: Alles auswählen


OpenConsole()

If InitCDAudio() = 0
  MessageRequester("Error", "kein laufwerk gefunden", 0)
  End
EndIf

eject$=Input()
If eject$="e"
EjectCDAudio(1)
EndIf 

input()

Verfasst: 24.03.2005 20:19
von Hroudtwolf

Code: Alles auswählen

OpenConsole()

If InitCDAudio() = 0
  MessageRequester("Error", "kein laufwerk gefunden", 0)
  End
EndIf

eject$=Input()
If eject$="open"
UseCDAudio(0)
EjectCDAudio(1)
EndIf
If eject$="close"
UseCDAudio(0)
EjectCDAudio(0)
EndIf
input() 

Verfasst: 24.03.2005 20:22
von Leo
Probier das hier mal:

Code: Alles auswählen

#IOCTL_STORAGE_EJECT_MEDIA  = $2D4808 
#IOCTL_STORAGE_LOAD_MEDIA   = $2D480C 
  
If OpenLibrary(0,"Kernel32.dll")
    LW.s = "F:"
    ;Functions
    *CreateFile = IsFunction(0,"CreateFileA")
    *DeviceIoControl = IsFunction(0,"DeviceIoControl")
    *CloseHandle = IsFunction(0,"CloseHandle")
    ;Eject
    hLwStatus = CallFunctionFast(*CreateFile,"\\.\"+LW,#GENERIC_READ|#GENERIC_WRITE, 0, 0, #OPEN_EXISTING, 0, 0)
    If hLwStatus 
        CallFunctionFast(*DeviceIoControl,hLwStatus,#IOCTL_STORAGE_EJECT_MEDIA,0,0,0,0,@Ret,0)
        CallFunctionFast(*CloseHandle,hLwStatus)
    EndIf
    ;Load
    hLwStatus = CallFunctionFast(*CreateFile,"\\.\"+LW,#GENERIC_READ|#GENERIC_WRITE, 0, 0, #OPEN_EXISTING, 0, 0) 
    If hLwStatus 
        CallFunctionFast(*DeviceIoControl,hLwStatus,#IOCTL_STORAGE_LOAD_MEDIA,0,0,0,0,@Ret,0)
        CallFunctionFast(*CloseHandle,hLwStatus)
    EndIf
    CloseLibrary(0)
EndIf

Verfasst: 24.03.2005 20:25
von Hroudtwolf
Das wird nur bei seiner Demo net gehen !

Verfasst: 24.03.2005 20:27
von Leo
Hroudtwolf hat geschrieben:Das wird nur bei seiner Demo net gehen !
Doch ;)
Ich hab mir extra die Mühe gemacht und API Aufrufe durch Library
Befehle ersetzt.. :allright:

Verfasst: 24.03.2005 20:29
von Hroudtwolf
Ah ..Sorry.. zu schnell gelesen !

Verfasst: 24.03.2005 20:29
von Pure-r-Freak
geht trotzdem nit,
constant not found #Generic_Read

Verfasst: 24.03.2005 20:33
von Leo
Probier das hier mal:

Code: Alles auswählen

#IOCTL_STORAGE_EJECT_MEDIA  = $2D4808 
#IOCTL_STORAGE_LOAD_MEDIA   = $2D480C 
#GENERIC_READ = $80000000
#GENERIC_WRITE = $40000000
#OPEN_EXISTING = 3
  
If OpenLibrary(0,"Kernel32.dll")
    LW.s = "F:"
    ;Functions
    *CreateFile = IsFunction(0,"CreateFileA")
    *DeviceIoControl = IsFunction(0,"DeviceIoControl")
    *CloseHandle = IsFunction(0,"CloseHandle")
    ;Eject
    hLwStatus = CallFunctionFast(*CreateFile,"\\.\"+LW,#GENERIC_READ|#GENERIC_WRITE, 0, 0, #OPEN_EXISTING, 0, 0)
    If hLwStatus 
        CallFunctionFast(*DeviceIoControl,hLwStatus,#IOCTL_STORAGE_EJECT_MEDIA,0,0,0,0,@Ret,0)
        CallFunctionFast(*CloseHandle,hLwStatus)
    EndIf
    ;Load
    hLwStatus = CallFunctionFast(*CreateFile,"\\.\"+LW,#GENERIC_READ|#GENERIC_WRITE, 0, 0, #OPEN_EXISTING, 0, 0) 
    If hLwStatus 
        CallFunctionFast(*DeviceIoControl,hLwStatus,#IOCTL_STORAGE_LOAD_MEDIA,0,0,0,0,@Ret,0)
        CallFunctionFast(*CloseHandle,hLwStatus)
    EndIf
    CloseLibrary(0)
EndIf