【思途酒店源码】【源码资本新蛋】【脉诊程序源码】枕善居vb源码_枕善而居是什么意思

1.好一点的VB论坛?
2.vb6怎样读取win10下硬盘序列号

枕善居vb源码_枕善而居是枕善什么意思

好一点的VB论坛?

       CSDN www.csdn.net

       VB爱好者乐园 www.vbgood.com

       æž•å–„å±…VB源码博客 www.mndsoft.com

vb6怎样读取win下硬盘序列号

       vb6读取win下硬盘序列号方法如下:

       1、是居v居指硬盘物理序列号,格式化没有变化。源意思思途酒店源码

       2、码枕支持vista 及win系统。枕善源码资本新蛋

       3、居v居脉诊程序源码支持多块硬盘(有的源意思电脑装有几块硬盘)

       4、支持串口及并口硬盘。码枕

       5、枕善最好是居v居源码或dll 等,代码如下:

       Visual Basic code

       '-------------------添加类模块clsMainInfo-------------------------

       Option Explicit

       Private Const VER_PLATFORM_WINS = 0

       Private Const VER_PLATFORM_WIN_WINDOWS = 1

       Private Const VER_PLATFORM_WIN_NT = 2

       Private Const DFP_RECEIVE_DRIVE_DATA = &H7C

       Private Const FILE_SHARE_READ = &H1

       Private Const FILE_SHARE_WRITE = &H2

       Private Const GENERIC_READ = &H

       Private Const GENERIC_WRITE = &H

       Private Const OPEN_EXISTING = 3

       Private Const Create_NEW = 1

       Private Enum HDINFO

           HD_MODEL_NUMBER

           HD_SERIAL_NUMBER

           HD_FIRMWARE_REVISION

       End Enum

       Private Type OSVERSIONINFO

           dwOSVersionInfoSize As Long

           dwMajorVersion As Long

           dwMinorVersion As Long

           dwBuildNumber As Long

           dwPlatformId As Long

           szCSDVersion As String *

       End Type 

       Private Type IDEREGS

           bFeaturesReg As Byte

           bSectorCountReg As Byte

           bSectorNumberReg As Byte

           bCylLowReg As Byte

           bCylHighReg As Byte

           bDriveHeadReg As Byte

           bCommandReg As Byte

           bReserved As Byte

       End Type

       Private Type SENDCMDINPARAMS

           cBufferSize As Long

           irDriveRegs As IDEREGS

           bDriveNumber As Byte

           bReserved(1 To 3) As Byte

           dwReserved(1 To 4) As Long

       End Type 

       Private Type DRIVERSTATUS

           bDriveError As Byte

           bIDEStatus As Byte

           bReserved(1 To 2) As Byte

           dwReserved(1 To 2) As Long

       End Type 

       Private Type SENDCMDOUTPARAMS

           cBufferSize As Long

           DStatus As DRIVERSTATUS

           bBuffer(1 To ) As Byte

       End Type 

       Private Declare Function GetVersionEx _

           Lib "kernel" Alias "GetVersionExA" _

           (lpVersionInformation As OSVERSIONINFO) As Long 

       Private Declare Function CreateFile _

           Lib "kernel" Alias "CreateFileA" _

           (ByVal lpFileName As String,源意思 _

           ByVal dwDesiredAccess As Long, _

           ByVal dwShareMode As Long, _

           ByVal lpSecurityAttributes As Long, _

           ByVal dwCreationDisposition As Long, _

           ByVal dwFlagsAndAttributes As Long, _

           ByVal hTemplateFile As Long) As Long 

       Private Declare Function CloseHandle _

           Lib "kernel" _

           (ByVal hObject As Long) As Long

       Private Declare Function DeviceIoControl _

           Lib "kernel" _

           (ByVal hDevice As Long, _

           ByVal dwIoControlCode As Long, _

           lpInBuffer As Any, _

           ByVal nInBufferSize As Long, _

           lpOutBuffer As Any, _

           ByVal nOutBufferSize As Long, _

           lpBytesReturned As Long, _

           ByVal lpOverlapped As Long) As Long

       Private Declare Sub ZeroMemory _

           Lib "kernel" Alias "RtlZeroMemory" _

           (dest As Any, _

           ByVal numBytes As Long)

       Private Declare Sub CopyMemory _

           Lib "kernel" Alias "RtlMoveMemory" _

           (Destination As Any, _

           Source As Any, _

           ByVal Length As Long)

       Private Declare Function GetLastError _

           Lib "kernel" () As Long

       Private mvarCurrentDrive As Byte

       Private mvarPlatform As String

       Public Function GetModelNumber() As String

           GetModelNumber = CmnGetHDData(HD_MODEL_NUMBER)

       End Function 

       Public Function GetSerialNumber() As String

           GetSerialNumber = CmnGetHDData(HD_SERIAL_NUMBER)

       End Function 

       Public Function GetFirmwareRevision() As String

           GetFirmwareRevision = CmnGetHDData(HD_FIRMWARE_REVISION)

       End Function

       Public Property Let CurrentDrive(ByVal vData As Byte)

           If vData < 0 Or vData > 3 Then

               Err.Raise , , "Illegal Drive Number"

           End If

           mvarCurrentDrive = vData

       End Property

       Public Property Get CurrentDrive() As Byte

           CurrentDrive = mvarCurrentDrive

       End Property

       Public Property Get Platform() As String

           Platform = mvarPlatform

       End Property

       Private Sub Class_Initialize()

           Dim OS As OSVERSIONINFO

           OS.dwOSVersionInfoSize = Len(OS)

           Call GetVersionEx(OS)

           mvarPlatform = "Unk"

           Select Case OS.dwPlatformId

               Case Is = VER_PLATFORM_WINS

                   mvarPlatform = "S"

               Case Is = VER_PLATFORM_WIN_WINDOWS

                   If OS.dwMinorVersion = 0 Then

                       mvarPlatform = "W"

                   Else

                       mvarPlatform = "W"

                   End If

               Case Is = VER_PLATFORM_WIN_NT

                   mvarPlatform = "WNT"

           End Select

       End Sub

       Private Function CmnGetHDData(hdi As HDINFO) As String

           Dim bin As SENDCMDINPARAMS

           Dim bout As SENDCMDOUTPARAMS

           Dim hdh As Long

           Dim br As Long

           Dim ix As Long

           Dim hddfr As Long

           Dim hddln As Long

           Dim s As String

           Select Case hdi

               Case HD_MODEL_NUMBER

                   hddfr =

                   hddln =

               Case HD_SERIAL_NUMBER

                   hddfr =

                   hddln =

               Case HD_FIRMWARE_REVISION

                   hddfr =

                   hddln = 8

               Case Else

                   Err.Raise , "Illegal HD Data type"

           End Select

           Select Case mvarPlatform

               Case "WNT"

                   hdh = CreateFile("\\.\PhysicalDrive" & mvarCurrentDrive, GENERIC_READ + GENERIC_WRITE, FILE_SHARE_READ + FILE_SHARE_WRITE, 0, OPEN_EXISTING, 0, 0)

               Case "W", "W"

                   hdh = CreateFile("\\.\Smartvsd", 0, 0, 0, Create_NEW, 0, 0)

               Case Else

                   Err.Raise , , "Illegal platform (only WNT, W or W)"

           End Select

           If hdh = 0 Then

               Err.Raise , , "Error on CreateFile"

           End If

           ZeroMemory bin, Len(bin)

           ZeroMemory bout, Len(bout)

           With bin

               .bDriveNumber = mvarCurrentDrive

               .cBufferSize =

               With .irDriveRegs

                   If (mvarCurrentDrive And 1) Then

                       .bDriveHeadReg = &HB0

                   Else

                       .bDriveHeadReg = &HA0

                   End If

                   .bCommandReg = &HEC

                   .bSectorCountReg = 1

                   .bSectorNumberReg = 1

               End With

           End With

           DeviceIoControl hdh, DFP_RECEIVE_DRIVE_DATA, bin, Len(bin), bout, Len(bout), br, 0

           s = vbNullString

           For ix = hddfr To hddfr + hddln - 1 Step 2

               If bout.bBuffer(ix + 1) = 0 Then Exit For

               s = s & Chr(bout.bBuffer(ix + 1))

               If bout.bBuffer(ix) = 0 Then Exit For

               s = s & Chr(bout.bBuffer(ix))

           Next ix

           CloseHandle hdh

           CmnGetHDData = Trim(s)

       End Function

       Visual Basic code

       Option Explicit

       '纯vb的获取硬盘序列号代码 (摘自枕善居)

       '窗体放置1个ComBox,命名为cbDrive,1个ListBox,码枕命名为lstMain,一个CommandButton,枕善读者借阅系统源码命名为cmdGo,添加如下代码

       Dim h As clsMainInfo

       Private Sub cmdGo_Click()

           Dim hT As Long

           Dim uW() As Byte

           Dim dW() As Byte

           Dim pW() As Byte 

           Set h = New clsMainInfo

           With h

               .CurrentDrive = Val(cbDrive.Text)

                lstMain.Clear

                lstMain.AddItem "当前驱动器: " & .CurrentDrive

                lstMain.AddItem ""

                lstMain.AddItem "硬盘型号: " & .GetModelNumber

                lstMain.AddItem "序列号: " & .GetSerialNumber

                lstMain.AddItem "固件版本: " & .GetFirmwareRevision

           End With

           Set h = Nothing

       End Sub

       Private Sub Form_Load()

           cbDrive.AddItem 0

           cbDrive.AddItem 1

           cbDrive.AddItem 2

           cbDrive.AddItem 3

           cbDrive.ListIndex = 0

       End Sub

更多内容请点击【焦点】专栏