OVH Cloud OVH Cloud

Cherche doc et liens pour gravure de CDs

32 réponses
Avatar
Michaël Delva
Bonsoir à tous,

j'ai cherché pas de temps là dessus, et mis à part des liens de la MSDN sur
IMAPI, j'ai rien trouvé d'autre...

Je voudrais permettre la gravure de CDs depuis mon soft, et de préférence
grâce aux ASPI, parce qu'IMAPI est réservé à Windows XP si j'ai bien saisi.

Mais rien à me mettre sous la dent...

Si vous avez du code source de logiciels qui font ça, c'est encore mieux
;-)

Merci d'avance

10 réponses

1 2 3 4
Avatar
Michaël Delva
Thierry wrote in news:XnF947ABAF763BB8pouletetcetc@
212.27.42.73:

#import facilite quand même la vie.




Ca sert à quoi cette commande?
Avatar
Michaël Delva
"Vincent Burel" wrote in
news:c1fvqp$4is$:

ouaip, je te rassure , ca peut faire la même chose avec VC++ :-)
c'est simplement que ton linker ne trouve pas ce truc :
CLSID_MSDiscMasterObj
c'est donc qu'il te manque une lib qqc part ... mais bon quand on fait
du COM on s'en fout de ça.

si tu veux pas t'emmerder, récupère les GUID dans les header
d'interface et déclare les toi même dans ton source. Comme ca t'as pas
besoin d'une lib spécifique et ton source compilera aussi bien sur un
autre IDE...

exemple :

static GUID myCLSID_MSDiscMasterObj
={0x520CCA63,0x51A5,0x11D3,0x91,0x44,0x00,0x10,0x4B,0xA1,0x1C,0x5E};


VB



Bon avec ça effectivement ça compile, mais il n'arrive pas à créer une
instance de IDiscMaster...

Mon code:

static GUID myCLSID_MSDiscMasterObj {0x520CCA63,0x51A5,0x11D3,0x91,0x44,0x00,0x10,0x4B,0xA1,0x1C,0x5E};

//-----------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
HRESULT hr = CoInitialize(NULL);
if (FAILED(hr))
{
ShowMessage("Impossible d'initialiser la librairie COM");
return;
}

IDiscMaster *pDM = NULL;

hr = CoCreateInstance(
myCLSID_MSDiscMasterObj, //Uuid,
NULL,
CLSCTX_SERVER,
IID_IDiscMaster, //iid,
(void **) &pDM);
if (FAILED(hr))
{
ShowMessage("Impossible d'initialiser pDM");
CoUninitialize();
return;
}
}

Et il m'affiche le message "Impossible d'initialiser pDM"

Est-ce que l'appel de CoCreateInstance est bon?
Avatar
Michaël Delva
Christian ASTOR wrote in
news:403bd0b8$0$5911$:

Michaël Delva a écrit:


Mais bon, c'est dommage qu'il n'y ait pas plus de doc sur les ASPI
:-(



Il y a la doc technique qui est qd même assez détaillée.
http://www.google.fr/search?qÊche:WJ-41jH9AVUJ:850gs.ath.cx/pub/windo
ws/system/exploit/CDROM/ASPI/ASPI32.DOC+specification++sendaspi32comman
d&hl=fr&ie=UTF-8 Mais utilise IMAPI.




Merci pour ton lien, j'y jetterai un oeil prochainement
Avatar
Michaël Delva
"Vincent Burel" wrote in
news:c1fvqp$4is$:

si tu veux pas t'emmerder, récupère les GUID dans les header
d'interface et déclare les toi même dans ton source. Comme ca t'as pas
besoin d'une lib spécifique et ton source compilera aussi bien sur un
autre IDE...

exemple :

static GUID myCLSID_MSDiscMasterObj
={0x520CCA63,0x51A5,0x11D3,0x91,0x44,0x00,0x10,0x4B,0xA1,0x1C,0x5E};


VB




Désolé de faire le boulet, mais dans quels fichiers tu récupères ça?

J'ai cherché dans imapi.h et j'ai pas trouvé :-(
Avatar
Vincent Burel
"Michaël Delva" wrote in message
news:
"Vincent Burel" wrote in
news:c1fvqp$4is$:

> exemple :
>
> static GUID myCLSID_MSDiscMasterObj
> ={0x520CCA63,0x51A5,0x11D3,0x91,0x44,0x00,0x10,0x4B,0xA1,0x1C,0x5E};

Désolé de faire le boulet, mais dans quels fichiers tu récupères ça?

J'ai cherché dans imapi.h et j'ai pas trouvé :-(



faites donc une recherche sur MSDiscMasterObj vous devriez trouver une
référence avec un rappel de la valeur du GUID....

VB
Avatar
Vincent Burel
"Michaël Delva" wrote in message
news:
"Vincent Burel" wrote in
news:c1fvqp$4is$:

Bon avec ça effectivement ça compile, mais il n'arrive pas à créer une
instance de IDiscMaster...

Mon code:

static GUID myCLSID_MSDiscMasterObj > {0x520CCA63,0x51A5,0x11D3,0x91,0x44,0x00,0x10,0x4B,0xA1,0x1C,0x5E};

//-----------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
HRESULT hr = CoInitialize(NULL);
if (FAILED(hr))
{
ShowMessage("Impossible d'initialiser la librairie COM");
return;
}

IDiscMaster *pDM = NULL;

hr = CoCreateInstance(
myCLSID_MSDiscMasterObj, //Uuid,
NULL,
CLSCTX_SERVER,
IID_IDiscMaster, //iid,
(void **) &pDM);
if (FAILED(hr))
{
ShowMessage("Impossible d'initialiser pDM");
CoUninitialize();
return;
}
}

Et il m'affiche le message "Impossible d'initialiser pDM"

Est-ce que l'appel de CoCreateInstance est bon?



bon, je suppose que vous avez votre IID_IDiscMaster :
static GUID IID_IDiscMaster
={0x520CCA62,0x51A5,0x11D3,0x91,0x44,0x00,0x10,0x4B,0xA1,0x1C,0x5E};

Peut-être qu'il n'aime pas le CLSCTX_SERVER et qu'il préfèrerait un
CLSCTX_ALL

on appelle pas CoUninitialize(); comme ca, on teste d'abord ce qu'avait
renvoyé CoInitialize et on désinitialize uniquement si l'initialization a
renvoyée S_OK.

Faudrait peut-être lire les DOC en entier.

VB
Avatar
Thierry
Bonjour,

Michaël Delva a écrit :

Thierry wrote in news:XnF947ABAF763BB8pouletetcetc@
212.27.42.73:

#import facilite quand même la vie.




Ca sert à quoi cette commande?



Par exemple:
#import "excel10.dll"
te genere un fichier .h contenant les defs des interfaces, CLSID, etc des
objets COM contenus dans cette DLL (cf MSDN).

Cette directive n'est peut etre pas supportée par Borland. Dans ce cas
utilise l'"OLE/COM object viewer" (probablement telechargeable sur
Internet) pour recuperer ces definitions (File / View Typelib).

--
« Willy, j'ai mangé le chat. »
Avatar
Michaël Delva
"Vincent Burel" wrote in
news:c1hhtk$tl$:

bon, je suppose que vous avez votre IID_IDiscMaster :
static GUID IID_IDiscMaster
={0x520CCA62,0x51A5,0x11D3,0x91,0x44,0x00,0x10,0x4B,0xA1,0x1C,0x5E};



Oui, comme dans le code que j'ai donné juste avant

Peut-être qu'il n'aime pas le CLSCTX_SERVER et qu'il préfèrerait un
CLSCTX_ALL

on appelle pas CoUninitialize(); comme ca, on teste d'abord ce
qu'avait renvoyé CoInitialize et on désinitialize uniquement si
l'initialization a renvoyée S_OK.



Ca a été fait, toujours dans le code que j'ai donné ;-)

Faudrait peut-être lire les DOC en entier.



C'est ce que je fais...

VB



Bon, ben j'ai essayé avec toutes les valeurs possible de CLSCTX, et rien ne
fonctionne.

Je teste les valeurs de retour de CoCreateInstance, et soit j'ai
REGDB_E_CLASSNOTREG, soit je n'ai rien...

Je ne comprends pas là...
Avatar
Vincent Burel
> Bon, ben j'ai essayé avec toutes les valeurs possible de CLSCTX, et rien


ne
fonctionne.

Je teste les valeurs de retour de CoCreateInstance, et soit j'ai
REGDB_E_CLASSNOTREG, soit je n'ai rien...

Je ne comprends pas là...



pourtant c'est simple !

CLASSNOTREG = CLASS NOT REGISTERED.
vous êtes sur un système qui ne connait pas le composant COM que vous voulez
instancier.
tout simplement parce qu'il n'est pas installé... peut-être même n'êtes vous
pas sous XP !?

VB
Avatar
Michaël Delva
"Vincent Burel" wrote in
news:c1igii$si$:

pourtant c'est simple !

CLASSNOTREG = CLASS NOT REGISTERED.
vous êtes sur un système qui ne connait pas le composant COM que vous
voulez instancier.
tout simplement parce qu'il n'est pas installé...



J'ai pourtant installé le dernier Windows Platform SDK... J'ai même tenté
de remplacer mes anciens fichiers.

peut-être même
n'êtes vous pas sous XP !?



Faut pas pousser non plus!! :-D Oui je galère, mais bon...

VB


1 2 3 4