elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Problemas con GetDriveType
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problemas con GetDriveType  (Leído 1,667 veces)
Sancho.Mazorka


Desconectado Desconectado

Mensajes: 480


Gamer & Programador


Ver Perfil WWW
Problemas con GetDriveType
« en: 3 Agosto 2007, 05:40 am »

Hola gente tengo un problema, necesito distinguir entre una Disketera y un Pen Drive o Data Traveler, pero la unica forma de hacerlo es con esta API que devuelve a las 2 como removible pero quisiera poder diferenciarlos:

Código
  1. Private Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long
  2. Private Sub Form_Load()
  3.    'KPD-Team 1998
  4.    'URL: http://www.allapi.net/
  5.    'E-Mail: KPDTeam@Allapi.net
  6.    'Set the graphic mode to persistent
  7.    Me.AutoRedraw = True
  8.    'Get information about the C:\
  9.    Select Case GetDriveType("C:\")
  10.        Case 2
  11.            Me.Print "Removable"
  12.        Case 3
  13.            Me.Print "Drive Fixed"
  14.        Case Is = 4
  15.            Me.Print "Remote"
  16.        Case Is = 5
  17.            Me.Print "Cd-Rom"
  18.        Case Is = 6
  19.            Me.Print "Ram disk"
  20.        Case Else
  21.            Me.Print "Unrecognized"
  22.    End Select
  23. End Sub
  24.  

Alguien sabe como diferenciar Disketera de Pen Drive ? Lo necesito por favor!


Sancho.Mazorka    :¬¬


« Última modificación: 3 Agosto 2007, 05:42 am por Sancho.Mazorka » En línea

Ganador Xeon Web Server ! ! !    Sancho.Mazorka :D
http://foro.elhacker.net/index.php/topic,171903.75.html


LeandroA
Moderador
***
Desconectado Desconectado

Mensajes: 760


www.leandroascierto.com


Ver Perfil WWW
Re: Problemas con GetDriveType
« Respuesta #1 en: 3 Agosto 2007, 15:52 pm »

hola puedes compara el tamaño por lo general un pendrive es mayor a 1457664 bytes y es "FAT" esto mas que nada para ver si esta el disco puesto (la disquetera)


Código:
Private Declare Function GetVolumeInformation Lib "kernel32" Alias "GetVolumeInformationA" (ByVal lpRootPathName As String, ByVal lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long) As Long
Private Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long
Private Declare Function GetLogicalDriveStrings Lib "kernel32" Alias "GetLogicalDriveStringsA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
Private Declare Function GetDiskFreeSpaceEx Lib "kernel32" Alias "GetDiskFreeSpaceExA" (ByVal lpRootPathName As String, lpFreeBytesAvailableToCaller As Long, lpTotalNumberOfBytes As Long, lpTotalNumberOfFreeBytes As Long) As Long


Private Sub RecuperarDiscoExtraible()
Dim strSave As String
Dim Drive As String
Dim Removible As String
Dim totalbytes As Long
Dim FSName As String

strSave = String(255, Chr$(0))

ret& = GetLogicalDriveStrings(255, strSave)

For keer = 1 To 100
    If Left$(strSave, InStr(1, strSave, Chr$(0))) = Chr$(0) Then Exit For
    Drive = Left$(strSave, InStr(1, strSave, Chr$(0)) - 1)

    If GetDriveType(Drive) = 2 Then
        Removible = Drive
        FSName = String$(255, Chr$(0))
   
        GetVolumeInformation Removible, 255, 255, 255, 0, 0, FSName, 255
     
        FSName = Left$(FSName, InStr(1, FSName, Chr$(0)) - 1)
   
        Call GetDiskFreeSpaceEx(Removible, 255, totalbytes, 255)
        If totalbytes <> 1457664 And FSName = "FAT" Then Me.Print Drive
    End If

    strSave = Right$(strSave, Len(strSave) - InStr(1, strSave, Chr$(0)))
Next keer

End Sub

 


Private Sub Form_Load()
Me.AutoRedraw = True
Call RecuperarDiscoExtraible
End Sub


Saludos

yo no lo prove con un pendrive sino con un celular pero supongo que es lo mismo


En línea

Sancho.Mazorka


Desconectado Desconectado

Mensajes: 480


Gamer & Programador


Ver Perfil WWW
Re: Problemas con GetDriveType
« Respuesta #2 en: 4 Agosto 2007, 05:08 am »

Funciona perfectamente, pero te equivocaste en la asignacion mira:
Código
  1. If totalbytes <> 1457664 And FSName = "FAT" Then Me.Print Drive
A mi me funciono cuando le coloque FAT32
Código
  1. If totalbytes <> 1457664 And FSName = "FAT32" Then Me.Print Drive
Muchas gracias y aprendi algo nuevo, todos los pen drive son FAT32  ;D


Sancho.Mazorka    :¬¬
« Última modificación: 4 Agosto 2007, 05:11 am por Sancho.Mazorka » En línea

Ganador Xeon Web Server ! ! !    Sancho.Mazorka :D
http://foro.elhacker.net/index.php/topic,171903.75.html


Red Mx
Rojito
Colaborador
***
Desconectado Desconectado

Mensajes: 3.649


Viva México Cabrones...


Ver Perfil WWW
Re: Problemas con GetDriveType
« Respuesta #3 en: 4 Agosto 2007, 05:46 am »

Muchas gracias y aprendi algo nuevo, todos los pen drive son FAT32  ;D

No de echo cuando los compras nuevos bienen en FAT ( bueno los que yo eh visto kingston y otras marcas) fat y fat32 las tienes como opciones en el windows cuando formateas el dispositivo de almacenamiento USB, aunque tengo entendido que tambien le puedes poner NTFS

En línea

Desarrollar Malware Es Causa De Cancer...
Sancho.Mazorka


Desconectado Desconectado

Mensajes: 480


Gamer & Programador


Ver Perfil WWW
Re: Problemas con GetDriveType
« Respuesta #4 en: 4 Agosto 2007, 06:08 am »

Pero no es conveniente ponerlo como NTFS, ya que trae conflictos y no se puede extrar segun lo que lei. Por lo menos hasta ahora funciona ese code  :P


Sancho.Mazorka    :¬¬
En línea

Ganador Xeon Web Server ! ! !    Sancho.Mazorka :D
http://foro.elhacker.net/index.php/topic,171903.75.html


LeandroA
Moderador
***
Desconectado Desconectado

Mensajes: 760


www.leandroascierto.com


Ver Perfil WWW
Re: Problemas con GetDriveType
« Respuesta #5 en: 4 Agosto 2007, 11:23 am »

hola lo de FAT era por si la disquetera estaba basia entonces iva a ser <> 1457664 osea
= 0 pero o podes poner FSName = "FAT" or FSName = "FAT32" or FSName = "NTFS"

o bien si es > 1457664

En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines