Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi CDLaufwerks-Schublade sperren (https://www.delphipraxis.net/29083-cdlaufwerks-schublade-sperren.html)

static_cast 3. Sep 2004 19:24

Re: CDLaufwerks-Schublade sperren
 
Seit wann leitet Plastik Strom? :gruebel: Oder Luckie hat soebend die Metalldiskette eingeführt :roll:

Dax 3. Sep 2004 19:26

Re: CDLaufwerks-Schublade sperren
 
Na ja, bei 10000 Volt leitet auch Plastik - es schmilzt, aber es leitet.

static_cast 3. Sep 2004 19:28

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!

Nothine 3. Sep 2004 20:38

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;

Ultimator 3. Sep 2004 21:10

Re: CDLaufwerks-Schublade sperren
 
Probiers doch mal mit der Bass.dll und der Bass_CD.dll von www.un4seen.com
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...

SirThornberry 4. Sep 2004 07:44

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:

Private Const IOCTL_STORAGE_MEDIA_REMOVAL As Long = &H2D4804
in der Hilfe hab ich diese Konstante (oder eine ähnlich benannte) gefunden. Allerdings wurde diese Konstante bei mir nicht gefunden. Deswegen hab ich einfach den Wert direkt verwendet. Hätte natürlich auch die Konstante declarieren können aber da ich diese nur in der einen Funktion benötige fand ichs hinnfällig

Luckie 4. Sep 2004 07:46

Re: CDLaufwerks-Schublade sperren
 
Nun ja. Ic finde das Benennen von Konstanten immer sinnvoll. Dann sieht man auf den ersten Blick, was da passiert.

SirThornberry 4. Sep 2004 07:51

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;

Wishmaster 14. Sep 2004 00:07

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 13:25 Uhr.
Seite 2 von 2     12   

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-2025 by Thomas Breitkreuz