CD-Rom Laufwerk per Code öffnen
-
Hallo!
Ihr erinnert euch bestimmt noch an dieses Dosenhalter-Programm von vor einigen Jahren?
Sowas würde ich mir gerne selber machen, da der Hardwareknopf meines Laufwerks arg klemmt.Wonach muss man da gucken?
-
Eine möglichkeit wäre
#include <windows.h> //#pragma comment(lib,"winmm.lib") //für MSV C++ BOOL DoOpenCdRom(void) { char chrRc[256]; char *ptrChrRc = &chrRc[0]; return mciSendString("Set CDAudio Door Open\0",ptrChrRc,256,NULL); } BOOL DoCloseCdRom(void) { char chrRc[256]; char *ptrChrRc = &chrRc[0]; return mciSendString("Set CDAudio Door Closed\0",ptrChrRc,256,NULL); } int main() { DoOpenCdRom(); Sleep(5000); DoCloseCdRom(); return 0; }
Soweit ich dies aber noch in erinnerung habe gibt es auch eine Lösung hierfür mittels DeviceIoControl
-
Hier die zweite Lösung
http://www.coding-help.de/sonstiges.html#CDROM_ermitteln
-
Das geht mit mciSendCommand weiterhin:
http://www.codeguru.com/Cpp/W-P/system/cd-rom/article.php/c5775Aber auch so:
bool diskDoor(char drive, bool eject) { // Open or close the CD tray. // drive == 'e' // eject == true: Eject it. eject == false: Close the door char Drive[MAX_PATH]; HANDLE hDrive = INVALID_HANDLE_VALUE; DWORD dwErr; BOOL bRetVal = TRUE; DWORD dwDummy; sprintf(Drive,"\\\\.\\%c:", cdUnit); // Try this first. hDrive = CreateFile(Drive, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if(hDrive == INVALID_HANDLE_VALUE) { SetLastError(NO_ERROR); hDrive = CreateFile(Drive, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); } dwErr = GetLastError(); if(hDrive != INVALID_HANDLE_VALUE && dwErr == NO_ERROR) { // The drive is Open OK if(eject) { // Eject it. bRetVal = DeviceIoControl(hDrive, IOCTL_STORAGE_EJECT_MEDIA, NULL, 0, NULL, 0, &dwDummy, NULL); } else { // retract it bRetVal = DeviceIoControl(hDrive, IOCTL_STORAGE_LOAD_MEDIA, NULL, 0, NULL, 0, &dwDummy, NULL); } if(bRetVal == FALSE) { // Couldn't do it, error // Do error handling bRetVal = FALSE; } } else { // Error vid oppningen bRetVal = FALSE; } if(hDrive != INVALID_HANDLE_VALUE) CloseHandle(hDrive); return bRetVal; }
-
Danke Guenni, das probiere ich nachher mal.
-
-
Jochen Kalmbach schrieb:
FAQ !?
http://www.c-plusplus.net/forum/viewtopic-var-p-is-1035206.html#1035206Ups, abgesehen davon, dass ich mit dem Betreff nicht viel anfangen konnte... bei WinApi vergesse ich immer zu gucken.
Danke.
-
estartu schrieb:
Jochen Kalmbach schrieb:
FAQ !?
http://www.c-plusplus.net/forum/viewtopic-var-p-is-1035206.html#1035206Ups, abgesehen davon, dass ich mit dem Betreff nicht viel anfangen konnte... bei WinApi vergesse ich immer zu gucken.
Danke.Mit MFC hat ja das Thema überhaupt nix zu tun...
-
Also sollte ich mich mal verschieben, was?
-
Dieser Thread wurde von Moderator/in estartu aus dem Forum MFC (Visual C++) in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Das aus der FAQ hilft.