Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-02-2015
YosvanyRL YosvanyRL is offline
Miembro
 
Registrado: may 2012
Posts: 60
Poder: 12
YosvanyRL Va por buen camino
GLibWMI_2.1b and USB

Buenas tardes para todos los del club de delphi y antes de poner mi hilo gracias por el gran aporte y la ayuda que nos dan a nosotros los que empezamos, es bien dificil empezar sin nadie que te ayude en un mundo tan amplio como es la programacion. Yo realmente no tengo mucho tiempo con el trabajo y la escuela para entrar mas frecuente a esta pagina que tanto me gusta pues con ustedes de veras se aprende mucho, y las pocas veces que he necesitado de alguna informacion, muy atentamente me han ayudado.
Por favor, quisiera saber, si alguien conoce como hacer, si es que se puede, poner en un listbox o un combobox una lista con los nombres de las memorias USB puestas en la PC o laptop con winow 7 u 8, y al seleccionar una de ellas que me de su ID unico de manofactura (El que no varia aun aunque se formatee). He tratado con "GLibWMI_2.1b" pero realmente no tengo ni la menor idea de como pudiera hacerse y de veras lo necesito. Si alguien pudiera decirme si existe un componente especial para eso o si con "GLibWMI_2.1b" se puede hacer de alguna manera.
Gracias por todo y favor si alguien conoce de este tema se lo agradeceria mucho pues lo necesito en gran medida.
Responder Con Cita
  #2  
Antiguo 10-02-2015
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

El código puede resumirse poco más o menos así:

Código Delphi [-]
procedure TMainForm.FormCreate(Sender: TObject);
var
  I: Integer;
begin
  // Activamos el componente
  USBControllerInfo.Active := True;

  // Recorremos los objetos obtenidos
  for I := 1 to USBControllerInfo.ObjectsCount do
  begin
    // Iremos seleccionando uno de los objetos
    USBControllerInfo.ObjectIndex := I;

    // Una vez seleccionado, podemos acceder a sus propiedades
    USBListBox.Items.Add(USBControllerInfo.USBControllerProperties.Caption);
  end;
end;

procedure TMainForm.USBListBoxClick(Sender: TObject);
var
  I: Integer;
begin
  I := USBListBox.ItemIndex;

  if I <> -1 then
  begin
    // El componente "indiza" comenzando con 1, pero el ListBox lo hace con 0
    USBControllerInfo.ObjectIndex := I + 1;

    USBSerialLabel.Caption :=
     USBControllerInfo.USBControllerProperties.DeviceID;
  end;
end;

En todo caso adjunto el ejemplo escrito en Delphi XE2:

Archivos Adjuntos
Tipo de Archivo: zip USBControllers.zip (77,8 KB, 6 visitas)
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 10-02-2015
YosvanyRL YosvanyRL is offline
Miembro
 
Registrado: may 2012
Posts: 60
Poder: 12
YosvanyRL Va por buen camino
GLibWMI_2.1b

Gracias por responder tan rapido, ya ahora mismo estoy probandolo.
Gracias miles de nuevo.
Si me queda alguna duda puedo escribir de nuevo sobre este mismo tema?
Responder Con Cita
  #4  
Antiguo 10-02-2015
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Cita:
Empezado por YosvanyRL Ver Mensaje
Gracias por responder tan rapido, ya ahora mismo estoy probandolo.
Gracias miles de nuevo.
Si me queda alguna duda puedo escribir de nuevo sobre este mismo tema?
No hay de qué.

Si la duda es sobre este mismo asunto puedes continuar en este mismo hilo. Si se trata de otro asunto siéntete libre de abrir un nuevo hilo en el foro.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #5  
Antiguo 10-02-2015
YosvanyRL YosvanyRL is offline
Miembro
 
Registrado: may 2012
Posts: 60
Poder: 12
YosvanyRL Va por buen camino
GLibWMI_2.1b

Escribi este codigo exactamente como esta arriba y me salio un error que dice:

Indice fuera de limites (Crear tipo especifico)

Que hago con ese error ahora?

Código Delphi [-]
procedure TMainForm.FormCreate(Sender: TObject); var   I: Integer; begin   // Activamos el componente   USBControllerInfo.Active := True;    // Recorremos los objetos obtenidos   for I := 1 to USBControllerInfo.ObjectsCount do   begin     // Iremos seleccionando uno de los objetos     USBControllerInfo.ObjectIndex := I;      // Una vez seleccionado, podemos acceder a sus propiedades     USBListBox.Items.Add(USBControllerInfo.USBControllerProperties.Caption);   end;
end;
Responder Con Cita
  #6  
Antiguo 10-02-2015
YosvanyRL YosvanyRL is offline
Miembro
 
Registrado: may 2012
Posts: 60
Poder: 12
YosvanyRL Va por buen camino
GLibWMI_2.1b

Ya resolvi el problema del error que le conte anteriormente, y todo funciona perfectamente bien, Gracias una vez mas, pero para cerrar este tema ya sin dudas lo unico que me quedaria por preguntar y si es posible saber como ver el nombre de la memoria que tengo en el puerto. Por ejemplo, mi memoria tiene por nombre "YosvanyUSB", que es como la veo en el explorer, pero cuando me sale la lista de los puertos usb en el listBox lo que veo es "Intel(R0 ICH9 Family USB2 Enhanced host Controler - 293C" o "Intel(R0 ICH9 Family USB2 Universal host Controler - 293C" pero no me sale con el nombre que le puse a la memoria USB en mi caso "YosvanyUSB".
Una vez mas gracias por su ayuda y por favor si no es mucho pedir, tirenme otra ayudita con esto. Pleaseeeeee!!!!!!
Gracias y que tengan buen dia.
Responder Con Cita
  #7  
Antiguo 10-02-2015
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Ahí no sé si voy a poder yo ayudarte, puesto que las propiedades del componente "USB Controllers" son las que tú mismo puedes ver... ignoro si otro componente del paquete de nuestro compañero Neftalí ofrece algo como lo que necesitas, tal vez sí, pero, ahora mismo yo no sabría decirte, la verdad. Espera a ver si algún compañero puede echar una mano.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #8  
Antiguo 10-02-2015
YosvanyRL YosvanyRL is offline
Miembro
 
Registrado: may 2012
Posts: 60
Poder: 12
YosvanyRL Va por buen camino
GLibWMI_2.1b and USB

Bueno muchisimas gracias y si hay una solucion a mi problem please estare esperando porque lo necesito de veraz.
Responder Con Cita
  #9  
Antiguo 11-02-2015
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.272
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Como bien indica dec, utilizando otros componentes del paquete puedes obtener diversa información no sólo de los USB (como dispositivo), sino también de las particiones que cada uno de los discos puede tener creada (puede haber más de una), inclusive los dispositivos removibles como los USB.
Para ello puedes revisar el TDiskDriveInfo y el TDiskPartitionInfo.

Si quieres acceder a alguna clase más, puedes utilizar el componente genérico WMISQL (revisa la demo). Con él puedes ejecutar consultas para relacionar estas clases.

SELECT * FROM Win32_LogicalDisk
Select * From Win32_PnPEntity
Select * From Win32_LogicalDiskToPartition


No me suena que puedas obtener el "FriendlyName" que reo que se llama lo que tú necesitas, pero con la información que obtienes aquí es posible que puedas obtenerla por otros métodos.

Un saludo.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #10  
Antiguo 11-02-2015
YosvanyRL YosvanyRL is offline
Miembro
 
Registrado: may 2012
Posts: 60
Poder: 12
YosvanyRL Va por buen camino
GLibWMI_2.1b and USB

Gracias por todo, ustedes son unos expertos, Graciasssss.
Estube revisando DiskDriveInfo y me parece que es perfectamente lo que necesito aun aunque no tenga el FriendlyName de la memoria. La opcion disk signature pienso que sea el ID Unico de manofactura que no cambia aunque sea formateada la memoria usb porque coji una memoria, le di formato y se mantenia con el mismo numero de Disk Signature, pero por favor de la misma manera usando el DiskDriveInfo de GLibWMI_2.1b como puedo hacer una lista de ellos en un ListBox o ComboBox, y que se anadan igual que en las pestanas del demo(Disk 0, Disk 1, Disk 2) etc y que al seleccionar uno me de su unico ID(disk Signature).
Por favor, lo necesito muchoooooooooo...
Gracias miles y que Dios les bendiga tanto conocimiento y sabiduria.
Responder Con Cita
  #11  
Antiguo 12-02-2015
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.272
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por YosvanyRL Ver Mensaje
...por favor de la misma manera usando el DiskDriveInfo de GLibWMI_2.1b como puedo hacer una lista de ellos en un ListBox o ComboBox, y que se anadan igual que en las pestanas del demo(Disk 0, Disk 1, Disk 2) etc y que al seleccionar uno me de su unico ID(disk Signature).
Revisa los ejemplos que vienen con el paquete. Tienes el código fuente y cómo hacer todo lo que necesitas.
Basta con que actives el componente y recorras los diferentes elementos encontrados.

Para cada uno de ellos añades a la lista la propiedad que te interese.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #12  
Antiguo 12-02-2015
YosvanyRL YosvanyRL is offline
Miembro
 
Registrado: may 2012
Posts: 60
Poder: 12
YosvanyRL Va por buen camino
GLibWMI_2.1b and USB

Hola a todos. He estado toda la manana revisando el demo de diskdriveinfo y no encuentro de ninguna manera como si hay mas de un disco, o el disco duro mas una o dos memorias, ponerlas en un listbox y que al seleccionar una de ellas me de el unico id, u otra propiedad.
Recuerden que no tengo tanto conocimiento y lo que para ustedes es facil para mi puede que sea muy complejo. No tengo el background que ustedes. Por favor si alguien pudiera darme el codigo un poco mas masticado para yo poder digerirlo porque he buscao pero no lo encuentro. Le puse un breakpoint pero es mucho codigo para seguirlo.
Responder Con Cita
  #13  
Antiguo 12-02-2015
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Ahora mismo no cuento con Delphi, pero, el código que buscas debe ser muy, muy similar al mostrado más arriba, sólo que cambiando el nombre del componente. Pero dichos componentes cuentan todos con propiedades como "ObjectsCount", "ObjectIndex", etc. Inténtalo, y, si encuentras algún problema en concreto coméntalo por aquí.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #14  
Antiguo 12-02-2015
YosvanyRL YosvanyRL is offline
Miembro
 
Registrado: may 2012
Posts: 60
Poder: 12
YosvanyRL Va por buen camino
GLibWMI_2.1b and USB

Dec, muchisimas gracias, es como me dijiste funciona igual. Perfecto pero estoy usando
Código Delphi [-]
USBSerialLabel.Caption :=
     DiskDriveInfo1.DiskDriveProperties.SerialNumber;

este es el unico de manofactura que no cambia aunque se formatee, porque ese es el que necesito. Y la propiedad signature, que es, porque no la puedo sacar con

Código Delphi [-]
DiskDriveInfo1.DiskDriveProperties.

Ahhhh Dec, con este mensaje quisiera terminar este tema pues me han ayudado en lo que necesitaba. Estoy muy agradecido de veras.

Quisiera tambien saber que es darse de baja de un tema puesto que recivi algo hablandome sobre eso.
Dec, Gracias por todo y que tengas buen dia.
Responder Con Cita
Respuesta



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


La franja horaria es GMT +2. Ahora son las 19:38:01.


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