![]() |
CDLaufwerks-Schublade sperren
Ich hab heute verzweifelt danach gesucht wie man verhindern kann das jemand das CD-Romlaufwerk öffnet (per Knopfdruck an der Hardware). Unter Dos hatte ich dazu ein Programm bei dem CD-Romlaufwerk dabei... Bei meiner Suche hab ich leider nix brauchbares gefunden. Zu guter letzt hab ich dann einen VB-Source gefunden und hab den versucht in delphi zu bringen. Für Leute die das gleiche Problem haben hier der Source (geht nicht unter Win9x)
Delphi-Quellcode:
function LockMedia(ADriveLetter: Char; ALock: Boolean): Boolean;
var LWStatus: Hwnd; LTemp: Cardinal; LPMR32: Boolean;//TPreventMediaRemoval; begin LwStatus := CreateFile(PChar('\\.\' + ADriveLetter + ':'),GENERIC_READ Or GENERIC_WRITE, 0, nil, OPEN_EXISTING, 0, 0); LPMR32 := ALock; If LwStatus <> INVALID_HANDLE_VALUE Then begin DeviceIoControl(LwStatus, $2D4804, @LPMR32, sizeof(LPMR32), nil, 0, LTemp, nil); CloseHandle(LwStatus); end; end; |
Re: CDLaufwerks-Schublade sperren
Was bedeutet: $2D4804?
|
Re: CDLaufwerks-Schublade sperren
Ist wahrscheinlich ein nicht definiertes Flag.
|
Re: CDLaufwerks-Schublade sperren
Ich geh stark davon aus, dass es eine Konstante ist und die hat bestimmt auch einen Namen. Und den wüßte ich gerne.
|
Re: CDLaufwerks-Schublade sperren
Vielleicht sagt er's uns ja. :stupid:
|
Re: CDLaufwerks-Schublade sperren
Zitat:
Gruß Daniel |
Re: CDLaufwerks-Schublade sperren
Was hat der eigentlich mit der CD-SChublade zu tun?
|
Re: CDLaufwerks-Schublade sperren
Die fährt dann nimma mehr raus!
|
Re: CDLaufwerks-Schublade sperren
Bei einer Festplatte wird der Zugriff gesperrt, bei einem CD-ROM Laufwerk das Öffnen der Schublade verhindert und bei einer Diskette bekommst du einen Stromschlag, wenn du sie rausziehst. :mrgreen:
|
Re: CDLaufwerks-Schublade sperren
Schade, habe kein Diskettenlaufwerk mehr, ansonsten hätte ich das in der Schule mal eingesetzt. :-D
|
Re: CDLaufwerks-Schublade sperren
Seit wann leitet Plastik Strom? :gruebel: Oder Luckie hat soebend die Metalldiskette eingeführt :roll:
|
Re: CDLaufwerks-Schublade sperren
Na ja, bei 10000 Volt leitet auch Plastik - es schmilzt, aber es leitet.
|
Re: CDLaufwerks-Schublade sperren
Was für PC's habt ihr denn in der Schule? :zwinker: Aber lass wir das wird ja sonst noch mehr OT!
|
Re: CDLaufwerks-Schublade sperren
wenn ich ma so fragen dürfte, warum ist deine funktion eigentlich ne funktion wenn du keinen wert zurückgibst? des ganze müsste (wenn ich mich nich irre :stupid:) so aussehen:
Delphi-Quellcode:
function LockMedia(ADriveLetter: Char; ALock: Boolean): Boolean;
var LWStatus: HWND; LTemp: Cardinal; LPMR32: Boolean; const FSCTL_LOCK_VOLUME = $2D4804; begin LwStatus := CreateFile(PChar('\\.\'+ADriveLetter+':'),GENERIC_READ or GENERIC_WRITE,0,nil,OPEN_EXISTING,0,0); LPMR32 := ALock; if LwStatus <> INVALID_HANDLE_VALUE then begin Result := DeviceIoControl(LwStatus,FSCTL_LOCK_VOLUME,@LPMR32,SizeOf(LPMR32),nil,0,LTemp,nil); CloseHandle(LwStatus); end else Result := False; end; |
Re: CDLaufwerks-Schublade sperren
Probiers doch mal mit der Bass.dll und der Bass_CD.dll von
![]() und dann BASS_CD_Door(drive,action); drive:integer; 0=CD-Laufwerk 1, 1= CD-Laufwerk 2 usw... action: eins der Folgenden: BASS_CD_DOOR_CLOSE; BASS_CD_DOOR_OPEN; BASS_CD_DOOR_LOCK; BASS_CD_DOOR_UNLOCK. Ist eigentlich selbsterklärend; du musst halt die basscd.dll mit deinem Programm weitergeben... |
Re: CDLaufwerks-Schublade sperren
ups, hab ich wohl vergessen beim umbauen in eine funktion ein result zu setzen.
@Ultimator: Wenn ich einfach nur das Laufwerk sperren will find ichs bissl overkill eine DLL mitliefern zu müssen. $2D4804 ist eine Konstante die im VB Code wie folgt definiert war Zitat:
|
Re: CDLaufwerks-Schublade sperren
Nun ja. Ic finde das Benennen von Konstanten immer sinnvoll. Dann sieht man auf den ersten Blick, was da passiert.
|
Re: CDLaufwerks-Schublade sperren
Stimmt auch wieder... habs jetzt in meinem Source die vorschläge einfließen lassen. Sieht jetzt also so aus (wurde glaub ich sogar schon von jemandem so gepostet nur mit anderem Konstantennamen)
Delphi-Quellcode:
function LockMedia(ADriveLetter: Char; ALock: Boolean): Boolean;
var LWStatus: Hwnd; LTemp: Cardinal; LPMR32: Boolean; Const IOCTL_STORAGE_MEDIA_REMOVAL = $2D4804; begin LwStatus := CreateFile(PChar('\\.\' + ADriveLetter + ':'),GENERIC_READ Or GENERIC_WRITE, 0, nil, OPEN_EXISTING, 0, 0); LPMR32 := ALock; If LwStatus <> INVALID_HANDLE_VALUE Then begin result := DeviceIoControl(LwStatus, IOCTL_STORAGE_MEDIA_REMOVAL, @LPMR32, sizeof(LPMR32), nil, 0, LTemp, nil); CloseHandle(LwStatus); end else result := False; end; |
Re: CDLaufwerks-Schublade sperren
Hi
CD-Rom Öffnen und Schließen! funzt in WinXP
Code:
const
IOCTL_STORAGE_EJECT_MEDIA = 2967560; IOCTL_STORAGE_LOAD_MEDIA = $2D480C; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:05 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