Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Go Back   Foros Club Delphi > Principal > API de Windows
Register FAQ Members List Calendar Guía de estilo Today's Posts

Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old 09/07/2007
unreal4u's Avatar
unreal4u unreal4u is offline
Miembro
 
Join Date: Nov 2004
Location: Temuco, Chile
Posts: 105
Poder: 22
unreal4u Va por buen camino
Cómo obtener el título del cd insertado?

ya, me cansé ... he buscado toda la tarde por esta simple función y simplemente no la encuentro .. he buscado en google, he buscado en los foros, y nada.

Haber, les cuento ...

Necesito listar todos los CD-ROM/DVD-ROM del pc, pero con el respectivo título que en ese momento tenga el cd-rom. (Por ejemplo, si ponemos el DVD de la película "La Roca", que me aparezca "La Roca - [D:]"). Listar las unidades no es ningún problema (ya cerré la ventana, pero estaba aquí en el foro sip :P), pero el problema me viene con la etiqueta de la unidad: en ninguna parte sale cómo obtenerlo

Alguien sabe cuál es la función que hace eso? Yo sé que existía una función para eso, pero no logro acordarme cuál es

Saludos !!
__________________
Código Delphi [-]
procedure Gracias; 
begin
 if Respuesta_a_Mensaje = TRUE then showmessage('Ojalá que te sirva')
 else showmessage('Gracias por responder... :-)');
end; // (c) unreal4u
Reply With Quote
  #2  
Old 09/07/2007
dec's Avatar
dec dec is offline
Moderador
 
Join Date: Dec 2004
Location: Alcobendas, Madrid, España
Posts: 13,145
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Creo que puedes usar la función "GetVolumeInformation" del API de Win32. Tienes varios ejemplos de uso en Koders, por ejemplo.
__________________
David Esperalta
www.decsoftutils.com
Reply With Quote
  #3  
Old 09/07/2007
unreal4u's Avatar
unreal4u unreal4u is offline
Miembro
 
Join Date: Nov 2004
Location: Temuco, Chile
Posts: 105
Poder: 22
unreal4u Va por buen camino
efectivamente con GetVolumeInformation se puede obtener este dato, aunque la API es un poco complicado .. pero encontré otra página al respecto que lo explica con manzanitas

http://www.delphicorner.f9.co.uk/articles/wapi2.htm

ahora mismo estoy leyendo ...

Gracias de todas maneras !!
__________________
Código Delphi [-]
procedure Gracias; 
begin
 if Respuesta_a_Mensaje = TRUE then showmessage('Ojalá que te sirva')
 else showmessage('Gracias por responder... :-)');
end; // (c) unreal4u
Reply With Quote
  #4  
Old 09/07/2007
unreal4u's Avatar
unreal4u unreal4u is offline
Miembro
 
Join Date: Nov 2004
Location: Temuco, Chile
Posts: 105
Poder: 22
unreal4u Va por buen camino
Listo !!

Código Delphi [-]
procedure ObtenerInfo;
var
  drive       : char;
  pVolName    : PChar;
  pFSBuf      : PChar;
  SectPerCls,
  BytesPerCls,
  FreeCls,
  TotCls      : DWord;

begin
  for drive := 'A' to 'Z' do
   begin
    if GetDriveType(PChar(drive + ':\')) in [DRIVE_CDROM] then
     begin
      GetMem(pVolName, MAX_PATH);
      GetMem(pFSBuf, MAX_PATH);
      GetVolumeInformation(PChar(drive + ':\'), pVolName, MAX_PATH, nil,
                           SectPerCls, BytesPerCls, pFSBuf, MAX_PATH);
      GetDiskFreeSpace(PChar(drive + ':\'), SectPerCls, BytesPerCls, FreeCls, TotCls);
      if FormatFloat('0.00', (SectPerCls * BytesPerCls * TotCls / 1000000)) = '0.00' then
       Form1.ComboBox1.Items.Add('No hay CD o DVD en [' + drive + ':\]')
      else
       Form1.ComboBox1.Items.Add(PChar(pVolName) + ' - [' + drive + ':\]');

      FreeMem(pVolName, MAX_PATH);
      FreeMem(pFSBuf, MAX_PATH);
     end;
   end;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
 ComboBox1.Clear;
 ObtenerInfo;
 ComboBox1.DroppedDown := TRUE;
end;

Tan cortito como eso era

SS:

Saludos !!
__________________
Código Delphi [-]
procedure Gracias; 
begin
 if Respuesta_a_Mensaje = TRUE then showmessage('Ojalá que te sirva')
 else showmessage('Gracias por responder... :-)');
end; // (c) unreal4u
Reply With Quote
  #5  
Old 09/07/2007
unreal4u's Avatar
unreal4u unreal4u is offline
Miembro
 
Join Date: Nov 2004
Location: Temuco, Chile
Posts: 105
Poder: 22
unreal4u Va por buen camino
PD :

lo incluí en el gran programa gran en el cual va, y a la primera ejecución me mandó el error de buffer overflow

Claro, justo tenía un dvd puesto y al recurrir al dvd, el espacio total era muchisimo más grande que lo que un DWord puede soportar...

Intenté declarar tipo LongWord pero aún así le da un buffer overflow ...

Ahora la pregunta: alguien conoce algún tipo más grande que los que acabo de nombrar ?

Por el momento le desactivé la opción de revisar los overflow, pero me gustaría tenerlo andando bien, yo la verdad me quedé como plop cuando vi que ni siquiera los LongWord eran suficientes ...

Saludos !!
__________________
Código Delphi [-]
procedure Gracias; 
begin
 if Respuesta_a_Mensaje = TRUE then showmessage('Ojalá que te sirva')
 else showmessage('Gracias por responder... :-)');
end; // (c) unreal4u
Reply With Quote
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Obtener titulo de una columna MaMu OOP 1 29/06/2007 23:58
Obtener ID_Direccion recien insertado Durbed SQL 8 19/08/2005 02:57
Obtener ClaveMaestra del registro insertado. jplj Conexión con bases de datos 11 20/05/2004 00:18
Obtener el último registro insertado mutant09 SQL 3 04/05/2004 20:59
¿Como obtener el titulo de las ventanas que se ban abriendo en windows? jorch_yr Varios 2 15/01/2004 20:17


All times are GMT +2. The time now is 12:34.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi