Cdromlaufwerk eausfahren??
-
schau mal nach MciSendString
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum 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.
-
hier ein beispielcode:
#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; }
-
#include <windows.h> #include <tchar.h> #include <stdio.h> int _tmain() { DWORD dwBytes; HANDLE hCdRom = CreateFile(_T("\\\\.\\F:"), GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); if (hCdRom == INVALID_HANDLE_VALUE) { _tprintf(_T("Error: %x"), GetLastError()); return 1; } // Open the door: DeviceIoControl(hCdRom, IOCTL_STORAGE_EJECT_MEDIA, NULL, 0, NULL, 0, &dwBytes, NULL); // Close the door: DeviceIoControl(hCdRom, IOCTL_STORAGE_LOAD_MEDIA, NULL, 0, NULL, 0, &dwBytes, NULL); CloseHandle(hCdRom); }
-
holh schrieb:
hier ein beispielcode:
#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; }lol, den kenn ich sehr gut... den qc^^ wie heißt doch gleich die seite von der du den hast?
ach ja, online-toturials^^ aber man muss halt die 2 zeile beachten, check ich au net aber is so^^
-
hm noch ne frage kanns sein das der qc da vom jochen kalmbvach nich in dev-c++ funzt? zumindest zeigt der mir einen fehler in der zeile
DeviceIoControl(hCdRom, IOCTL_STORAGE_EJECT_MEDIA, NULL, 0, NULL, 0, &dwBytes, NULL);
hm kannst du/ein anderer mir/uns sagen woran das liegt....
-
Was für ein Fehler kommt denn nicht?
Falls die Defines fehlen, kannst Du das folgende einfügen...
#define FILE_DEVICE_MASS_STORAGE 0x0000002d #define CTL_CODE( DeviceType, Function, Method, Access ) ( \ ((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method) \ ) #define IOCTL_STORAGE_BASE FILE_DEVICE_MASS_STORAGE #define METHOD_BUFFERED 0 #define FILE_READ_ACCESS ( 0x0001 ) // file & pipe #define IOCTL_STORAGE_EJECT_MEDIA CTL_CODE(IOCTL_STORAGE_BASE, 0x0202, METHOD_BUFFERED, FILE_READ_ACCESS) #define IOCTL_STORAGE_LOAD_MEDIA CTL_CODE(IOCTL_STORAGE_BASE, 0x0203, METHOD_BUFFERED, FILE_READ_ACCESS)
-
nun gut aber dann kommt folgendern fehler:
line 76 ::: [Warning] backslash and newline separated by space
warum?
gruß julian
Edit: Wie kann in zeile 76 was falsch sein, wo es doch nur 34 zeilen gibt^^
-
In der WinAPI-FAQ wäre es auch zu finden gewesen: http://www.c-plusplus.net/forum/viewtopic-var-t-is-39397.html
-
das geht auch nich, nene kann mal einer das andere da oben mit zeile 76 erklärn?^^
-
geeky schrieb:
In der WinAPI-FAQ wäre es auch zu finden gewesen: http://www.c-plusplus.net/forum/viewtopic-var-t-is-39397.html
Da fehlt aber der aus meiner Sicht "bessere" Code mit dem DeviceIoControl (so kann man zumindest explizit angeben welches CD-ROM verwendet werden soll)
-
und was sagst du nu zu meinem zeilenproblem?^^ also da geht ja irgendwas nich...kannst das mal erklärn, wär nett...
gruß juli
-
Da Du Deine Zeilen nicht postest sag ich dazu gar nichts...
PS: Verwende doch ein gscheites IDE (VC2005 Express ist kostenlos!)
-
also das is jo dein qc den du da reingemacht mit deinen defines noch... aber er zeigt mir einen fehler in der nicht vorhandenen zeil 76...
[warning]backslash and newline separated by space
#include <windows.h>
#include <tchar.h>
#include <stdio.h>
#include <iostream>
using namespace std;#define FILE_DEVICE_MASS_STORAGE 0x0000002d
#define CTL_CODE( DeviceType, Function, Method, Access ) ( \
((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method) \
)
#define IOCTL_STORAGE_BASE FILE_DEVICE_MASS_STORAGE
#define METHOD_BUFFERED 0
#define FILE_READ_ACCESS ( 0x0001 ) // file & pipe
#define IOCTL_STORAGE_EJECT_MEDIA CTL_CODE(IOCTL_STORAGE_BASE, 0x0202, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_STORAGE_LOAD_MEDIA CTL_CODE(IOCTL_STORAGE_BASE, 0x0203, METHOD_BUFFERED, FILE_READ_ACCESS)int _tmain()
{
DWORD dwBytes;
HANDLE hCdRom = CreateFile(_T("\\\.\\F:"), GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
if (hCdRom == INVALID_HANDLE_VALUE)
{
_tprintf(_T("Error: %x"), GetLastError());
return 1;
}// Open the door:
DeviceIoControl(hCdRom, IOCTL_STORAGE_EJECT_MEDIA, NULL, 0, NULL, 0, &dwBytes, NULL);// Close the door:
DeviceIoControl(hCdRom, IOCTL_STORAGE_LOAD_MEDIA, NULL, 0, NULL, 0, &dwBytes, NULL);CloseHandle(hCdRom);
}
-
Wenn der ein Fehler in Zeile 76 in diesem Quellcode meint, dann musst DU wohl in einem Dev-C++ Forum fragen

-
Mal angenommen, dass die Zeilenangabe fehlerhaft ist und sich die Warnung auf den vorliegenden Code bezieht, hängt es damit zusammen, dass beim Copy&Pasten Leerzeichen hinter das \ am Zeilenende gelangt sind, die dort nicht hinsollten.
-
hmhm das klingt überzeugent, kannst du mir auch verraten wo diese leerzeichen sind?
mfg juli
-
Jochen Kalmbach schrieb:
geeky schrieb:
In der WinAPI-FAQ wäre es auch zu finden gewesen: http://www.c-plusplus.net/forum/viewtopic-var-t-is-39397.html
Da fehlt aber der aus meiner Sicht "bessere" Code mit dem DeviceIoControl (so kann man zumindest explizit angeben welches CD-ROM verwendet werden soll)
Das Problem taucht in der FAQ auch auf: http://www.c-plusplus.net/forum/viewtopic-var-t-is-80618.html
(Aber ich persönlich finde DeviceIoControl() auch schöner ^^)