![]() |
Re: CD Laufwerk öffen - Wo ist das Problem?
Und zum dritten: :stupid:
Der funktionierende Code:
Delphi-Quellcode:
Es scheint an der vorletzten Konstante in CreateFile gelegen zu haben. Die war bei dir 0. Übrigens solltest du immer dein Handle auf Gültigkeit prüfen. Könnte man jetzt auch in eine hübsche Funktion verpacken.
const
IOCTL_STORAGE_EJECT_MEDIA = $2D4808; procedure TForm1.Button1Click(Sender: TObject); var Handle: THandle; n : DWord; begin Handle := CreateFile('\\.\I:',GENERIC_READ or GENERIC_WRITE,FILE_SHARE_READ or FILE_SHARE_WRITE, NIL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL or FILE_FLAG_NO_BUFFERING, 0); If Handle <> INVALID_HANDLE_VALUE then begin n := 0; DeviceIOControl(Handle, IOCTL_STORAGE_EJECT_MEDIA, NIL, 0, NIL, 0, n, NIL); CloseHandle(Handle); end; end; |
Re: CD Laufwerk öffen - Wo ist das Problem?
hi,
ahh Danke. Aber ich muss dich korrigieren. Der Fehler liegt am letzten Paramter von DeviceIOControl. Wenn man tt einfach nurch ne 0 ersetzt funzt das 1a. |
Re: CD Laufwerk öffen - Wo ist das Problem?
bei mir geht keines eurer codes
0 fehler, aber auch 0 offene laufwerke |
Re: CD Laufwerk öffen - Wo ist das Problem?
Hi:
hier nochmal de Code, der mit sicherheit funzt:
Delphi-Quellcode:
var
handle: THandle; test: PSecurityAttributes; back: Boolean; return: Cardinal; tt: POverlapped; begin handle := CreateFile('\\.\D:',GENERIC_READ,FILE_SHARE_READ or FILE_SHARE_WRITE,NIL,OPEN_EXISTING,0,0); back := DeviceIOControl(handle,IOCTL_STORAGE_EJECT_MEDIA,NIL,0,NIL,0,return,0); end; |
Re: CD Laufwerk öffen - Wo ist das Problem?
Du solltest das von CreateFile gelieferte Handle im Erfolgsfall aber wieder freigeben, so wie Daniel es in seinem Code gemacht hat.
Gruß Hawkeye |
Re: CD Laufwerk öffen - Wo ist das Problem?
hi, ok also hier komplett als Funktion:
Delphi-Quellcode:
function opendrive(driveletter: String): Boolean;
var hr:THandle; buffer: Cardinal; ret:Boolean; begin hr := CreateFile(PChar('\\.\'+driveletter+':'),GENERIC_READ,FILE_SHARE_READ or FILE_SHARE_WRITE,NIL,OPEN_EXISTING,0,0); if hr <> INVALID_HANDLE_VALUE then begin ret := DeviceIOControl(hr,IOCTL_STORAGE_EJECT_MEDIA,NIL,0,NIL,0,buffer,NIL); CloseHandle(hr); end; end; |
Re: CD Laufwerk öffen - Wo ist das Problem?
Zitat:
//EDIT: @skunker: Stimmt, der is' bei mir aber auch NIL... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:15 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz