Определение аппаратной конфигурации персонального компьютера - VB

Узнай цену своей работы

Формулировка задачи:

Суть программы:Написать программу определения аппаратной конфигурации персонального компьютера.
Листинг программы
  1. Private Sub Form_Load()
  2. Progress.Show
  3. Call SB_Sveden
  4. Progress.Hide
  5. End Sub
  6. Private Sub Form_Unload(Cancel As Integer)
  7. End
  8. End Sub
  9. Private Sub Command1_Click()
  10. SubK$ = "Hardware\Description\System\CentralProcessor\0"
  11. On Error GoTo Noread
  12. ProcID$ = HV1.RegCtrl1.RReadValue(HK$, SubK$, "Identifier")
  13. Noread: On Error Resume Next
  14. On Error GoTo Noread1
  15. ProcMMX$ = HV1.RegCtrl1.RReadValue(HK$, SubK$, "MMXIdentifier")
  16. Noread1: On Error Resume Next
  17. On Error GoTo Noread2
  18. VendorID$ = HV1.RegCtrl1.RReadValue(HK$, SubK$, "VendorIdentifier")
  19. Noread2: Err.Clear
  20. CpInst$ = ""
  21. If Coproc Then CpInst$ = "Сопроцессор встроенный"
  22. Box1 = ProcID$ & vbCrLf & ProcMMX$ & vbCrLf & VendorID$ & vbCrLf & " "
  23. & vbCrLf & CpInst$
  24. On Error GoTo 0
  25. End Sub
  26. Private Sub Command1_MouseMove(Button As Integer, Shift As Integer, X As
  27. Single, Y As Single)
  28. Label1.Caption = "Информация о центральном процессоре."
  29. End Sub
  30. Private Sub Command2_Click()
  31. Call B_Text(2)
  32. End Sub
  33. Private Sub Command2_MouseMove(Button As Integer, Shift As Integer, X As
  34. Single, Y As Single)
  35. Label1.Caption = "Информация о системной плате."
  36. End Sub
  37. Private Sub Command3_Click()
  38. Dim clsMem As New clsMemorySnapshot
  39. Box1 = "Объём физической памяти : " & Format(clsMem.TotalMemory \
  40. 1024, "###,###,###,###,##0") & " KB" & vbCrLf & "Свободно
  41. : " & Format(clsMem.FreeMemory \ 1024, "###,###,###,###,##0")
  42. & " KB*" & vbCrLf
  43. End Sub
  44. Private Sub Command3_MouseMove(Button As Integer, Shift As Integer, X As
  45. Single, Y As Single)
  46. Label1.Caption = "Информация о памяти."
  47. End Sub
  48. Private Sub Command4_Click()
  49. ms = MsgBox("Рекомендуется вставить диски во все дисководы.", vbOKCancel,
  50. "ВНИМАНИЕ!")
  51. GetDiskInfo
  52. Box1 = ""
  53. For Ka = 1 To n
  54. tc$ = Str((BytesPerSec(Ka) * SecsPerClus(Ka) * TotalNumOfClus(Ka) / 1000) /
  55. 1000)
  56. fc$ = Str((BytesPerSec(Ka) * SecsPerClus(Ka) * NumOfFreeClus(Ka) / 1000) /
  57. 1000)
  58. Box1 = Box1 & "Информация о диске: " & Drives(Ka) & vbCrLf & _
  59. "Метка тома: " & VNBuffer(Ka) & vbCrLf & _
  60. "Файловая система: " & vSysBuff(Ka) & vbCrLf & _
  61. "Серийный номер: " & vSerialNum(Ka) & vbCrLf & _
  62. "Тип диска: " & TypeOfDrive(Ka) & vbCrLf & _
  63. "Общее количество кластеров: " & TotalNumOfClus(Ka) & vbCrLf & _
  64. "Количество свободных кластеров: " & NumOfFreeClus(Ka) & vbCrLf & _
  65. "Секторов в кластере: " & SecsPerClus(Ka) & vbCrLf & _
  66. "Байтов в секторе: " & BytesPerSec(Ka) & vbCrLf & _
  67. "Емкость: " & tc$ & "mb" & vbCrLf & _
  68. "Свободно: " & fc$ & "mb" & vbCrLf & " " & vbCrLf
  69. Next
  70. End Sub
  71. Private Sub Command4_MouseMove(Button As Integer, Shift As Integer, X As
  72. Single, Y As Single)
  73. Label1.Caption = "Информация о дисках."
  74. End Sub
  75. Private Sub Command5_Click()
  76. Call B_Text(5)
  77. End Sub
  78. Private Sub Command5_MouseMove(Button As Integer, Shift As Integer, X As
  79. Single, Y As Single)
  80. Label1.Caption = "Информация о установленных адаптерах (звук, видео,
  81. модем и т.д.)."
  82. End Sub
  83. Private Sub Command6_Click()
  84. Call B_Text(6)
  85. End Sub
  86. Private Sub Command6_MouseMove(Button As Integer, Shift As Integer, X As
  87. Single, Y As Single)
  88. Label1.Caption = "Информация о устройствах ввода/вывода (монитор,
  89. клавиатура, принтер и т.д.)."
  90. End Sub
  91. Sub B_Text(Comm As Integer)
  92. Select Case Comm
  93. Case 2
  94. l = 0
  95. k = k0
  96. Case 5
  97. l = 2
  98. k = k2
  99. Case 6
  100. l = 1
  101. k = k1
  102. End Select
  103. For i = 1 To k
  104. s$ = s$ + (Sv(l, i) & vbCrLf)
  105. Next i
  106. Box1 = s$
  107. End SubPrivate Sub Form_Load()
  108. DrawWidth = 3
  109. End SubPublic Declare Function GetDiskFreeSpace Lib "kernel32" Alias
  110. "GetDiskFreeSpaceA" (ByVal lpRootPathName As String, lpSectorsPerCluster As
  111. Long, lpBytesPerSector As Long, lpNumberOfFreeClusters As Long,
  112. lpTotalNumberOfClusters As Long) As Long
  113. Public Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA"
  114. (ByVal nDrive As String) As Long
  115. Public Declare Function GetVolumeInformation Lib "kernel32" Alias
  116. "GetVolumeInformationA" (ByVal lpRootPathName As String, ByVal
  117. lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Long,
  118. lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long,
  119. lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal
  120. nFileSystemNameSize As Long) As Long
  121. Public Sv(2, 1000) As String
  122. Public Coproc As Boolean
  123. Public X1, X2, Y1, dX As Integer
  124. Public k0 As Integer
  125. Public k1 As Integer
  126. Public k2 As Integer
  127. Public Const HK$ = "HKEY_LOCAL_MACHINE"
  128. Public cpuspd As Long
  129. Public FF As Boolean
  130. Public Drives(100) As String
  131. Public n
  132. Public Ka
  133. Public vSerialNum(100) As Long
  134. Public vCompLen(100) As Long
  135. Public vFlags(100) As Long
  136. Public vSysBuff(100) As String
  137. Public vSysSize(100) As Long
  138. Public SecsPerClus(100) As Long
  139. Public BytesPerSec(100) As Long
  140. Public NumOfFreeClus(100) As Long
  141. Public TotalNumOfClus(100) As Long
  142. Public TypeOfDrive(100) As String
  143. Public VNBuffer(100) As String
  144. Public VNSize(100) As Long
  145. Public Const DRIVE_CDROM = 5
  146. Public Const DRIVE_FIXED = 3
  147. Public Const DRIVE_RAMDISK = 6
  148. Public Const DRIVE_REMOTE = 4
  149. Public Const DRIVE_REMOVABLE = 2
  150. Sub SB_Sveden()
  151. Dim mDir(1000), mDir1, mStr, mDDir(100) As String
  152. Dim mClass, nClass(1000) As String
  153. Dim s, s1 As String
  154. Dim a As Integer
  155. X1 = Progress.Line1.X1: X2 = Progress.Line1.X2
  156. Y1 = Progress.Line1.Y1
  157. ChDir ("C:\WINDOWS\INF")
  158. mDDir(0) = "C:\Windows\INF\"
  159. mDTMP = Dir(mDDir(0), vbDirectory)
  160. i = 0
  161. Do While mDTMP <> ""
  162. If mDTMP <> "." And mDTMP <> ".." Then
  163. If (GetAttr(mDDir(0) & mDTMP) And vbDirectory) = vbDirectory
  164. Then
  165. i = i + 1: mDDir(i) = mDTMP
  166. End If
  167. End If
  168. mDTMP = Dir
  169. Loop
  170. On Error GoTo EndFindINF
  171. For j = 1 To i
  172. mDir1 = Dir("C:\Windows\INF\" + mDDir(j) + "\*.inf")
  173. While mDir1 <> ""
  174. a = a + 1
  175. mDir(a) = mDDir(0) + mDDir(j) + "\" + mDir1
  176. mDir1 = Dir()
  177. Wend
  178. Next j
  179. mDir1 = Dir("C:\WINDOWS\INF\*.inf")
  180. While mDir1 <> ""
  181. a = a + 1
  182. mDir(a) = mDDir(0) + mDir1
  183. mDir1 = Dir()
  184. Wend
  185. EndFindINF:
  186. Err.Clear
  187. dX = (X2 - X1) / a
  188. For i = 1 To a
  189. On Error GoTo 0
  190. Open mDir(i) For Input As #1
  191. XE = X1 + (dX * i)
  192. Progress.Line (X1, Y1)-(XE, Y1), &H8000000D
  193. f = 0
  194. sClFind:
  195. If Not (EOF(1)) And f = 0 Then
  196. Input #1, mClass
  197. If Mid(mClass, 1, 5) = "Class" And (Mid(mClass, 6, 1) = "=" Or
  198. Mid(mClass, 6, 1) = " ") Then
  199. a1 = a1 + 1: f = 1
  200. mClass = Mid(mClass, 7)
  201. For j = 1 To Len(mClass)
  202. mStr = Mid(mClass, j, 1)
  203. If mStr <> " " And mStr <> "=" And mStr <> Chr(34) Then
  204. nClass(a1) = nClass(a1) + mStr
  205. Next j
  206. For j = 1 To a1 - 1
  207. s = StrConv(nClass(a1), vbLowerCase)
  208. s1 = StrConv(nClass(j), vbLowerCase)
  209. If s = s1 Then nClass(a1) = "": a1 = a1 - 1: f = 0: Exit
  210. For
  211. Next j
  212. If f = 1 Then
  213. If nClass(a1) <> "DiskDrive" And nClass(a1) <> "NetClient"
  214. And nClass(a1) <> "NetService" And nClass(a1) <> "NetTrans" And nClass(a1)
  215. <> "CDROM" Then Call FClassCH(nClass(a1))
  216. End If
  217. Else: GoTo sClFind
  218. End If
  219. End If
  220. Close #1
  221. Next i
  222. End Sub
  223. Sub FClassCH(FClass As String)
  224. Num$ = "\0000"
  225. For i = 0 To 1999
  226. tmp$ = Mid(Str(i), 2)
  227. tmp1 = Len(tmp$)
  228. Mid(Num$, 6 - tmp1, tmp1) = tmp$
  229. SubK$ = "System\CurrentControlSet\Services\Class\" + FClass + Num$
  230. On Error GoTo NoDev
  231. DDesc$ = HV1.RegCtrl1.RReadValue(HK$, SubK$, "DriverDesc")
  232. On Error GoTo 0
  233. If i = 0 Then
  234. DD$ = " "
  235. Call GroupDev(FClass, DD$, "")
  236. SubK$ = "System\CurrentControlSet\Services\Class\" + FClass
  237. DD$ = HV1.RegCtrl1.RReadValue(HK$, SubK$, "")
  238. Call GroupDev(FClass, DD$, "")
  239. DD$ = String(70, "-")
  240. Call GroupDev(FClass, DD$, "")
  241. End If
  242. If DDesc$ <> "Coprocessor" And DDesc$ <> "Сопроцессор" Then Call
  243. GroupDev(FClass, DDesc$, Num$) Else Coproc = True
  244. NoDev: If Err <> 0 Then Exit For
  245. Next i
  246. Err.Clear
  247. End Sub
  248. Sub GroupDev(DClass, DDsc, Nm As String)
  249. If DClass = "System" Or DClass = "fdc" Or DClass = "hdc" Or DClass =
  250. "Infrared" Then k0 = k0 + 1: Sv(0, k0) = DDsc: Exit Sub
  251. If DClass = "MTD" Or DClass = "MultiFunction" Or DClass = "PCMCIA" Or
  252. DClass = "Ports" Then k0 = k0 + 1: Sv(0, k0) = DDsc: Exit Sub
  253. If DClass = "USB" Then k0 = k0 + 1: Sv(0, k0) = DDsc: Exit Sub
  254. If DClass = "Monitor" Or DClass = "Keyboard" Or DClass = "Mouse" Or
  255. DClass = "Printer" Then k1 = k1 + 1: Sv(1, k1) = DDsc: Exit Sub
  256. SubK$ = "System\CurrentControlSet\Services\Class\" + DClass + Nm
  257. On Error GoTo NoMD
  258. MDId$ = HV1.RegCtrl1.RReadValue("HKEY_LOCAL_MACHINE", SubK$,
  259. "MatchingDeviceId")
  260. On Error GoTo 0
  261. If Mid(MDId$, 1, 3) = "PCI" Then DDsc = "(PCI) " + DDsc
  262. If Mid(MDId$, 1, 6) = "ISAPNP" Then DDsc = "(ISA) " + DDsc
  263. NoMD:
  264. k2 = k2 + 1: Sv(2, k2) = DDsc
  265. Err.Clear
  266. End Sub
  267. Sub GetDiskInfo()
  268. n = 0
  269. For i = 65 To 90
  270. If GetDriveType(Chr$(i) & ":" & "\") <> 1 Then n = n + 1: Drives(n) =
  271. Chr$(i) & ":" & "\"
  272. Next i
  273. For i = 1 To n
  274. Call GetDiskFreeSpace(Drives(i), SecsPerClus(i), BytesPerSec(i),
  275. NumOfFreeClus(i), TotalNumOfClus(i))
  276. Select Case GetDriveType(Drives(i))
  277. Case DRIVE_CDROM
  278. TypeOfDrive(i) = "CD-ROM"
  279. Case DRIVE_REMOVABLE
  280. TypeOfDrive(i) = "Floppy disk"
  281. Case DRIVE_FIXED
  282. TypeOfDrive(i) = "Hard disk drive"
  283. Case DRIVE_RAMDISK
  284. TypeOfDrive(i) = "Virtual disk"
  285. Case DRIVE_REMOTE
  286. TypeOfDrive(i) = "Net disk"
  287. Case Else
  288. End Select
  289. Next
  290. For i = 1 To n
  291. VNBuffer(i) = Space$(255)
  292. VNSize(i) = 255
  293. vSysBuff(i) = Space$(255)
  294. vSysSize(i) = 255
  295. vFlags(i) = 0
  296. vCompLen(i) = 255
  297. vSerialNum(i) = 255
  298. lRet = GetVolumeInformation(Drives(i), VNBuffer(i), VNSize(i),
  299. vSerialNum(i), vCompLen(i), vFlags(i), vSysBuff(i), vSysSize(i))
  300. If lRet = 1 Then VNBuffer(i) = Left$(VNBuffer(i), Len(RTrim$(VNBuffer(i)))
  301. - 1): vSysBuff(i) = Left$(vSysBuff(i), Len(RTrim$(vSysBuff(i))) - 1):
  302. vSerialNum(i) = Left$(vSerialNum(i), Len(RTrim$(vSerialNum(i))) - 1)
  303. If lRet = False Then VNBuffer(i) = "None": vSysBuff(i) = "None"
  304. Next
  305. End SubOption Explicit
  306. Private Type MEMORYSTATUS
  307. dwLength As Long
  308. dwMemoryLoad As Long
  309. dwTotalPhys As Long
  310. dwAvailPhys As Long
  311. dwTotalPageFile As Long
  312. dwAvailPageFile As Long
  313. dwTotalVirtual As Double
  314. dwAvailVirtual As Double
  315. End Type
  316. Private Declare Sub GlobalMemoryStatus Lib "kernel32" _
  317. (lpBuffer As MEMORYSTATUS)
  318. Private mmemMemoryStatus As MEMORYSTATUS
  319. Public Property Get FreeMemory() As Long
  320. FreeMemory = mmemMemoryStatus.dwAvailPhys
  321. End Property
  322. Public Property Get TotalMemory() As Long
  323. TotalMemory = mmemMemoryStatus.dwTotalPhys
  324. End Property
  325. Public Property Get TotalVirtualMemory() As Double
  326. TotalVirtualMemory = mmemMemoryStatus.dwTotalVirtual
  327. End Property
  328. Public Property Get AvailableVirtualMemory() As Double
  329. AvailableVirtualMemory = mmemMemoryStatus.dwAvailVirtual
  330. End Property
  331. Private Sub Class_Initialize()
  332. mmemMemoryStatus.dwLength = Len(mmemMemoryStatus)
  333. GlobalMemoryStatus mmemMemoryStatus
  334. End Sub
  335. Public Sub Refresh()
  336. GlobalMemoryStatus mmemMemoryStatus
  337. End Sub
Выдает ошибку вначале:
Листинг программы
  1. Sub SB_Sveden()
  2. Dim mDir(1000), mDir1, mStr, mDDir(100) As String
  3. Dim mClass, nClass(1000) As String
  4. Dim s, s1 As String
  5. Dim a As Integer
  6. X1 = Progress.Line1.X1: X2 = Progress.Line1.X2
  7. Y1 = Progress.Line1.Y1
Metod or data member not found

Решение задачи: «Определение аппаратной конфигурации персонального компьютера»

textual
Листинг программы
  1.  DDesc$ = HV1.RegCtrl1.RReadValue(HK$, SubK$, "DriverDesc")

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.444 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы