Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-02-2013
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.437
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 MAXIUM Ver Mensaje
Era solo para que no copiasen la aplicación de un pendrive a otro.
Al final si que vas a acertar con el comentario...
__________________
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
  #2  
Antiguo 15-02-2013
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 23
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
darkbits,

Cita:
Empezado por darkbits
...como sacar el ID unico del pendriver por mas que se llege a formatear...
Revisa este código:
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, FileCtrl, StrUtils, ActiveX, ComObj, XPMan;

type
  TForm1 = class(TForm)
    ListBox1: TListBox;
    Button2: TButton;
    procedure Button2Click(Sender: TObject);
    procedure ListBox1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function VarStrNull(const V:OleVariant):string; //avoid issues with null variants
begin
   Result:='';
   if not VarIsNull(V) then
      Result:=VarToStr(V);
end;

// Obtiene el Número de Serial un Drive USB por medio de la propiedad PnPDeviceID de Windows Management Instrumentation (WMI)
function GetUsbDriveSerial(const Drive : AnsiChar) : string;
var
   FSWbemLocator : OleVariant;
   objWMIService : OLEVariant;
   colDiskDrives : OLEVariant;
   colLogicalDisks : OLEVariant;
   colPartitions : OLEVariant;
   objDiskDrive : OLEVariant;
   objPartition : OLEVariant;
   objLogicalDisk : OLEVariant;
   oEnumDiskDrive : IEnumvariant;
   oEnumPartition : IEnumvariant;
   oEnumLogical : IEnumvariant;
   iValue : LongWord;
   DeviceID : string;

begin;

   Result:='';

   FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
   objWMIService := FSWbemLocator.ConnectServer('.', 'root\CIMV2', '', '');
   colDiskDrives := objWMIService.ExecQuery('SELECT * FROM Win32_DiskDrive WHERE InterfaceType="USB"','WQL',0);
   oEnumDiskDrive:= IUnknown(colDiskDrives._NewEnum) as IEnumVariant;

   while oEnumDiskDrive.Next(1, objDiskDrive, iValue) = 0 do
   begin

      //Escape the `\` chars in the DeviceID value because the '\' is a reserved character in WMI.
      DeviceID := StringReplace(VarStrNull(objDiskDrive.DeviceID),'\','\\',[rfReplaceAll]);

      //link the Win32_DiskDrive class with the Win32_DiskDriveToDiskPartition class
      colPartitions := objWMIService.ExecQuery(Format('ASSOCIATORS OF {Win32_DiskDrive.DeviceID="%s"} WHERE AssocClass = Win32_DiskDriveToDiskPartition',[DeviceID]));

      oEnumPartition := IUnknown(colPartitions._NewEnum) as IEnumVariant;

      while oEnumPartition.Next(1, objPartition, iValue) = 0 do
      begin

         //link the Win32_DiskPartition class with theWin32_LogicalDiskToPartition class.
         colLogicalDisks := objWMIService.ExecQuery('ASSOCIATORS OF {Win32_DiskPartition.DeviceID="'+VarStrNull(objPartition.DeviceID)+'"} WHERE AssocClass = Win32_LogicalDiskToPartition');

         oEnumLogical := IUnknown(colLogicalDisks._NewEnum) as IEnumVariant;

         while oEnumLogical.Next(1, objLogicalDisk, iValue) = 0 do
         begin

            if SameText(VarStrNull(objLogicalDisk.DeviceID),Drive+':')  then //compare the device id
            begin

               Result := VarStrNull(objDiskDrive.PnPDeviceID);

               if AnsiStartsText('USBSTOR', Result) then
               begin
                  iValue := LastDelimiter('\', Result);
                  Result := Copy(Result, iValue+1, Length(Result));
               end;

               objLogicalDisk:=Unassigned;

               Exit;

            end;

            objLogicalDisk:=Unassigned;

         end;

         objPartition:=Unassigned;

      end;

      objDiskDrive:=Unassigned;

   end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
   Drive : Char;
begin
   ListBox1.Clear;
   for Drive := 'A'  to 'Z' do
      if GetDriveType(PChar(Drive + ':\')) = DRIVE_REMOVABLE then
         ListBox1.Items.Add(UpperCase(Drive));
end;

procedure TForm1.ListBox1Click(Sender: TObject);
var
  Drive : String;
begin
   Drive := ListBox1.Items.Strings[ListBox1.ItemIndex];
   ShowMessage('USB Serial Number : ' + GetUsbDriveSerial(Drive[1]));
end;

end.
El ejemplo anterior lista las unidades removibles del sistema en un control TListBox y muestra el serial de cada una de ellas al ser seleccionadas por medio del evento OnClick.

El código fuente del ejemplo esta disponible en el link : http://terawiki.clubdelphi.com/Delph...ial+Number.rar

El ejemplo mostrado esta basado en el código encontrado en el link : http://stackoverflow.com/questions/4...sb-flash-drive

Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 15-02-2013 a las 19:11:27.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
imagen que funcione como boton onystam Gráficos 8 03-11-2008 17:42:14
Delphi4PHP Cómo hago que me funcione el TabOrder maximo_nashir PHP 4 31-08-2007 05:47:32
Que versión de php necesito para que funcione en mi server lo que hago el Delphi4php cooper PHP 3 01-05-2007 04:21:46
como hago que un edit solo entren numeros lazarous Varios 1 24-02-2005 14:56:22
Boton que funcione como Backspace Julio César Varios 1 15-05-2003 21:15:06


La franja horaria es GMT +2. Ahora son las 06:39:28.


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