Retroceder   Foros del Web > Temas generales de computación > Programación

Respuesta
 
Herramientas Desplegado
Antiguo 25-oct-2004, 00:08   #1 (permalink)
marcos1979 está en el buen camino
 
Avatar de marcos1979
 
Fecha de Ingreso: abril-2004
Ubicación: 62º 06' 18" O / 33º 07' 47" S
Mensajes: 331
Pregunta Obtener el nº de serie del disco duro en VB 6

Eso, como puedo obtener el número de serie del disco duro???
El numero que quiero es el del disco físico y no el del volumen.
Con esto se obtiene el numero de serie del volumen pero yo quiero el del disco, ese que viene impreso en la etiqueta del disco... se entiende???
Se que hay programas que te lo dan por lo que se puede obtener... pero como???
Me canse de buscar y no encuentro nada... solo preguntas como esta

Aca va el codigo para sacar el numero de serie del VOLUMEN:

Private Declare Function GetVolumeSerialNumber 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
Public Function VolumeSerialNumber(ByVal RootPath As String) As String
Dim VolLabel As String
Dim VolSize As Long
Dim Serial As Long
Dim MaxLen As Long
Dim Flags As Long
Dim Name As String
Dim NameSize As Long
Dim s As String
If GetVolumeSerialNumber(RootPath, VolLabel, VolSize, Serial, MaxLen, Flags, Name, NameSize) Then
'Crea una cadena de 8 caracteres
s = Format(Hex(Serial), "00000000")
'Agregar el caracter '-' entre los 4 primeros caracteres y los últimos 4 caracteres
VolumeSerialNumber = Left(s, 4) + "-" + Right(s, 4)
Else
'Si la llamada a la función API falla debe retornar un número de serie lleno de ceros
VolumeSerialNumber = "0000-0000"
End If
End Function
Private Sub Command1_Click()
MsgBox VolumeSerialNumber("C:\") 'Muestra el numero de serie de un disco duro
End Sub


Gracias
marcos1979 está desconectado   Responder Citando
Antiguo 25-oct-2004, 08:29   #2 (permalink)
Colaborador
GeoAvila llegará a ser famoso muy prontoGeoAvila llegará a ser famoso muy prontoGeoAvila llegará a ser famoso muy pronto
 
Avatar de GeoAvila
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 3.869
Enviar un mensaje por MSN a GeoAvila Enviar un mensaje por Yahoo  a GeoAvila Enviar un mensaje por Skype™ a GeoAvila
bueno este es el codigo que yo uso..

Código:
Private Declare Function GetVolumeInformation& Lib "kernel32" Alias 
"GetVolumeInformationA" (ByVal lpRootPathName As String, 
ByVal pVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, 
lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, 
lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, 
ByVal nFileSystemNameSize As Long)

Private Sub Form_Load()
  Dim cad1 As String * 256
  Dim cad2 As String * 256
  Dim numSerie As Long
  Dim longitud As Long
  Dim flag As Long
  unidad = "D:\"
  Call GetVolumeInformation(unidad, cad1, 256, numSerie, longitud, 
  flag, cad2, 256)
  MsgBox "Label de la unidad " & unidad & " = " & cad1
End Sub
espero te sirva...

nos vemos..
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com
GeoAvila está desconectado   Responder Citando
Antiguo 25-oct-2004, 11:21   #3 (permalink)
marcos1979 está en el buen camino
 
Avatar de marcos1979
 
Fecha de Ingreso: abril-2004
Ubicación: 62º 06' 18" O / 33º 07' 47" S
Mensajes: 331
Gracias pero tambien me devuelve el numero de serie del volumen y no del disco fisico.
O sea, si mi disco tiene dos PARTICIONES, estas funciones me devuelven DOS NUMEROS DISTINTOS para cada particion, lo que quiero es que me devuelvan UN MISMO NUMERO correspondiente al numero e serie del disco fisico, se entiende???
Gracias igual por tu ayuda, no se si es posible hacer lo que pido.
marcos1979 está desconectado   Responder Citando
Antiguo 25-oct-2004, 11:42   #4 (permalink)
2Fast To You ha deshabilitado el karma
 
Fecha de Ingreso: septiembre-2003
Ubicación: Santo Domingo - R. Dominicana
Mensajes: 594
Enviar un mensaje por MSN a 2Fast To You Enviar un mensaje por Yahoo  a 2Fast To You
No, creeo que se pueda pues el No. de Serie de cada HDD lo da el Fabricanta a la hora de estar listo el Disco Duro es decir despeus que alla pasado por control de calidad si realmente lo hacen

Ademas eso lo ponen solo por Fiera en el Papelito que esta pegado a el. Nada de Software lo detecta

Saludos
2Fast To You está desconectado   Responder Citando
Antiguo 25-oct-2004, 11:46   #5 (permalink)
marcos1979 está en el buen camino
 
Avatar de marcos1979
 
Fecha de Ingreso: abril-2004
Ubicación: 62º 06' 18" O / 33º 07' 47" S
Mensajes: 331
Ok, pero se de aplicaciones que si lo muestran, quizas trabajen muy a bajo nivel y VB no lo pueda conseguir, pero si se puede obtener. Creo que el Everest te lo dá.
Gracias igual
marcos1979 está desconectado   Responder Citando
Antiguo 25-oct-2004, 11:48   #6 (permalink)
jrp01 está en el buen camino
 
Avatar de jrp01
 
Fecha de Ingreso: mayo-2004
Ubicación: México
Mensajes: 2.704
Enviar un mensaje por MSN a jrp01
Pues creo que esto buscas:

Pon 3 cajas de texto llamadas te(0),te(1),te(2),te(3)

Un boton llamado: co1

y pon este codigo:

Option Explicit
DefSng A: DefByte B: DefDbl D: DefInt C, E: DefBool F: DefLng G-L: DefStr M-Z

Private Declare Function MapPhysToLin Lib "WinIo.dll" (ByVal PhysAddr As Long, ByVal PhysSize As Long, ByRef PhysMemHandle) As Long
Private Declare Function UnmapPhysicalMemory Lib "WinIo.dll" (ByVal PhysMemHandle, ByVal LinAddr) As Boolean
Private Declare Function GetPhysLong Lib "WinIo.dll" (ByVal PhysAddr As Long, ByRef PhysVal As Long) As Boolean
Private Declare Function SetPhysLong Lib "WinIo.dll" (ByVal PhysAddr As Long, ByVal PhysVal As Long) As Boolean
Private Declare Function GetPortVal Lib "WinIo.dll" (ByVal PortAddr As Integer, ByRef PortVal As Long, ByVal bSize As Byte) As Boolean
Private Declare Function SetPortVal Lib "WinIo.dll" (ByVal PortAddr As Integer, ByVal PortVal As Long, ByVal bSize As Byte) As Boolean
Private Declare Function InitializeWinIo Lib "WinIo.dll" () As Boolean
Private Declare Function ShutdownWinIo Lib "WinIo.dll" () As Boolean

'Important
'On Win 2000/Xp if there are other program using Winio.dll.
'This program will alway result 0.

'On Win 2000/Xp
'if you don't want to clash you need Winio.sys

Private Sub Co1_Click()
Dim s1, s2, f1, i1
For i1 = 0 To 3
f1 = Readsec(i1, s1, s2)
If f1 = True Then te(i1).Text = s1 & vbCrLf & s2
Next
End Sub

Private Sub Form_Load()
Call InitializeWinIo
'Need for Win 2000/xp
End Sub

Private Sub Form_Unload(Cancel As Integer)
Call ShutdownWinIo
'Need for Win 2000/xp
End Sub

'Important
'f1 = GetPortVal(0, 0, 1) <-- Get byte data
'f1 = GetPortVal(0, 0, 2) <-- Get interger data

Function Readsec(ByVal j1, s1, s2) As Boolean
Dim i0, i1, i2, k1(1 To 50), f1

Const HDC_DATA = &H1F0
Const HDC_SDH = &H1F6
Const HDC_STATUS = &H1F7
Const HDC_COMMAND = &H1F7
Const HDC_COMMAND_READPAR = &HEC
Const HDC_STATUS_BUSY = &H80
Const HDC_FIXED_RESET = &H4

Select Case j1
Case 0: i0 = &H1F0 'Primary
Case 1: i0 = &H1F0 'Primary
Case 2: i0 = &H170 'Secondary
Case 3: i0 = &H170 'Secondary
End Select

If (j1 Mod 2) = 0 Then
f1 = SetPortVal(i0 + 6, &HA0, 1) 'Master
Else
f1 = SetPortVal(i0 + 6, &HB0, 1) 'Slave
End If
f1 = SetPortVal(i0 + 7, &HEC, 1) 'Send command to Hd

'Wait until Hd ready
Do
f1 = GetPortVal(i0 + 7, i1, 2)
If (i1 And &H1) = &H1 Then i1 = 255: Exit Do 'error
If (i1 Mod 255) = 0 Then i1 = 255: Exit Do 'error
If (i1 And &H80) = 0 Then Exit Do 'Ok
Loop

'Or use this code instead above code

'Wait until Hd ready
'For i1 = 1 To 10000
'Next

s1 = "": s2 = ""
If i1 = 255 Then Readsec = False: GoTo ooen

'Reading
'i0 is BaseAddress
For i1 = 1 To 50
f1 = GetPortVal(i0, k1(i1), 2)
Next

For i1 = 1 To 50
i2 = k1(i1) Mod 256
s2 = s2 + Chr((k1(i1) - i2) / 256)
s2 = s2 + Chr(i2)
Next
s1 = Mid(s2, 55, 40) 'Model
s2 = Mid(s2, 21, 20) 'Serial Number

f1 = SetPortVal(i0 + 7, &H4, 1) 'Clear state Hd
Readsec = True

ooen:
End Function


Ahora ve a http://www.internals.com/

Y bajas winio es un zip lo descomprimes y los archivos los pegas en system estos son:

winio.dll
winio.vxd
winio.sys

Este codigo lo encontre ya hace algun tiempo(que bueno que no lo borre)


Saludos
jrp01 está desconectado   Responder Citando
Antiguo 25-oct-2004, 11:49   #7 (permalink)
2Fast To You ha deshabilitado el karma
 
Fecha de Ingreso: septiembre-2003
Ubicación: Santo Domingo - R. Dominicana
Mensajes: 594
Enviar un mensaje por MSN a 2Fast To You Enviar un mensaje por Yahoo  a 2Fast To You
Una Pregunta.

Y los .dll son obligatorios Ponerlo en System ??

Ya que si instalamos un Programa en otra Pc que no tiene esos .dll

Que se hace ??

Saludos
2Fast To You está desconectado   Responder Citando
Antiguo 25-oct-2004, 11:56   #8 (permalink)
jrp01 está en el buen camino
 
Avatar de jrp01
 
Fecha de Ingreso: mayo-2004
Ubicación: México
Mensajes: 2.704
Enviar un mensaje por MSN a jrp01
pues los empaquetas junto con la aplicacion.

Yo los puse en la carpeta del programa y no funciono me imagino que debe estar incluida la en la path del sistema.
jrp01 está desconectado   Responder Citando
Antiguo 25-oct-2004, 11:58   #9 (permalink)
2Fast To You ha deshabilitado el karma
 
Fecha de Ingreso: septiembre-2003
Ubicación: Santo Domingo - R. Dominicana
Mensajes: 594
Enviar un mensaje por MSN a 2Fast To You Enviar un mensaje por Yahoo  a 2Fast To You
No me deja ponerle el nombre a los textbox me dice Nombre Inválido:

te(0)
te(1)
te(2)
te(3)

Saludos
2Fast To You está desconectado   Responder Citando
Antiguo 25-oct-2004, 12:08   #10 (permalink)
jrp01 está en el buen camino
 
Avatar de jrp01
 
Fecha de Ingreso: mayo-2004
Ubicación: México
Mensajes: 2.704
Enviar un mensaje por MSN a jrp01
Bueno pon un text con el nombre de te.

copialo y pegalo en el form te va a preguntar que si deseas crear una matriz dile que si

Y vuelvelo a pegar para que tengas 3
jrp01 está desconectado   Responder Citando
Antiguo 25-oct-2004, 12:13   #11 (permalink)
2Fast To You ha deshabilitado el karma
 
Fecha de Ingreso: septiembre-2003
Ubicación: Santo Domingo - R. Dominicana
Mensajes: 594
Enviar un mensaje por MSN a 2Fast To You Enviar un mensaje por Yahoo  a 2Fast To You
Amigo, asta ahora todo bien.

pero cuando le doy al Botón no hace nada y el Boton tiene puesto el Codigo y el Nombre

Saludos
2Fast To You está desconectado   Responder Citando
Antiguo 25-oct-2004, 12:18   #12 (permalink)
jrp01 está en el buen camino
 
Avatar de jrp01
 
Fecha de Ingreso: mayo-2004
Ubicación: México
Mensajes: 2.704
Enviar un mensaje por MSN a jrp01
El boton se llama co1?

El nombre no su caption
jrp01 está desconectado   Responder Citando
Antiguo 25-oct-2004, 12:21   #13 (permalink)
2Fast To You ha deshabilitado el karma
 
Fecha de Ingreso: septiembre-2003
Ubicación: Santo Domingo - R. Dominicana
Mensajes: 594
Enviar un mensaje por MSN a 2Fast To You Enviar un mensaje por Yahoo  a 2Fast To You
si se llama así
2Fast To You está desconectado   Responder Citando
Antiguo 25-oct-2004, 12:23   #14 (permalink)
jrp01 está en el buen camino
 
Avatar de jrp01
 
Fecha de Ingreso: mayo-2004
Ubicación: México
Mensajes: 2.704
Enviar un mensaje por MSN a jrp01
En el evento click si tiene es te codigo.

Private Sub Co1_Click()
Dim s1, s2, f1, i1
For i1 = 0 To 3
f1 = Readsec(i1, s1, s2)
If f1 = True Then te(i1).Text = s1 & vbCrLf & s2
Next
End Sub


Si no te mando el codigo por correo
jrp01 está desconectado   Responder Citando
Antiguo 25-oct-2004, 12:29   #15 (permalink)
2Fast To You ha deshabilitado el karma
 
Fecha de Ingreso: septiembre-2003
Ubicación: Santo Domingo - R. Dominicana
Mensajes: 594
Enviar un mensaje por MSN a 2Fast To You Enviar un mensaje por Yahoo  a 2Fast To You
Si, yo le doy y no hace nada no me tira ningun numero para los textbox

Saludos
2Fast To You está desconectado   Responder Citando
Antiguo 25-oct-2004, 12:30   #16 (permalink)
2Fast To You ha deshabilitado el karma
 
Fecha de Ingreso: septiembre-2003
Ubicación: Santo Domingo - R. Dominicana
Mensajes: 594
Enviar un mensaje por MSN a 2Fast To You Enviar un mensaje por Yahoo  a 2Fast To You
mi email es

adrill1@hotmail.com

Si quieers agregame a tu MSN

Saludos

Última edición por 2Fast To You; 25-oct-2004 a las 12:32.
2Fast To You está desconectado   Responder Citando
Antiguo 25-oct-2004, 21:15   #17 (permalink)
marcos1979 está en el buen camino
 
Avatar de marcos1979
 
Fecha de Ingreso: abril-2004
Ubicación: 62º 06' 18" O / 33º 07' 47" S
Mensajes: 331
Gracias!!!!! parece que funciona y puse los archivos en la ruta de la aplicacion
marcos1979 está desconectado   Responder Citando
Antiguo 26-oct-2004, 11:07   #18 (permalink)
marcos1979 está en el buen camino
 
Avatar de marcos1979
 
Fecha de Ingreso: abril-2004
Ubicación: 62º 06' 18" O / 33º 07' 47" S
Mensajes: 331
Hola otra vez, la verdad que funciona perfecto. Ahora necesito saber en cual de los discos esta instalada la aplicacion. Con app.path puede averiguar cual es el volumen (C, D, etc) pero no se en cual disoc estaria.
Gracias de antemano
marcos1979 está desconectado   Responder Citando
Respuesta

Calificación: Calificación de Tema: 1 votos, 5,00 de promedio.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 16:17.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93