Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут
закрыты.
Читайте
требования к создаваемым темам.
-
cashman
-
- Продвинутый пользователь

-
-
- Сообщения: 152
- Зарегистрирован: 03.06.2004 (Чт) 0:57
- Откуда: Россия, г.Екатеринбург
cashman » 19.01.2005 (Ср) 0:10
как определить HDD с которого запущена программа?
полагаю что как-то через "App.Path"?..
-
deepslam
-
- Бывалый

-

-
- Сообщения: 286
- Зарегистрирован: 19.08.2002 (Пн) 2:25
- Откуда: Russia
deepslam » 19.01.2005 (Ср) 0:15
да, по первой букве:
- Код: Выделить всё
left(app.path,1)
а физически наверное следует взять эту букву и через FSO как нить...

-
cashman
-
- Продвинутый пользователь

-
-
- Сообщения: 152
- Зарегистрирован: 03.06.2004 (Чт) 0:57
- Откуда: Россия, г.Екатеринбург
cashman » 19.01.2005 (Ср) 0:41
этот код работает если стоит 1,2 или 1 физический разделенный на 2 логических.
У меня просто стоит 1 жесткий не могу проверить...
-
deepslam
-
- Бывалый

-

-
- Сообщения: 286
- Зарегистрирован: 19.08.2002 (Пн) 2:25
- Откуда: Russia
deepslam » 19.01.2005 (Ср) 0:47
В общем к тому коду что я тебе дал припиши это:
- Код: Выделить всё
Private Declare Function GetVolumeInformation Lib "kernel32.dll" Alias "GetVolumeInformationA" (ByVal lpRootPathName As String, ByVal lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Integer, lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long) As Long
Function GetSerialNumber(DriveLetter As String) As String
Dim SerialNum As Long
Dim VolNameBuf As String
Dim FileSysNameBuf As String
Select Case Len(DriveLetter)
Case 1
If LCase(DriveLetter) Like "[a-z]" Then
DriveLetter = Left(DriveLetter, 1) & ":\"
Else
GetSerialNumber = "Error - Bad drive designation"
End If
Case 2
If LCase(DriveLetter) Like "[a-z]:" Then
DriveLetter = DriveLetter & "\"
Else
GetSerialNumber = "Error - Bad drive designation"
End If
Case 3
If LCase(DriveLetter) Like "[!a-z]:\" Then
GetSerialNumber = "Error - Bad drive designation"
End If
Case Else
GetSerialNumber = "Error - Bad drive designation"
End Select
If Len(GetSerialNumber) = 0 Then
VolNameBuf = String(255, Chr(0))
FileSysNameBuf = String(255, Chr$(0))
GetVolumeInformation DriveLetter, VolNameBuf, Len(VolNameBuf), SerialNum, 0, 0, FileSysNameBuf, Len(FileSysNameBuf)
GetSerialNumber = Right("00000000" & Hex(SerialNum), 8)
End If
End Function
Private Sub Command1_Click()
MsgBox GetSerialNumber("C:")
End Sub
Этот код определяет серийный номер диска, соответсвенно сравнивай номера, если разные, то и диски разные...Хотя я может че не так понял...
-
cashman
-
- Продвинутый пользователь

-
-
- Сообщения: 152
- Зарегистрирован: 03.06.2004 (Чт) 0:57
- Откуда: Россия, г.Екатеринбург
cashman » 19.01.2005 (Ср) 7:21
дай краткое пояснение по каждому Кейсу...
P.S. все работает как надо, просто хочу разобраться...
Вернуться в Visual Basic 1–6
Кто сейчас на конференции
Сейчас этот форум просматривают: Google-бот, SemrushBot и гости: 3