Wysuwanie Stacji

0

Witam,
jaka jest komenda na wysuwanie stacji dysków w c++ ? Jakie biblioteki trzeba dodać ? Jest jakaś gotowa funkcja ?

0
#pragma comment( lib, "winmm.lib" )

#include "stdafx.h"
#include <Windows.h>
#include <mmsystem.h>


int _tmain()
{

    MCI_OPEN_PARMS mPar = { 0 };
    mPar.lpstrDeviceType = reinterpret_cast<LPCWSTR>(MCI_DEVTYPE_CD_AUDIO);

    // Open device
    mciSendCommand(0, MCI_OPEN, MCI_OPEN_TYPE | MCI_OPEN_TYPE_ID, (DWORD)&mPar);

    // Open tray
    mciSendCommand(mPar.wDeviceID, MCI_SET, MCI_SET_DOOR_OPEN, 0);

    // Close tray
    mciSendCommand(mPar.wDeviceID, MCI_SET, MCI_SET_DOOR_CLOSED, 0);

    // Close device
    mciSendCommand(mPar.wDeviceID, MCI_CLOSE, MCI_WAIT, 0);

    return 0;
} 
0

Dzięki wielkie ! Niestety wyrzuca mi error : " 1>ConsoleApplication2.obj : error LNK2019: unresolved external symbol __imp__mciSendCommandW@16 referenced in function _wmain" .

0

Może spróbuj dodać

 #include <tchar.h> 

bo jest tam takie coś :)

 #define _tWinMain wWinMain 
0

@PR1V4T3_R To jest błąd linkowania, musi dołączyć odpowiednią bibliotekę do procesu budowania, więc żadna zmiana w źródłach nic tu nie zmieni.
Nie koduję pod Windows o dłuższego czasu, więc niestety nie pamiętam o jaką bibliotekę chodzi i jak ją dodać do procesu linkowania.

1

@MarekR22
I to jest ta właściwa część zagadki - właściwa biblioteka jest załączona w kodzie powyżej za pomocą dyrektywy pragma:

#pragma comment( lib, "winmm.lib" )

Pytanie brzmi, czemu ta dyrektywa nie zadziałała ;)

Nie mam przy sobie platform SDK żeby sprawdzić czy odpowiedni symbol jest w tej bibliotece (w MinGW libwinmm.a jest).
Nie mam również Visual C++ aby sprawdzić czy #pragma nadal działa w najnowszych wersjach (stawiam, że tak; choć nie wiem jakiej wersji kompilatora op używa...).

@TheeDrCc
Z jakiej wersji Visual Studio korzystasz?

0

Spróbuj czy ten kod zadziała

#include <windows.h>
#include "stdafx.h"

int main()
{
	HANDLE hwnd = CreateFileA("\\\\.\\E:", GENERIC_READ, FILE_SHARE_WRITE | FILE_SHARE_READ, NULL,
	OPEN_EXISTING, 0, NULL);

	if (hwnd != INVALID_HANDLE_VALUE)
	{
		DWORD cc;
		//wysuwa szufladkę
		DeviceIoControl(hwnd, IOCTL_STORAGE_EJECT_MEDIA,
			NULL, 0, NULL, 0, &cc, NULL);
		//wsuwa szufladkę
		DeviceIoControl(hwnd, IOCTL_STORAGE_LOAD_MEDIA,
			NULL, 0, NULL, 0, &cc, NULL);
		//zamyka uchwyt
		CloseHandle(hwnd);
	}
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1