Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Вызов API функции в VBA и vb.Net Добавлено: 11.01.11 22:13  

Автор вопроса:  Anatoly
Вот код (получение серийного номера диска), который работает в VBA:

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) As Long

Sub Main()
    Dim drv As String
    drv = InputBox("Enter drive for checking SN")
    MsgBox Hex$(GetSerialNumber(drv))
End Sub

Public Function GetSerialNumber( _
    ByVal sDrive As String) As Long

    If Len(sDrive) Then
        If InStr(sDrive, "\\") = 1 Then
            ' Make sure we end in backslash for UNC
            If Right$(sDrive, 1) <> "\" Then
                sDrive = sDrive & "\"
            End If
        Else
            ' If not UNC, take first letter as drive
            sDrive = Left$(sDrive, 1) & ":\"
        End If
    Else
        ' Else just use current drive
        sDrive = vbNullString
    End If
    
    ' Grab S/N -- Most params can be NULL
    Call GetVolumeInformation( _
        sDrive, vbNullString, 0, GetSerialNumber, _
        ByVal 0&, ByVal 0&, vbNullString, 0)
End Function


В vb.Net ругается на
ByVal 0&
в Function GetSerialNumber.
пишет, что "требуется выражение"

Как исправить?

Ответить

  Ответы Всего ответов: 4  

Номер ответа: 1
Автор ответа:
 Skywalker



ICQ: 300-70-6пятьЪ 

Вопросов: 62
Ответов: 545
 Web-сайт: iSkywalker.ru
 Профиль | | #1
Добавлено: 12.01.11 03:43
добавляешь библиотеку (Add Reference) System.Management
  1. Imports System.Management
  2. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  3. MsgBox(GetHDDSerialNumber("C"))
  4.     End Sub
  5.     Public Function GetHDDSerialNumber(ByVal drive As String) As String
  6.         Dim disk As ManagementObject = New ManagementObject("win32_logicaldisk.deviceid=""" + drive + ":""")
  7.         disk.Get()
  8.         Return disk("VolumeSerialNumber").ToString()
  9.     End Function

Ответить

Номер ответа: 2
Автор ответа:
 Anatoly



Вопросов: 2
Ответов: 2
 Профиль | | #2 Добавлено: 12.01.11 22:28
Спасибо.

Ответить

Номер ответа: 3
Автор ответа:
 Дмитрий Юпатов



Вопросов: 4
Ответов: 457
 Web-сайт: cargomaster.at.ua/
 Профиль | | #3
Добавлено: 13.01.11 07:29
это типа защита интеллектуальной собственности, да? Тогда не стоит привязываться к номеру логического тома - он меняется на "раз"

Ответить

Номер ответа: 4
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #4 Добавлено: 13.01.11 13:10
привяжись к физическому серийнику.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам