XP ou superieur !!! Test fait au demarrage.
Teste sur XP et Server 2003.
Liste les lecteurs CD de votre PC, exemple:
'E:\'
'F:\'
'G:\'
si F et G sont aussi lecteur et/ou graveur DVD, vous aurez:
'E:\'
'F:\ DVD'
'G:\ DVD'
Source / Exemple :
#include <windows.h>
#include "resource.h"
int __stdcall LecteurEstDvd(char *pszdrv, void *pmem)
{
HANDLE hdev;
char buff[12];
DWORD n, r = 0;
if(!pmem) return 0;
- ((DWORD*) buff) = 0x5C2E5C5C; // "\\\\.\\"
buff[4] = pszdrv[0]; buff[5] = ':'; buff[6] = 0;
hdev = CreateFile(buff,GENERIC_READ,FILE_SHARE_READ,0,OPEN_EXISTING,0,0);
if(hdev == INVALID_HANDLE_VALUE) return 0;
if(DeviceIoControl(hdev, 2952196, 0, 0, pmem, 4096, &n, 0))
r = (*((DWORD*) pmem) == 0x33);
CloseHandle(hdev);
return r;
}
void __stdcall ListerCdDvd(HWND hlst)
{
DWORD dwdrvs;
char szdrv[8];
void *pmem;
if(!(dwdrvs = GetLogicalDrives())) return;
pmem = HeapAlloc(GetProcessHeap(), 0, 4096);
- ((DWORD*) szdrv) = 0x5C3A41; // "A:\"
- ((DWORD*) (szdrv + 4)) = 0x445644; // "DVD"
goDrvs:
if(dwdrvs & 1) {
if(GetDriveType(szdrv) == DRIVE_CDROM) {
if(LecteurEstDvd(szdrv, pmem)) szdrv[3] = 32;
SendMessage(hlst, LB_ADDSTRING, 0, (long) szdrv);
szdrv[3] = 0;
}
}
szdrv[0]++;
if(dwdrvs >>= 1) goto goDrvs;
if(pmem) HeapFree(GetProcessHeap(), 0, pmem);
SendMessage(hlst, LB_SETCURSEL, 0, 0);
}
BOOL CALLBACK AppDlgProc(HWND hdlg, UINT mssg, WPARAM wParam, LPARAM lParam)
{
switch(mssg) {
case WM_INITDIALOG:
SetClassLong(hdlg, GCL_HICON, (long)LoadIcon(0, IDI_APPLICATION));
ListerCdDvd(GetDlgItem(hdlg, IDLST_DVDCD));
return 1;
case WM_COMMAND:
if(wParam == IDCANCEL) EndDialog(hdlg, 0);
}
return 0;
}
DWORD VerifXP2003()
{
OSVERSIONINFO osvi;
osvi.dwMajorVersion = 0;
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
GetVersionEx(&osvi);
if(osvi.dwPlatformId != VER_PLATFORM_WIN32_NT) return 0;
return ((osvi.dwMinorVersion >= 1) && (osvi.dwMajorVersion == 5));
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE x, PSTR y, int z)
{
if(VerifXP2003())
DialogBoxParam(hInstance, (LPCTSTR)IDD_APP, 0, AppDlgProc, 0);
return 0;
}
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.