Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #5  
Antiguo 27-04-2007
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 22
cHackAll Va por buen camino
Cool Solucion

No pues Jhonny lo del amigo Domingo parece interesante... lo revisare pero no creo que sea aplicable al problema.

Al tema: lo que yo hice para piratearme algunas cosillas es lo siguiente.

La siguiente linea la debes poner (obviamente) dentro de la declaración de los métodos de la clase de tu formulario:

Código Delphi [-]
   procedure DeviceChange(var Message: TMessage); message WM_DEVICECHANGE;


El siguiente código copialo dentro de la seccion de implementación de procedimientos. No olvides reemplazar (en caso de que tu formulario tenga otro), el nombre de la clase TForm1 por la que estes utilizando:

Código Delphi [-]
const
 DBT_DEVICEARRIVAL = $8000;      { system detected a new device }
 DBT_DEVTYP_VOLUME = $00000002;                { logical volume }
Código Delphi [-]
 
type
 PDevBroadcastVolume = ^TDevBroadcastVolume;
 TDevBroadcastVolume = packed record
  dbcv_size: Cardinal;
  dbcv_devicetype: Cardinal;
  dbcv_reserved: Cardinal;
  dbcv_unitmask: Cardinal;
  dbcv_flags: Word;
 end;
 
procedure TForm1.DeviceChange(var Message: TMessage);
var Drive: Char; UnitMask: Cardinal;
begin
 with Message do
  if wParam = DBT_DEVICEARRIVAL then
   with PDevBroadcastVolume(lParam)^ do
    if (dbcv_devicetype = DBT_DEVTYP_VOLUME) and (dbcv_flags = 1) then  // Si quieres darle a una EEPROM cambia a "(dbcv_flags = 0)"
     begin
      Drive := '@';
      UnitMask := dbcv_unitmask;                                        //
      repeat Inc(Drive);
       UnitMask := UnitMask shr 1;
      until UnitMask = 0;
      WinExec(PChar('cmd /kdir ' + Drive + ':'), 0);                    // 'Drive' is your business 
     end;
end;


Ahora si ésto no te funciona y luego de haber analizado otras alternativas, pues usaría algo del código que te dieron antes:

Código Delphi [-]
 for Drive := 'b' to 'z' do
  if GetDriveType(PChar(Drive + ':\')) = DRIVE_CDROM then
   begin
    WinExec(PChar('cmd /kdir ' + Drive + ':'), 0);
    Break;
   end


Bueno te dí la forma correcta y un kludges que necesita algunos arreglos pues solo te sirve para saber que unidades son CD/DVD, ahora debes ver si tiene lo que buscas, si ya lo revisaste, etc., pero espero que el primero solucione tu inquitud.

Suerte

PD: Este tema esta death? por que me aparecen participaciones de mayo del 2003 y en la raíz dice que fue hace agunas horas? moderadores, GüebMosters can any one help me?
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Detectar la Unidad de CD Tonio Varios 13 04-03-2013 22:49:01
Extraer nombre de unidad en tiempo de ejecución. Delphius Varios 2 21-04-2007 05:57:23
Como Detectar la Unidad de una Memory Flash???? AGAG4 Varios 1 09-12-2005 10:50:09
Saber nombre de la unidad de CD rex Varios 2 18-08-2005 23:16:08
Cambiar el nombre de la unidad de DD? danytorres Varios 1 05-02-2004 07:07:58


La franja horaria es GMT +2. Ahora son las 00:04:30.


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