Laufwerk auswerfen

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Pure-r-Freak
Beiträge: 74
Registriert: 08.03.2005 13:40

Laufwerk auswerfen

Beitrag 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:
Benutzeravatar
Hroudtwolf
Beiträge: 1416
Registriert: 30.10.2004 23:33
Kontaktdaten:

Beitrag von Hroudtwolf »

Mit den CD-Audio Befehlen von PB gehts auch. Da du die Demo hast gehen ja die APIs nicht !
Benutzeravatar
Pure-r-Freak
Beiträge: 74
Registriert: 08.03.2005 13:40

Beitrag 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()
Benutzeravatar
Hroudtwolf
Beiträge: 1416
Registriert: 30.10.2004 23:33
Kontaktdaten:

Beitrag 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() 
Leo
Beiträge: 420
Registriert: 26.10.2004 18:26

Beitrag 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
Benutzeravatar
Hroudtwolf
Beiträge: 1416
Registriert: 30.10.2004 23:33
Kontaktdaten:

Beitrag von Hroudtwolf »

Das wird nur bei seiner Demo net gehen !
Leo
Beiträge: 420
Registriert: 26.10.2004 18:26

Beitrag 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:
Benutzeravatar
Hroudtwolf
Beiträge: 1416
Registriert: 30.10.2004 23:33
Kontaktdaten:

Beitrag von Hroudtwolf »

Ah ..Sorry.. zu schnell gelesen !
Benutzeravatar
Pure-r-Freak
Beiträge: 74
Registriert: 08.03.2005 13:40

Beitrag von Pure-r-Freak »

geht trotzdem nit,
constant not found #Generic_Read
Leo
Beiträge: 420
Registriert: 26.10.2004 18:26

Beitrag 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
Antworten