Ver Mensaje Individual
  #26  
Antiguo 10-09-2012
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Reputación: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Mira a ver si esto te sirve de ayuda:

Código Delphi [-]
function GetDeviceName: String;
var
 hKey: Windows.HKEY;
 Device: ShortString;
 Key: String;
 Count, Len: Cardinal;
begin
 Result:= '';
 RegOpenKey(HKEY_LOCAL_MACHINE, 'SYSTEM\CurrentControlSet\Services\WpdUsb\Enum', hKey);
 RegQueryValueEx(hKey, 'Count', nil, nil, @Count, @Len);
 if Count = 1 then
 begin
   Len:= sizeof(Device);
   RegQueryValueEx(hKey, '0',  nil, nil, @Device[1], @Len);
   Device[0]:= CHAR(Len-1);
   Device:= Copy(Device, Pos('Vid', Device), Pos('Pid_', Device)+7 - Pos('Vid', Device)+1);
   RegCloseKey(hKey);
   Key:= 'SYSTEM\CurrentControlSet\Enum\USB\' + Device;
   RegOpenKey(HKEY_LOCAL_MACHINE, PCHAR(Key), hKey);
   RegEnumKey(hKey, 0, @Device[1], SizeOf(Device) - 1);
   Device[0]:= CHAR(lstrlen(@Device));
   RegCloseKey(hKey);
   RegOpenKey(HKEY_LOCAL_MACHINE, PCHAR(Key + '\' + Device), hKey);
   RegQueryValueEx(hKey, 'Service', nil, nil, @Device[1], @Len);
   RegCloseKey(hKey);
   Device[0]:= CHAR(Len-1);
   RegOpenKey(HKEY_LOCAL_MACHINE, PCHAR('SYSTEM\CurrentControlSet\Services\' + Device), hKey);
   RegCloseKey(hKey);
   Key:= 'SYSTEM\CurrentControlSet\Services\' + Device + '\Enum';
   RegOpenKey(HKEY_LOCAL_MACHINE, PCHAR(Key), hKey);
   RegQueryValueEx(hKey, 'Count', nil, nil, @Count, @Len);
   if Count = 1 then
   begin
     Len:= sizeof(Device);
     RegQueryValueEx(hKey, '0',  nil, nil, @Device[1], @Len);
     Device[0]:= CHAR(Len-1);   // Ahora tenemos el device y el serial
   end;
   RegCloseKey(hKey);
   Key:= 'SYSTEM\CurrentControlSet\Enum\USB\' + Copy(Device, 5, Length(Device)-4) + '\Device Parameters';
   RegOpenKey(HKEY_LOCAL_MACHINE, PCHAR(Key), hKey);
   Len:= sizeof(Device);
   RegQueryValueEx(hKey, 'SymbolicName', nil, nil, @Device[1], @Len);
   RegCloseKey(hKey);
   Device[0]:= CHAR(Len);
   Result:= Device;
   Result[2]:= '\';
   Result[3]:= '.';
 end
 else
   RegCloseKey(hKey);
end;

Su Uso:
Código Delphi [-]
hFile:= CreateFile(PCHAR(GetDeviceName),
                     GENERIC_READ or GENERIC_WRITE,
                     FILE_SHARE_READ or FILE_SHARE_WRITE,
                     nil, 
                     OPEN_EXISTING,
                     FILE_FLAG_WRITE_THROUGH or FILE_FLAG_NO_BUFFERING, 
                     0);


Saludos.
Responder Con Cita