edu4rdo 0 Denunciar post Postado Novembro 17, 2005 Gurizada, tô precisando pegar o modelo do HD, CD-ROM... então, alguém sabe como pegar o nome de um dispositivo??? :unsure: Tentei o GetVolumeInformation, porém esta me retorna o nome lógico... Valeu!!! Compartilhar este post Link para o post Compartilhar em outros sites
lenn0n 0 Denunciar post Postado Novembro 17, 2005 Não sei se isso serve pra o q você está querendo... http://forum.imasters.com.br/public/style_emoticons/default/ermm.gif to mandando uma biblioteca para lidar com hardware q tem um MONTE de coisas relativas a diskdrives. É uma unit, você poe ela no seu projeto e coloca ela na uses do form q vai usá-la espero que te ajude http://forum.imasters.com.br/public/style_emoticons/default/joia.gif att Thales { Objeto...: Biblioteca para operações com disk-drives. Categoria: Open-Source Autor....: Daniel Pereira Guimarães E-mail...: tecnobyte@ulbrajp.com.br Home-Page: www.ulbrajp.com.br/~tecnobyte Revisão..: 21 de Fevereiro de 2001} unit tbDskDrv; interface uses Windows, SysUtils; type TtbDriveType = (dtUnknown, dtNotExist, dtRemovable, dtFixed, dtRemote, dtCdRom, dtRamDisk, dtError); TtbVolInfo = record Name: string; Serial: Cardinal; IsCompressed: boolean; MaxCompLen: Cardinal; FileSysName: string; end; { Retorna o número do drive: A=1, B=2, C=3, etc. }function tbDriveByte(const Drive: Char): byte;{ Retorna true se o drive existe }function tbDriveExists(const Drive: Char): boolean;{ Retorna true se o drive está preparado }function tbDriveIsOk(const Drive: Char): boolean;{ Retorna uma string contendo as letras de unidades de existentes }function tbDriveLetters: string;{ Retorna o tipo do drive. Veja TtbDriveType }function tbDriveType(const Drive: Char; Path: PChar): TtbDriveType;{ Retorna o nome de volume de uma unidade }function tbVolName(const Drive: Char; Path: PChar): string;{ Retorna o número serial de uma unidade }function tbVolSerial(const Drive: Char; Path: PChar): Cardinal;{ Retorna informações diversas sobre uma unidade. Veja TtbVolInfo }function tbVolInfo(const Drive: Char; Path: PChar): TtbVolInfo; implementation { *** Drives *** }function tbDriveByte(const Drive: Char): byte; { Uso: X := tbDriveByte('C') }begin if Drive = #0 then Result := 0 else Result := Ord(UpCase(Drive)) - 64;end; function tbDriveExists(const Drive: Char): boolean; { Uso: if tbDriveExists('A') then ... }begin Result := Pos(UpCase(Drive), tbDriveLetters) > 0;end; function tbDriveIsOk(const Drive: Char): boolean; { Uso: if tbDriveIsOk('A') then ... }begin Result := SysUtils.DiskSize(tbDriveByte(Drive)) >= 0;end; function tbDriveLetters: string; { Uso: S := tbDriveLetters; - retorna 'ACD' se existir as unidades A:, C: e D: } var Drives: LongWord; I: byte;begin Result := ''; Drives := GetLogicalDrives; if Drives <> 0 then for I := 65 to 90 do if ((Drives shl (31 - (I - 65))) shr 31) = 1 then Result := Result + Char(I);end; function tbDriveType(const Drive: Char; Path: PChar): TtbDriveType; { Uso: T := tbDriveType; --- T é do tipo TtbDriveType }begin if Path = nil then Path := PChar(Drive + ':\'); case Windows.GetDriveType(PChar(Path)) of 0: Result := dtUnknown; 1: Result := dtNotExist; DRIVE_REMOVABLE: Result := dtRemovable; DRIVE_FIXED: Result := dtFixed; DRIVE_REMOTE: Result := dtRemote; DRIVE_CDROM: Result := dtCdRom; DRIVE_RAMDISK: Result := dtRamDisk; else Result := dtError; end;end; function tbVolName(const Drive: Char; Path: PChar): string; { Uso: S := tbVolName('A', nil); ou S := tbVolName(#0, '\\computador\c\'); }var MaxCompLen, FileSysFlag, PrevErrorMode: Cardinal;begin if Path = nil then Path := PChar(Drive + ':\'); SetLength(Result, 255); PrevErrorMode := SetErrorMode(SEM_FAILCRITICALERRORS); try if GetVolumeInformation( PChar(Path), PChar(Result), 255, nil, MaxCompLen, FileSysFlag, nil, 0) then Result := string(PChar(Result)) else Result := ''; finally SetErrorMode(PrevErrorMode); end;end; function tbVolSerial(const Drive: Char; Path: PChar): Cardinal; { Uso: S := tbVolSerial('A', nil); ou S := tbVolSerial(#0, '\\computador\c\'); }var MaxCompLen, FileSysFlag, PrevErrorMode: Cardinal;begin if Path = nil then Path := PChar(Drive + ':\'); PrevErrorMode := SetErrorMode(SEM_FAILCRITICALERRORS); try if not GetVolumeInformation(PChar(Path), nil, 0, @Result, MaxCompLen, FileSysFlag, nil, 0) then Result := 0; finally SetErrorMode(PrevErrorMode); end;end; function tbVolInfo(const Drive: Char; Path: PChar): TtbVolInfo; { Uso: Info := tbVolInfo('A', nil); ou Info := tbVolInfo(#0, '\\computador\c\'); }const cVolNameLen = 255; cSysNameLen = 255;var Flags, PrevErrorMode: Cardinal;begin if Path = nil then Path := PChar(Drive + ':\'); SetLength(Result.Name, cVolNameLen); SetLength(Result.FileSysName, cSysNameLen); PrevErrorMode := SetErrorMode(SEM_FAILCRITICALERRORS); try if GetVolumeInformation(Path, PChar(Result.Name), cVolNameLen, @Result.Serial, Result.MaxCompLen, Flags, PChar(Result.FileSysName), cSysNameLen) then begin Result.Name := string(PChar(Result.Name)); Result.FileSysName := string(PChar(Result.FileSysName)); Result.IsCompressed := (Flags and FS_VOL_IS_COMPRESSED) > 0; end else begin Result.Name := ''; Result.Serial := 0; Result.IsCompressed := false; Result.MaxCompLen := 0; Result.FileSysName := ''; end; finally SetErrorMode(PrevErrorMode); end;end; end. Compartilhar este post Link para o post Compartilhar em outros sites
edu4rdo 0 Denunciar post Postado Novembro 17, 2005 Não sei se isso serve pra o q você está querendo... http://forum.imasters.com.br/public/style_emoticons/default/ermm.gif to mandando uma biblioteca para lidar com hardware q tem um MONTE de coisas relativas a diskdrives. É uma unit, você poe ela no seu projeto e coloca ela na uses do form q vai usá-la espero que te ajude http://forum.imasters.com.br/public/style_emoticons/default/joia.gif att Thales Thales, valeu pela ajuda... mas essa biblioteca usa a mesma função que citei (GetVolumeInformation), que retorna o nome do volume lógico... http://forum.imasters.com.br/public/style_emoticons/default/blush.gif Sabes se tem como pegar o nome do dispositivo??? Valeu!!! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
lenn0n 0 Denunciar post Postado Novembro 17, 2005 hmm... :wacko: verdade, agora q eu reparei... bem... não sei não kra...tem um cara q tava fazendo uns esquemas de pegar o nome da placa de vídeo aih nos posts anteriores, da uma pesquisada no forum e tenta entrar em contato com ele, de repente ele sabe...valeu?[]'s Compartilhar este post Link para o post Compartilhar em outros sites