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
Moderador: Moderadores
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Acha_PenDrv
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
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Acha_PenDrv
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=1Adalberto 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?
Muchas gracias, igualmente a todos los de buen corazón !Jehova bendiga tu trabajo, te prospere y guarde, asi tambien a tus queridos; esa es mi oración.
Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
-
Adalberto
- Usuário Nível 3

- Mensagens: 343
- Registrado em: 01 Set 2007 01:09
- Localização: Santa Cruz de la Sierra - Bolivia
Acha_PenDrv
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
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