powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как средствами VBA MS Access 2000 узнать ...
12 сообщений из 12, страница 1 из 1
Как средствами VBA MS Access 2000 узнать ...
    #32144077
pasha2003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите

как средствами VBA MS Access 2000
можно узнать серийный номер винчестера?
...
Рейтинг: 0 / 0
Как средствами VBA MS Access 2000 узнать ...
    #32144091
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Узнать можно с помощью Win32 API

Код: plaintext
1.
Public 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


Данный номер может меняться как и при смене операционок, так и при форматировании диска.
...
Рейтинг: 0 / 0
Как средствами VBA MS Access 2000 узнать ...
    #32144093
наутилус
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
=)))) прибить программку намертво к винту?? =))))))))))
номер производителя..... (железячный).. не знаю.. сам бы хотел услышать, но можно узнать серийный номер раздела, который даётся при форматировании. но если раздел отформатировать он будет другим

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


Function SN(Drive As String) As Long
Dim i As Long
Dim lpRootPathName As String
Dim lpVolumeNameBuffer As String
Dim nVolumeNameSize As Long
Dim lpVolumeSerialNumber As Long
Dim lpMaximumComponentLength As Long
Dim lpFileSystemFlags As Long
Dim lpFileSystemNameBuffer As String
Dim nFileSystemNameSize As Long

lpRootPathName = Drive + ":\"
lpVolumeNameBuffer = String$(128, 0)
nVolumeNameSize = Len(lpVolumeNameBuffer)
lpVolumeSerialNumber = 0
lpMaximumComponentLength = 0
lpFileSystemFlags = 0
lpFileSystemNameBuffer = String$(128, 0)
nFileSystemNameSize = Len(lpFileSystemNameBuffer)

i = GetVolumeInformation(lpRootPathName, _
lpVolumeNameBuffer, _
nVolumeNameSize, _
lpVolumeSerialNumber, _
lpMaximumComponentLength, _
lpFileSystemFlags, _
lpFileSystemNameBuffer, _
nFileSystemNameSize)

SN = lpVolumeSerialNumber
End Function
...
Рейтинг: 0 / 0
Как средствами VBA MS Access 2000 узнать ...
    #32144096
pasha2003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В том - то и дело, что нужен "железячный" номер для привязки к винту.
...
Рейтинг: 0 / 0
Как средствами VBA MS Access 2000 узнать ...
    #32144103
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
До кучи еще один способ.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Private Sub rel()
'****************************1**************
' Если указать ссылку на библиотеку Microsoft Scripting runtime. Раннее связывание

' Dim F As FileSystemObject 
' Debug.Print F.Drives( "C" ).SerialNumber


'*****************************2**************
' если не указывать ссылку. Позднее связывание

Dim F As Object 
Set F = CreateObject( "Scripting.FileSystemObject" )
Debug.Print F.Drives( "C" ).SerialNumber

End Sub
...
Рейтинг: 0 / 0
Как средствами VBA MS Access 2000 узнать ...
    #32144105
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>В том - то и дело, что нужен "железячный" номер для привязки к винту.

Найдешь - скажи.
А то что нашел я (уже выбросил - так что не проси), требует установки некого драйвера , пару dll-ек и не работает под NT. Херня одним словом.
...
Рейтинг: 0 / 0
Как средствами VBA MS Access 2000 узнать ...
    #32144145
наутилус
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Senin Viktor
где-то я встречал.. что FSO это не совсем гуд =) не везде работает.

да уж. и я видел с длл... но не таскать же её с базой =((((

это вообще возможно из вба обращаться к железу???
...
Рейтинг: 0 / 0
Как средствами VBA MS Access 2000 узнать ...
    #32144189
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 наутилус

>где-то я встречал.. что FSO это не совсем гуд =) не везде работает.

Особенно там, где его нет
В моих прогах ни строчки из FSO - only API. Я так, пример привел для многовариантности. Хотя, если разработка для компании, то почему бы и нет? Разработчик рядом, установщик можно хоть на 1 гигабайт создать вместе с WinXP, офисом. А работать с привычными для VB стилем приятнее. Есть диск - у него свойства такие-то, методы такие-то. ООП одним словом.

>это вообще возможно из вба обращаться к железу???
Через API - Да, хоть к BIOS, но к сожалению не на NT-based systems. Ни дает эта зараза всякому в память и впрерывания лезть, даже read-only. Хотя я могу быть и не прав и существуют какие-либо способы обхода и этого ограничения
...
Рейтинг: 0 / 0
Как средствами VBA MS Access 2000 узнать ...
    #32144212
наутилус
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Особенно там, где его нет
>если разработка для компании, то почему бы и нет?

а потом станет не для компании.. и переделывать заново? =))))
нет уж.. лучше...
>В моих прогах ни строчки из FSO - only API.


>Через API - Да, хоть к BIOS, но к сожалению не на NT-based systems.
но как то же узнаются эти номера.. ?.. другими программами??? уж если винда2000 не пускает.. то она непускает всех.. или я неправ?
...
Рейтинг: 0 / 0
Как средствами VBA MS Access 2000 узнать ...
    #32144240
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>но как то же узнаются эти номера.. ?.. другими программами??? уж если винда2000 не пускает.. то она непускает всех.. или я неправ?

А какие ты программы знаешь, к-ые именно тот номер считают?
А если и считают, то сколько мегабайт они установили в System32?
...
Рейтинг: 0 / 0
Как средствами VBA MS Access 2000 узнать ...
    #32144247
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://vbnet.ru/faq/showtopic.asp?id=227
Вот нашел пример чтения даты БИОСа (по этой технологии можно было бы и номер матери), но...

Код: plaintext
1.
2.
'ВАЖНОЕ ПРИМЕЧАНИЕ: Используйте данный код только в Windows 95/98
'Использование кода в Windows  2000 /NT приводит к краху приложения
...
Рейтинг: 0 / 0
Как средствами VBA MS Access 2000 узнать ...
    #32144283
наутилус
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да уж... Аксес попросил отправить багрепорт =))...
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как средствами VBA MS Access 2000 узнать ...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]