Wysuwanie Stacji

TD
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 13
0

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

saviolaa
  • Rejestracja: dni
  • Ostatnio: dni
0
Kopiuj
#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;
} 
TD
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 13
0

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

PR1V4T3_R
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 27
0

Może spróbuj dodać

Kopiuj
 #include <tchar.h> 

bo jest tam takie coś :)

Kopiuj
 #define _tWinMain wWinMain 
MarekR22
  • Rejestracja: dni
  • Ostatnio: dni
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.

Gynvael Coldwind
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Zurich, Switzerland
  • Postów: 457
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:

Kopiuj
#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?

amddell
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 21
0

Spróbuj czy ten kod zadziała

Kopiuj
#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);
	}
}

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.