Clipper On Line • Ver Tópico - Acha_PenDrv

Acha_PenDrv

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

 

Acha_PenDrv

Mensagempor Adalberto » 31 Jul 2012 11:55

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
Adalberto
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 343
Data de registro: 01 Set 2007 01:09
Cidade/Estado: Santa Cruz de la Sierra - Bolivia
Curtiu: 0 vez
Mens.Curtidas: 12 vezes

Acha_PenDrv

Mensagempor sygecom » 03 Ago 2012 19:11

Eu uso conforme abaixo, veja se ajuda:

#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
leonardodemachado@hotmail.com

Faça você também sua doação esse fórum é uma lenda viva: http://www.pctoledo.com.br/doacao
Avatar de usuário

sygecom
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 7017
Data de registro: 21 Jul 2006 10:12
Cidade/Estado: Alvorada-RS
Curtiu: 1 vez
Mens.Curtidas: 133 vezes

Acha_PenDrv

Mensagempor Pablo César » 03 Ago 2012 23:24

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: http://www.pctoledo.com.br/forum/filebase.php?c=0&f=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 !
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.
Avatar de usuário

Pablo César
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 5312
Data de registro: 31 Mai 2006 10:22
Cidade/Estado: Curitiba - Paraná
Curtiu: 142 vezes
Mens.Curtidas: 152 vezes

Acha_PenDrv

Mensagempor Adalberto » 04 Ago 2012 00:21

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
Adalberto
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 343
Data de registro: 01 Set 2007 01:09
Cidade/Estado: Santa Cruz de la Sierra - Bolivia
Curtiu: 0 vez
Mens.Curtidas: 12 vezes




Retornar para MiniGui

Quem está online

Usuários vendo este fórum: Google [Bot] e 6 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro