Страница: 1 |
Страница: 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 ругается на
пишет, что "требуется выражение"
Как исправить?
Ответы
Всего ответов: 4
Номер ответа: 1
Автор ответа:
Skywalker
ICQ: 300-70-6пятьЪ
Вопросов: 62
Ответов: 545
Web-сайт:
Профиль | | #1
Добавлено: 12.01.11 03:43
добавляешь библиотеку (Add Reference) System.Management
Номер ответа: 2
Автор ответа:
Anatoly
Вопросов: 2
Ответов: 2
Профиль | | #2
Добавлено: 12.01.11 22:28
Спасибо.
Номер ответа: 3
Автор ответа:
Дмитрий Юпатов
Вопросов: 4
Ответов: 457
Web-сайт:
Профиль | | #3
Добавлено: 13.01.11 07:29
это типа защита интеллектуальной собственности, да? Тогда не стоит привязываться к номеру логического тома - он меняется на "раз"
Номер ответа: 4
Автор ответа:
AgentFire
ICQ: 192496851
Вопросов: 75
Ответов: 3178
Профиль | | #4
Добавлено: 13.01.11 13:10
привяжись к физическому серийнику.