Mittels mciSendString CD tray öffnen
-
Hallo
ich versuche gerade meine CD tray mittels mciSendString zu öffnen, leider stehe ich da etwas an.
#include <windows.h> #include <mmsystem.h> #include <stdio.h> int main(int argc, char *argv[]) { printf ("Open CD Tray\n"); mciSendString("open CDAudio", 0, 0, 0); // Opens Cd Tray }
Gibt mir
error C2664: 'mciSendStringW': Konvertierung des Parameters 1 von 'const char [13]' in 'LPCWSTR' nicht möglich
Dann habe ich es mit
#include <windows.h> #include <mmsystem.h> #include <stdio.h> int main(int argc, char *argv[]) { printf ("Open CD Tray\n"); mciSendString(L"open CDAudio", 0, 0, 0); // Opens Cd Tray }
versucht, das endet aber auch nicht gut.
error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__mciSendStringW@16" in Funktion "_main". fatal error LNK1120: 1 nicht aufgelöste externe Verweise.
Weiß da eventuell wie ich das beheben kann? Aus der letzten Fehlermeldung werde ich nicht schlau.
Entwicklungsumgebung VS2005 PRO
MfG
-
Projekt auf Multibyte umstellen, um sich das 'L' zu ersparen.
Und winmm.lib linken.
-
kurze beschreibung wie du das auf Multibyte umstellst in diesem Beitrag 2 Seite ganz oben.
-
Danke das hat schon mal geholfen
Ich habe jetzt unter Projekteigenschaften -> Linker -> Eingabe -> Zusätzliche Abhängigkeiten -> winmm.dll eingebunden und bekomme jetzt
fatal error LNK1107: Ungültige oder beschädigte Datei: Lesen bei 0x308 nicht möglich. C:\Windows\System32\winmm.dll
Ich denke mal das die nicht hin ist, sondern ich mache was falsch.
Das mit dem Multibyte hat dafür gut funktioniert
-
alternativ zum linken könntest du versuchen
//*.h #pragma comment (lib,"winmm.lib");
-
Danke jetzt läufts
Im Linker die dll entfernt und die zeile in meinen Code geschmissen
#include <windows.h> #include <stdio.h> #pragma comment (lib,"winmm.lib"); int main(int argc, char *argv[]) { printf ("Open CD Tray\n"); mciSendString ("set cdaudio door open", 0, 0, 0); }
Jetzt noch rausfinden wie ich den Laufwerksbuchstaben mit übergeben kann und fertig (aber das sollte kein problem sein
).
MfG
-
du solltest die *.lib im linker einbinden nicht die *.dll. kein wunder das dir der compiler die fehlermeldung um die ohren haut.
-
Du solltest es nicht mittels mci* machen, da i.d.R. mehrere Laufwerke vorhanden sind, sondern via dem letzten Beitrag hier:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-80618.html
-
Das man die *.dll so einbinden kann hab ich aus einer How To für VS. Aber naja geht so scheinbar nicht.
Das mit mit dem DeviceIoControl sieht wirklich weit besser aus. Warum findet man wenn man zu dem Thema was sucht nur die mciSendString Lösung