Grabar CD con WindowsXP desde VB

22/07/2003 - 18:25 por VB | Informe spam
Hola grupo,
El tema es el siguiente:
Tengo una aplicación que corre sobre WindowsXP, y mi aplicación tiene que
copiar archivos directamente al CD. WindowsXP permite grabar directamente a
CD como si fuese un Disco de 3'5". Quiero aprovecharlo y mi intención es
poder hacer lo mismo pero desde Visual Basic. He provado de hacerlo con

Call FileCopy("C:\FicheroOrigen", "D:\FicheroDestino")

pero me da problemas, porque lo que hace el Windows XP es guardarlo en una
carpeta temporal, y cuando uno desea copiarlo definitivamente, tiene que ir
a la unidad de CD y hacer "Guardar estos archivos en un CD" que se encuentra
en el menú Archivos. Cuando intento hacerlo me da error, supongo por este
motivo. Creo que podria llegar a dejarlo en el directorio temporal
correspondiente, pero luego no se como activar el "Guardar estos archivos en
un CD" desde Visual Basic.
Alguien puede ayudarme?
Cualquer idea puede ser buena.

Muchas gracias de antemano,

VB.

Preguntas similare

Leer las respuestas

#1 Eduardo A. Morcillo [MS MVP]
22/07/2003 - 19:27 | Informe spam
El shell provee una interface para quemar los CDs. Hasta donde yo se, no
esta expuesta para ser usada con VB por lo que requieres de una libreria de
tipo que defina este objeto. En mi web puedes encontrar la libreria
OLELIB.TLB que define esta interface (ICDBurn) y objeto (CDBurn). Los
archivos deben estar en el directorio temporal para que sean grabados.

Dim oCDBurn As CDBurn
Dim sCD As String

Set oCDBurn = New CDBurn

If oCDBurn.HasRecordableDrive Then

sCD = Space$(3)
oCDBurn.GetRecorderDriveLetter sCD, 3

If MsgBox("El CD grabable es: " & sCD & _
". Desea grabar?", vbYesNo) = vbYes Then

oCDBurn.Burn Me.hWnd

End If

Else
MsgBox "No hay CD grabable en el sistema"
End If

Eduardo A. Morcillo [MS MVP - VB]
http://www.mvps.org/emorcillo
Respuesta Responder a este mensaje
#2 José Trinidad [El Tiko]
22/07/2003 - 20:39 | Informe spam
Salu2!

Don Eduardo... una consultilla... :-)

He escuchado acerca de las Librerias de Tipos (*.tlb), sé que funcionan
para hacer innumerables cosas, pero no sé exactamente como y cuando se
pueden usar o crear, y realmente cuando las puedo necesitar... Muy
agradecido desde ahora!

Att.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
José Trinidad García M. <El Tiko>
(Guía de buen uso del foro)
http://perso.wanadoo.es/rubenvigon/foro
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Respuesta Responder a este mensaje
#3 Eduardo A. Morcillo [MS MVP]
23/07/2003 - 06:52 | Informe spam
He escuchado acerca de las Librerias de Tipos (*.tlb), sé que
funcionan para hacer innumerables cosas,



No tan innumerables. Simplemente definen interfaces, clases y funciones.

pero no sé exactamente como
y cuando se pueden usar o crear,



Cuando agregas una referencia a una DLL en un proyecto, en realidad estas
agregando una referencia a una libreria de tipos incluida como recurso en la
DLL. Es decir, que las referencias realmente son a librerias de tipos y por
lo su manejo creo que ya lo conoces.

En cuanto como y cuando a crearlas depende de lo que quieras hacer. Por
ejemplo si quieres utilizar un componente en forma remota, necesitaras una
libreria de tipo que defina las clases e interfaces, para usarla en la
maquina cliente. Otro motivo puede ser como en el caso de este hilo, usar un
objeto provisto por alguna DLL que no contiene una libreria de tipos y que
por lo tanto no podria usarse desde VB. Y asi puedes encontrar cientos de
motivos, dependiendo del caso. Para crearlas tambien depende el caso. Si
deseas crear una interface propia (por ejemplo para hacer un callback)
puedes utilizar VB y especificar en las propiedades del proyecto que genere
un archivo .TLB ademas de la DLL (con la opcion de archivos para uso
remoto). Si es alguna interface ya definida en otro lado no puedes usar VB
porque debes especificar el ID de la interface y el CLSID del objeto, cosa
que VB no permite. Entonces utilizas el lenguaje IDL (en la MSDN esta
documentado) para crear los fuentes y luego compilarlos con MIDL o MKTYPLIB.

Como dije antes tambien pueden usarse para definir APIs. La ventaja es que
puedes hacer referencia a la TLB y ya no tienes que estar colocando Declares
por todos lados. Otra ventaja es que puedes llamar directamente a APIs que
reciben strings Unicode sin necesidad de estar haciendo conversiones o usar
StrPtr (y por consiguiente el codigo resulta mas sencillo para entender).

Eduardo A. Morcillo [MS MVP - VB]
http://www.mvps.org/emorcillo
Respuesta Responder a este mensaje
#4 VB
23/07/2003 - 12:16 | Informe spam
Hola Eduardo, gracias por tu respuesta, pero tengo algun problema.
He bajado la libreria de tu web, he descomprimido el Zip y he cojido el
Olelib.ltb. He cogido el còdigo que me pasas, pero al hacer el
"oCDBurn.GetRecorderDriveLetter sCD, 3" me da error. Sabes a que puede ser
debido?
De todos los ficheros que havia en el Zip, cuales son los que necesito?
Solo necesito el Olelib.tlb o necesito también algun .inc ?

Gracias por todo,

VB.



"Eduardo A. Morcillo [MS MVP]" <emorcilloATmvps.org> escribió en el mensaje
news:
El shell provee una interface para quemar los CDs. Hasta donde yo se, no
esta expuesta para ser usada con VB por lo que requieres de una libreria


de
tipo que defina este objeto. En mi web puedes encontrar la libreria
OLELIB.TLB que define esta interface (ICDBurn) y objeto (CDBurn). Los
archivos deben estar en el directorio temporal para que sean grabados.

Dim oCDBurn As CDBurn
Dim sCD As String

Set oCDBurn = New CDBurn

If oCDBurn.HasRecordableDrive Then

sCD = Space$(3)
oCDBurn.GetRecorderDriveLetter sCD, 3

If MsgBox("El CD grabable es: " & sCD & _
". Desea grabar?", vbYesNo) = vbYes Then

oCDBurn.Burn Me.hWnd

End If

Else
MsgBox "No hay CD grabable en el sistema"
End If

Eduardo A. Morcillo [MS MVP - VB]
http://www.mvps.org/emorcillo


Respuesta Responder a este mensaje
#5 Eduardo A. Morcillo [MS MVP]
23/07/2003 - 16:54 | Informe spam
VB wrote:
Hola Eduardo, gracias por tu respuesta, pero tengo algun problema.
He bajado la libreria de tu web, he descomprimido el Zip y he cojido
el Olelib.ltb. He cogido el còdigo que me pasas, pero al hacer el
"oCDBurn.GetRecorderDriveLetter sCD, 3" me da error. Sabes a que
puede ser debido?



La verdad es que no se porque nunca lo use (no tengo grabadora de CDs :-( ).
Que error te da?

De todos los ficheros que havia en el Zip, cuales son los que
necesito? Solo necesito el Olelib.tlb o necesito también algun .inc ?



Solo el archivo .tlb, el resto son los fuentes para compilar dicho archivo.

Eduardo A. Morcillo [MS MVP - VB]
http://www.mvps.org/emorcillo
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida