Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: Как найти в системе установленные флешдиски? Добавлено: 07.10.09 10:22  

Автор вопроса:  Aleksandr | ICQ: 226010443 
Как найти в системе установленные флешдиски?

Ответить

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

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



Вопросов: 4
Ответов: 457
 Web-сайт: cargomaster.at.ua/
 Профиль | | #1
Добавлено: 07.10.09 10:59
в код пустой формы кидаем:
  1. Public Class Form1
  2.     Dim Mylb As New System.Windows.Forms.ListBox
  3.  
  4.     Private Sub Removable_drv()
  5.         Dim drv As System.IO.DriveInfo
  6.         For Each drv In My.Computer.FileSystem.Drives
  7.             If drv.DriveType = IO.DriveType.Removable And drv.IsReady = True Then
  8.                 Me.Mylb.Items.Add(drv.Name & " - " & drv.DriveFormat)
  9.             End If
  10.         Next
  11.     End Sub
  12.  
  13.     Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
  14.         Me.Mylb.Dock = DockStyle.Fill
  15.         Me.Controls.Add(Me.Mylb)
  16.         Me.Removable_drv()
  17.     End Sub
  18. End Class


На форме разместится листбокс, в котором отобразятся только съемные диски, причем готовые, т.е. флоппик без дискеты проигнорируется. А вообще, штатными средствами vb.net нельзя (наверное) узнать тип съемного диска (usb или флопик). Вот: http://msdn.microsoft.com/ru-ru/library/system.io.drivetype.aspx

Ответить

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



Вопросов: 4
Ответов: 457
 Web-сайт: cargomaster.at.ua/
 Профиль | | #2
Добавлено: 07.10.09 11:30
 
а вот еще:
  1. Public Class Form1
  2.     Dim WithEvents dgw As New System.Windows.Forms.DataGridView
  3.  
  4.     Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
  5.         Me.dgw.Dock = DockStyle.Fill
  6.         Me.Controls.Add(Me.dgw)
  7.         dgw.DataSource = My.Computer.FileSystem.Drives
  8.     End Sub
  9.  
  10.     Private Sub dgw_DataError(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewDataErrorEventArgs) Handles dgw.DataError
  11.         'обрабатываем событие, чтоб не вылетало ошибок.
  12.     End Sub
  13. End Class

тоже пустая форма. Тут мы видим всю информацию, которую можно получить о дисках
ну и хотелось бы знать, для какой версии-то код надо? Я дал для .net

Ответить

Номер ответа: 3
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #3 Добавлено: 07.10.09 13:04
А если ему на vb6 надо?

Ответить

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



Вопросов: 4
Ответов: 457
 Web-сайт: cargomaster.at.ua/
 Профиль | | #4
Добавлено: 07.10.09 13:22
хз... потому и спросил

Ответить

Номер ответа: 5
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #5 Добавлено: 07.10.09 13:37
Для VB6 через FSO аналогично первому примеру.

Ответить

Номер ответа: 6
Автор ответа:
 Aleksandr



ICQ: 226010443 

Вопросов: 7
Ответов: 2
 Профиль | | #6 Добавлено: 07.10.09 13:38
Да действительно код нужен для VB6.

Ответить

Номер ответа: 7
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #7 Добавлено: 07.10.09 14:14
Нужно подключить File System Object в референсах
  1. Private WshFSO As New FileSystemObject
  2.  
  3. Sub RefreshInfo()
  4.     Dim Disk As Drive
  5.  
  6.     For Each Disk In WshFSO.Drives
  7.         If Disk.DriveType = Removable Then msgbox Disk.Path
  8.     Next
  9. End Sub

Ответить

Номер ответа: 8
Автор ответа:
 AndreyMp



ICQ: 237822510 

Вопросов: 28
Ответов: 1182
 Профиль | | #8 Добавлено: 07.10.09 15:52
  1. strComputer = "."
  2. Set objWMIService = GetObject("winmgmts:" _
  3.     & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
  4. Set colDisks = objWMIService.ExecQuery _
  5.     ("Select * from Win32_LogicalDisk")
  6. For Each objDisk in colDisks
  7.     Wscript.Echo "DeviceID: "& vbTab &  objDisk.DeviceID
  8.     If objDisk.DriveType=2 then
  9.        MsgBox "DriveType: "& vbTab &  "Removable"
  10.     end if
  11. Next

:)

Ответить

Номер ответа: 9
Автор ответа:
 AndreyMp



ICQ: 237822510 

Вопросов: 28
Ответов: 1182
 Профиль | | #9 Добавлено: 07.10.09 15:55
Блин, вместо этого
  1. Wscript.Echo "DeviceID: "& vbTab &  objDisk.DeviceID

Тоже
  1. MsgBox "DeviceID: "& vbTab &  objDisk.DeviceID
Со скрипта скопипастил. :)

Ответить

Номер ответа: 10
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #10
Добавлено: 08.10.09 00:30
  1. Option Explicit
  2. Private Declare Function GetLogicalDriveStrings Lib "kernel32" Alias "GetLogicalDriveStringsA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
  3. Private Declare Function GetDriveType Lib "kernel32.dll" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long
  4. 'Private Const DRIVE_UNKNOWN As Long = 0
  5. 'Private Const DRIVE_NO_ROOT_DIR As Long = 1
  6. Private Const DRIVE_REMOVABLE As Long = 2
  7. 'Private Const DRIVE_FIXED As Long = 3
  8. 'Private Const DRIVE_REMOTE As Long = 4
  9. Private Const DRIVE_CDROM As Long = 5
  10. 'Private Const DRIVE_RAMDISK As Long = 6
  11.  
  12. Private mLetters(25) As String * 3
  13. Private mCount As Long
  14.  
  15. Public Sub GetRemDriveLetters()
  16.     Dim DrivesStr As String 'lpBuffer
  17.     Dim DrivesStrLen As Long 'nBufferLength
  18.     Dim DrivesArr() As String 'ALL Drives Array
  19.     Dim drvType As Long '= GetDriveType
  20.     Dim i As Long
  21.  
  22.     mCount = 0
  23.  
  24.     DrivesStrLen = GetLogicalDriveStrings(0, vbNullString)
  25.     DrivesStr = Space(DrivesStrLen)
  26.     Call GetLogicalDriveStrings(DrivesStrLen, DrivesStr)
  27.     DrivesArr = Split(DrivesStr, vbNullChar)
  28.      
  29.     For i = 0 To UBound(DrivesArr) - 2
  30.         Select Case GetDriveType(DrivesArr(i))
  31.         Case DRIVE_REMOVABLE ', DRIVE_CDROM
  32.             mLetters(mCount) = DrivesArr(i)
  33.             mCount = mCount + 1
  34.         End Select
  35.     Next
  36. End Sub

Ответить

Номер ответа: 11
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #11 Добавлено: 08.10.09 00:45
Хардкорщик-наркоман :-D

Ответить

Номер ответа: 12
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #12
Добавлено: 08.10.09 02:14
не люблю референсы, люблю апи) кстати как-то странно сделал. Функция - паблик, а массив mLetters - прайват

Ответить

Номер ответа: 13
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #13 Добавлено: 08.10.09 03:25
Копипастил на скорую руку, вот и не заметил :).
А АПИ реально рулит, не зряж и в новейших виндах всё новые и новые функции появляются.

Ответить

Номер ответа: 14
Автор ответа:
 UnDeAdZak



Вопросов: 80
Ответов: 476
 Профиль | | #14 Добавлено: 08.10.09 18:02
Рулит не АПИ а .NET!!!

Ответить

Номер ответа: 15
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #15
Добавлено: 08.10.09 18:25
да нет, рулят опыт и хорошие идеи

Ответить

Страница: 1 | 2 |

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



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