Página 1 de 1

Acha_PenDrv

Enviado: 31 Jul 2012 11:55
por Adalberto
Pablo César,

Dilecto amigo, encontré una función , adaptada por vos, para detectar la presencia, o ausencia, de un pendrive conectado a algun puerto USB, lo he probado y funciona muy bien, te agradezco muchisimo la contribución.

Estoy interesado en poder saber que pendrive es el que está instalado, tal vez por el numero de serie o por alguna caracteristica especial del dispositivo, ¿podrias ayudarme con esto?

Jehova bendiga tu trabajo, te prospere y guarde, asi tambien a tus queridos; esa es mi oración.

[] Adalberto

Acha_PenDrv

Enviado: 03 Ago 2012 19:11
por sygecom
Eu uso conforme abaixo, veja se ajuda:

Código: Selecionar todos

#define DRIVE_UNKNOWN     0
#define DRIVE_NO_ROOT_DIR 1
#define DRIVE_REMOVABLE   2
#define DRIVE_FIXED       3
#define DRIVE_REMOTE      4
#define DRIVE_CDROM       5
#define DRIVE_RAMDISK     6

************************
FUNCTION UNIDADECORRENTE
************************
Local vRET := .T.
IF TipoUnidade(MY_GetDriveType(DiskName()+":")) ="DRIVE_NO_ROOT_DIR"
   IF MsgYesNo("É Altamente recomendavel Utilizar o Mapeando de Unidade para Utilizar o sistema em Rede, Deseja Tentar Mapear Agora ?","Aviso do Sistema")
      NetCancel("Z:")
      NetRedir( "Z:", Substr(Nomeexecutavel(.t.),1,(len(Nomeexecutavel(.t.))- len(Nomeexecutavel()))-1 ) )
      IF CRIAR_ATALHO()=.F.
         MsgStop("Não Foi Possivel Criar o Atalho do sistema na Area de Trabalho, Favor puxar o atalho da Unidade Z:\ que se encontra em MEU COMPUTADOR","Aviso do Sistema")
      ELSE
         MsgInfo("O Sistema Criou um Atlho novo na Area de Trabalho, Favor sair e entrar no sistema novamente","Aviso do Sistema")
      ENDIF
   ENDIF
ELSEIF TipoUnidade(MY_GetDriveType(DiskName()+":")) ="DRIVE_CDROM"
   MsgStop("Não é possivel utilizar o sistema a partir de uma Unidade de CD-ROM, Favor instalar o sistema em uma unidade Fixa","Aviso do Sistema")
   vRET := .F.
ELSEIF TipoUnidade(MY_GetDriveType(DiskName()+":")) ="DRIVE_RAMDISK"
   MsgStop("É Altamente recomendavel Utilizar Discos Fixos para utilização, instalação e Atualizações do Sistema, Favor revisar","Aviso do Sistema")
   vRET := .F.
ELSEIF TipoUnidade(MY_GetDriveType(DiskName()+":")) ="DRIVE_REMOVABLE"
   MsgStop("É Altamente recomendavel Utilizar Discos Fixos para utilização, instalação e Atualizações do Sistema, Favor revisar","Aviso do Sistema")
   vRET := .F.
ENDIF
Return(vRET)

// Função TipoUnidade:
// Obtém a descrição do tipo da unidade, à partir do valor obtido
// com a função MY_GetDriveType.
*************************************
Function TipoUnidade ( nTipo )
*************************************
   Local cTipo := ""

   Do Case
   Case nTipo == DRIVE_UNKNOWN     ; cTipo := "DRIVE_UNKNOWN"
   Case nTipo == DRIVE_NO_ROOT_DIR ; cTipo := "DRIVE_NO_ROOT_DIR" // REDE NÃO MAPEADA
   Case nTipo == DRIVE_REMOVABLE   ; cTipo := "DRIVE_REMOVABLE"   // DISCO REMOVIVEL
   Case nTipo == DRIVE_FIXED       ; cTipo := "DRIVE_FIXED"       // FIXO
   Case nTipo == DRIVE_REMOTE      ; cTipo := "DRIVE_REMOTE"      // REDE MAPEADA
   Case nTipo == DRIVE_CDROM       ; cTipo := "DRIVE_CDROM"       // LEITOR DE CD-ROOM
   Case nTipo == DRIVE_RAMDISK     ; cTipo := "DRIVE_RAMDISK"     // PEN-DRIVER
   EndCase
Return cTipo

#pragma BEGINDUMP

#include <windows.h>
#include <hbapi.h>

HB_FUNC ( GETLOGICALDRIVES )
{
   hb_retnl( (DWORD) GetLogicalDrives() );
}

HB_FUNC ( MY_GETDRIVETYPE )
{
   hb_retni( (UINT) GetDriveType(hb_parc(1)) );
}
#pragma ENDDUMP

********************************************************************************
***********VEREFICA O NOME DO EXECUTAVEL E O CAMINHO DO MESMO*******************
*NomeExecutavel()    // verefica o nome
*NomeExecutavel(.t.) // verefica o caminho
********************************************************************************
FUNCTION NOMEEXECUTAVEL(lPath)
LOCAL nPos, cRet
If Empty(lpath)
   nPos:= RAT("\", hb_argv(0))
   cRet:= substr(hb_argv(0), nPos+1)
else
   cRet:= hb_argv(0)
endif
Return cRet


Acha_PenDrv

Enviado: 03 Ago 2012 23:24
por Pablo César
Adalberto escreveu:Estoy interesado en poder saber que pendrive es el que está instalado, tal vez por el numero de serie o por alguna caracteristica especial del dispositivo, ¿podrias ayudarme con esto?
En la primera version, ya estaba mostrando el LABEL de la unidad. Pero si deseas una otra identificación a más, poderias adicionar el VOLSERIAL que retornará el número de série de la unidad formatada. Disponibilizé otra version que muestra el número y el Hexadecimal que aparece con el comando VOL del sistema operativo. Puedes bajar desde aqui: https://pctoledo.org/forum/fileba ... 169&page=1
Jehova bendiga tu trabajo, te prospere y guarde, asi tambien a tus queridos; esa es mi oración.
Muchas gracias, igualmente a todos los de buen corazón !

Acha_PenDrv

Enviado: 04 Ago 2012 00:21
por Adalberto
Caros amigos, Leonardo e Pablo César.

Muito obrigado com vocês por dar-me o privilegio de contar com sua ajuda. Vou testar os exemplos disponibilizados e retornarei os resultados.

Pablo César sei que você e todos os colegas do foro são pessoas de bom coração; por isso minhas orações e suplicas a nosso bondoso Deus é para todos. Especialmente os moderadores que além de seus conhecimentos também compartilham seu tempo. (e o tempo é ouro).

Muito agradecido.

[] Adalberto