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

как средствами VBA MS Access 2000
можно узнать серийный номер винчестера?
...
Рейтинг: 0 / 0
18.04.2003, 14:55
    #32144091
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как средствами VBA MS Access 2000 узнать ...
Узнать можно с помощью 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
18.04.2003, 14:56
    #32144093
наутилус
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как средствами VBA MS Access 2000 узнать ...
=)))) прибить программку намертво к винту?? =))))))))))
номер производителя..... (железячный).. не знаю.. сам бы хотел услышать, но можно узнать серийный номер раздела, который даётся при форматировании. но если раздел отформатировать он будет другим

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
18.04.2003, 15:01
    #32144096
pasha2003
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как средствами VBA MS Access 2000 узнать ...
В том - то и дело, что нужен "железячный" номер для привязки к винту.
...
Рейтинг: 0 / 0
18.04.2003, 15:03
    #32144103
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как средствами VBA MS Access 2000 узнать ...
До кучи еще один способ.

Код: 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
18.04.2003, 15:06
    #32144105
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как средствами VBA MS Access 2000 узнать ...
>В том - то и дело, что нужен "железячный" номер для привязки к винту.

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

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

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

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

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

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

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


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

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

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


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