4.2. Руководство пользователя

 

Основное окно программы разделено на четыре подокна (рамки), в каждом из которых объединены по одному назначению (выдача информации, тест, листинг системного файла, стандартные системные модули Windows) модули отдельных устройств или систем устройств персонального компьютера:

- Информационные модули – выдают различную информацию (объем памяти, качество цвета и т. д.);

- Тестовые модули – тестирование отдельных модулей (логических и съемных дисков);

- Листинговые модули – показ листинга системного файла (boot.ini, autoexec.bat и др.);

- Дополнительные модули – стандартные модули в составе операционной системы Windows (дата и время, свойства системы и др.).

Объединены они для большего удобства и дабы не запутать пользователя, что он будет запускать.

Рамка (в дальнейшем «фрейм») «Информационные модули» содержит следующий перечень модулей о которых при нажатии на кнопку модуля будет выдана информация:

- Память – информация о физической памяти компьютера (полный объем, загруженность памяти и свободное пространство а так же процент используемой памяти) и сведения о файле подкачки (полный объем и др. характеристики);

- Логические диски – показывает информацию о количестве и буквенном значении логических дисков установленных на персональном компьютере, отдельно для каждого (если логический диск на компьютере не один) тип устройства, тип файловой системы на диске, полный его объем, занятое и свободное пространство, процент занятого объема, а так же системная информация такая, как количество кластеров и секторов и др.

- Съемные диски – показывает аналогичную информацию, что и модуль «Логические диски», но для съемных дисков установленных на компьютере, при этом диск должен находиться в дисководе, в противном случае программа попросит его установить.

- CD и DVD – показывает аналогичную информацию, что и два предыдущих модуля, но для CD или DVD устройств, если таковые установлены на персональном компьютере пользователя.

- Дисплей – выдает информацию о расширении экрана по горизонтали и вертикали в пикселях и миллиметрах, качество цветопередачи и количестве цветов, а так же частоту обновления экрана в Герцах и содержит список всех возможных режимов экрана доступных для дисплея.

- Сеть – показывает различную информацию о конфигурации сети компьютера. Содержит информацию об IP-адресе в десятичной и двоичной форме записи, маску подсети и другие параметры.

- Процессы – отображает список работающих программ, запущенных окон и служб работающих в фоновом режиме.

Фрейм «Тестовые модули» содержит два теста, это тест логических дисков и съемных дисков. Данные тесты показывают скорость устройств при записи на них и чтении.

Фрейм с листинговыми модулями содержит пять кнопок для отображения листинга системных файлов boot.ini, system.ini, win.ini, autoexec.nt и config.nt, в данных файлах содержится системная информация загрузки и настроек операционной системы.

Фрейм с дополнительными модулями при нажатии на одну из кнопок (назначение кнопок по надписи на них) отображают стандартные диалоговые окна операционной системы Windows, такие как:

- Свойства системы;

- Установка и удаление программ;

- Язык и региональные стандарты;

- Свойства экрана;

- Свойства Интернет-браузера;

- Свойства даты и времени;

- Свойства клавиатуры;

- Свойства мыши;

- Свойства модема (если есть модем и он подключен и установлен);

- Свойства звука, речи и аудиоустройств (если на персональном компьютере установлена звуковая плата).

При запуске программы отображается главное окно (см. Рис. 4.1)

Рис. 4.1. Интерфейс главного окна программного продукта.

 с перечнем возможных модулей. При щелчке левой клавиши мыши на одной из кнопок запускается дочернее окно, которое в зависимости от того какой модуль вы запустили может либо отображать информацию о модуле, либо его тестировать, либо открывать и отображать один из системных файлов, либо открывать стандартные диалоговые окна операционной системы.

Работу информационного модуля можно описать на примере модуля - «Память»:

При отображении на экране главного окна программы, Вы щелкаете левой клавишей мыши на кнопку «Память» во фрейме информационных модулей, после нажатия на кнопку главное окно становится неактивным и загружается окно свойств памяти компьютера (Рис 4.2).

Рис. 4.2. Пример работы программного продукта (отображение модуля «Память»).

На этой форме находятся два фрейма: Frame1 и Frame2, в первом фрейме находятся текстовые поля, которые отображают информацию о физической памяти, во втором фрейме текстовые поля отображают состояние виртуальной памяти. Вся эта информация получается при помощи специальной API-функции – GlobalMemoryStatus.

Вся информация о состоянии памяти отображается динамически, постоянно обновляясь, это достигается при помощи невидимого объекта таймера

Тест дисков (будь то съемные или логические) отображает среднюю скорость записи данных на устройство и скорость чтения с него. Интерфейс окна теста локальных дисков показан на рисунке 4.3.

Рис. 4.3. Интерфейс окна тестирования дисковых устройств.

При щелчке на кнопку теста программа обрабатывает, на какую из кнопок нажали, если был вызван тест съемных дисков, то в дочернюю программу передается тип устройства «съемные диски». Далее главная форма становится неактивной и передает управление форме теста дисков, которая обрабатывает тип устройств и в зависимости от типа начинает тестирование.

Для листинговых модулей тоже создана одна отдельная форма, поскольку и здесь отображается сходная информация и при этом нет необходимости для каждого файла создавать отдельное окно и нагружать при этом системные ресурсы. Окно листинга системных файлов выглядит так, как показано на рисунке 4.4.

При щелчке левой клавишей мыши на одну из кнопок необходимого листингового модуля, главное окно лишь передает имя файла дочернему листинговому окну, которое обрабатывает имя файла и открывает его с диска для просмотра. В случае если необходимого файла нет на диске, программа выдаст сообщение об ошибке, поскольку данный файл не найден.

Рис. 4.4. Интерфейс окна листинга системных файлов.

Дополнительные модули – это стандартные диалоговые окна операционной системы Windows, такие как «свойства системы», «установка и удаление программ» и др. Пример того как с помощью дополнительного модуля «Свойства экрана», можно открыть окно «свойства: экран» и установить изображение на рабочий стол и произвести другие настройки показан на рисунке 4.5.

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

Рис. 4.5. Пример запуска окна «Свойства: Экран».

Рис. 4.6. Работа меню программы.


Заключение

 

Анализируя данный программный продукт можно смело заявить, что с поставленной задачей я справился, однако это не значит, что программа полностью готова и ей уже не требуются доработки, скорее наоборот, данный программный продукт будет совершенствоваться и расширяться, в нем будут появляться все новые и новые возможности. На данном этапе программа в версии 1.0.1 практически полностью удовлетворяет поставленной задаче. Программа работает правильно и без сбоев. Как и рассчитывалось она не особо требовательна к системным ресурсам, будь то память или область жесткого диска. Однако на данном этапе есть ее некоторые недостатки, а именно данный программный продукт содержит не так много модулей для выдачи информации и особенно мало тестов. Однако я уверен что в дальнейшем этот недостаток будет исправен и будут появляться новые версии программы, которые будут содержать в себе больше информационных и тестовых модулей, будет проведена работа по усовершенствованию, нормализации и упрощению программного кода, который приведет к меньшему объему всей программы и к ее более быстрой работе. Для программы будет создан удобный установщик, который поможет легко и правильно установить программу обычным пользователем.

Данный программный продукт смогут без труда применять простые пользователи персональных компьютеров, дабы расширить знания о своем персональном компьютере и о персональных компьютерах вообще. К тому же я не исключаю возможности применения данного программного продукта в сфере обучения, ведь он позволяет показывать различную информацию об отдельных модуля и системах персонального компьютера, а так же работать с системными файлами и стандартными диалоговыми окнами настройки операционной системы Windows. К тому же данный программный продукт на сегодняшний день является бесплатным программным обеспечением и это дает возможность работы с ней любому желающему пользователю персонального компьютера не затрачивая на это деньги. Сделано это еще для того чтобы программный продукт распространялся наиболее широко и завоевывал популярность среди программного обеспечения поскольку на данный момент программное обеспечение зачастую стоит не дешево и порой пользователи не могут позволить себе приобрести дорогостоящую программу, а мой программный продукт дает пользователю выбор – либо приобретать за определенную сумму программу, которая хоть и по объему информации и тестов немного больше, но работает медленно а иногда и вовсе некорректно, потребляет много системных ресурсов, либо взять бесплатно мой программный продукт, который работает быстро и нетребователен к ресурсам персонального компьютера.

В ближайшее время я собираюсь распространять данный программный продукт через интернет на своем личном сайте, на котором уже находится не одна из моих разработок и надеюсь, что он займет достойное место среди программных продуктов подобного рода, тем более, что сейчас таких программ очень мало.


Список используемой литературы

1.         Вендров А.М. Один из подходов к выбору средств проектирования баз данных и приложений. "СУБД", 2003, №3.

2.         Зиндер Е.З. Бизнес-реинжиниринг и технологии системного проектирования. Учебное пособие. М., Центр Информационных Технологий, 2000

3.         Калянов Г.Н. CASE. Структурный системный анализ (автоматизация и применение). М., "Лори", 1999.

4.         Международные стандарты, поддерживающие жизненный цикл программных средств. М., МП "Экономика", 1998

5.         Новоженов Ю.В. Объектно-ориентированные технологии разработки сложных программных систем. М., 1999.

6.         Панащук С.А. Разработка информационных систем с использованием CASE-системы Silverrun. "СУБД", 1998, №3.

7.         Горчинская О.Ю. Designer/2000 - новое поколение CASE-продуктов фирмы ORACLE. "СУБД", 2000, №3.

8.         Горин С.В., Тандоев А.Ю. CASE-средство S-Designor 4.2 для разработки структуры базы данных. "СУБД", 2002, №1.

9.         Петров Ю.К. JAM - инструментальное средство разработки приложений в информационных системах архитектуры "клиент/сервер", построенных на базе РСУБД. "СУБД", 2002, №3.

10.      Ахметов К.С. Курс молодого бойца. Изд. 5-е, перераб. и доп. – М.: Компьютер Пресс, 1998. – 365с.: ил.

11.      Олифер В.Г. Сетевые операционные системы. СПб.:Питер, 2002.-538с.


Приложения

 

Приложение 1 (Листинг модуля главного окна программы)

Option Explicit

Private Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long

Public FileListName As String 'для передачи имени файла для листинга

Public NumDrive As Byte 'для передачи информации о типе дисков

Dim sDir As String, sTemp As String * 256, nSize As Long

Private Sub AutoexecNtCommand_Click()

nSize = GetWindowsDirectory(sTemp, 255)

sDir = Left(sTemp, nSize)

FileListName = Left(sDir, 3) + "Autoexec.nt"

Load FormListIni

FormListIni.Show

End Sub

Private Sub BootIniCommand_Click()

nSize = GetWindowsDirectory(sTemp, 255)

sDir = Left(sTemp, nSize)

FileListName = Left(sDir, 3) + "boot.ini"

Load FormListIni

FormListIni.Show

End Sub

Private Sub Command1_Click()

Load FormInfoMemory

FormInfoMemory.Show

End Sub

Private Sub Command10_Click()

NumDrive = 2

Load FormTest

FormTest.Show

End Sub

Private Sub Command2_Click()

NumDrive = 3

Load FormDisks

FormDisks.Show

End Sub

Private Sub Command3_Click()

NumDrive = 2

Load FormDisks

FormDisks.Show

End Sub

Private Sub Command4_Click()

NumDrive = 5

Load FormDisks

FormDisks.Show

End Sub

Private Sub Command5_Click()

Load FormDisplay

FormDisplay.Show

End Sub

Private Sub Command6_Click()

Call Shell(App.Path + "\NetProject\InfoNet.exe", vbNormalFocus)

End Sub

Private Sub Command7_Click()

Load FormProc

FormProc.Show

End Sub

Private Sub Command8_Click(Index As Integer)

Select Case Index

Case 0: Call Shell("rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,0", 5)

Case 1: Call Shell("rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,1", 5)

Case 2: Call Shell("rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,0", 5)

Case 3: Call Shell("rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,0", 5)

Case 4: Call Shell("rundll32.exe shell32.dll,Control_RunDLL inetcpl.cpl,,0", 5)

Case 5: Call Shell("rundll32.exe shell32.dll,Control_RunDLL timedate.cpl", 5)

Case 6: Call Shell("rundll32.exe shell32.dll,Control_RunDLL main.cpl @1", 5)

Case 7: Call Shell("rundll32.exe shell32.dll,Control_RunDLL main.cpl @0", 5)

Case 8: Call Shell("rundll32.exe shell32.dll,Control_RunDLL modem.cpl", 5)

Case 9: Call Shell("rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl @1", 5)

End Select

End Sub

Private Sub Command9_Click()

NumDrive = 3

Load FormTest

FormTest.Show

End Sub

Private Sub ConfigNtCommand_Click()

nSize = GetWindowsDirectory(sTemp, 255)

sDir = Left(sTemp, nSize)

FileListName = Left(sDir, 3) + "config.nt"

Load FormListIni

FormListIni.Show

End Sub

Private Sub MnuExit_Click()

End

End Sub

Private Sub MnuHelpAbout_Click()

Load FormAbout

FormAbout.Show

End Sub

Private Sub SistemIniCommand_Click()

nSize = GetWindowsDirectory(sTemp, 255)

sDir = Left(sTemp, nSize)

FileListName = sDir + "\system.ini"

Load FormListIni

FormListIni.Show

End Sub

Private Sub WinIniCommand_Click()

nSize = GetWindowsDirectory(sTemp, 255)

sDir = Left(sTemp, nSize)

FileListName = sDir + "\win.ini"

Load FormListIni

FormListIni.Show

End Sub


Приложение 2 (Листинг модуля окна свойств памяти)

 

Private Type MEMORYSTATUS

dwLength As Long

dwMemoryLoad As Long

dwTotalPhys As Long

dwAvailPhys As Long

dwTotalPageFile As Long

dwAvailPageFile As Long

dwTotalVirtual As Long

dwAvailVirtual As Long

End Type

Private Declare Sub GlobalMemoryStatus Lib "kernel32" (lpBuffer As MEMORYSTATUS)

Dim MS As MEMORYSTATUS

Private Sub Command1_Click()

Unload Me

End Sub

Private Sub Timer1_Timer()

MS.dwLength = Len(MS)

Call GlobalMemoryStatus(MS)

With MS

 Text1(0).Text = Format$(.dwTotalPhys / 1024, "#,###") & " Kb"

 Text1(1).Text = Format$(.dwTotalPhys / 1024 - .dwAvailPhys / 1024, "#,###") & " Kb"

 Text1(2).Text = Format$(.dwAvailPhys / 1024, "#,###") & " Kb"

 Text1(3).Text = .dwMemoryLoad

 Text1(4).Text = Format$(.dwTotalPageFile / 1024, "#,###") & " Kb"

 Text1(5).Text = Format$(.dwAvailPageFile / 1024, "#,###") & " Kb"

 Text1(6).Text = Format$(.dwTotalVirtual / 1024, "#,###") & " Kb"

 Text1(7).Text = Format$(.dwAvailVirtual / 1024, "#,###") & " Kb"

End With

End Sub


Приложение 3 (листинг модуля окна информации о дисках)

 

Option Explicit

Private Const vbDot = 46

Private Const MAXDWORD = &HFFFFFFFF

Private Const MAX_PATH = 260

Private Const INVALID_HANDLE_VALUE = -1

Private Const FILE_ATTRIBUTE_DIRECTORY = &H10

Private Type FILETIME

 dwLowDateTime As Long

 dwHighDateTime As Long

End Type

Private Type WIN32_FIND_DATA

 dwFileAttributes As Long

 ftCreationTime As FILETIME

 ftLastAccessTime As FILETIME

 ftLastWriteTime As FILETIME

 nFileSizeHigh As Long

 nFileSizeLow As Long

 dwReserved0 As Long

 dwReserved1 As Long

 cFileName As String * MAX_PATH

 cAlternate As String * 14

End Type

Private Type FILE_PARAMS

 bRecurse As Boolean

 nFileCount As Long

 nFileSize As Currency

 nSearched As Long

 sFileNameExt As String

 sFileRoot As String

End Type

Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long

Private Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long

Private Declare Function lstrlen Lib "kernel32" Alias "lstrlenW" (ByVal lpString As Long) As Long

Private Declare Function GetLogicalDrives Lib "kernel32" () As Long

Private Declare Function GetDriveType Lib "kernel32.dll" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long

Private 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

Private Declare Function GetDiskFreeSpace Lib "kernel32.dll" Alias "GetDiskFreeSpaceA" (ByVal lpRootPathName As String, lpSectorsPerCluster As Long, lpBytesPerSector As Long, lpNumberOfFreeClusters As Long, lpTotalNumberOfClusters As Long) As Long

Private Sub Command1_Click()

Unload Me

End Sub

Private Sub Command2_Click()

Dim Serial As Long, VName As String, FSName As String

Dim SecPerClus As Long ' число секторов в кластере

Dim BytePerSec As Long ' число байт в секторе

Dim FreeClus As Long ' число свободных кластеров

Dim TotalClus As Long ' общее число кластеров

Dim Retval As Long ' возвращаемое значение

Dim Free As Double

Dim FP As FILE_PARAMS

VName = String$(255, Chr$(0))

FSName = String$(255, Chr$(0))

'получаем информацию о диске

With FP

 .sFileRoot = QualifyPath(Combo1.Text + "\") 'начальный путь

 .sFileNameExt = "*.*" 'нужные файлы

 .bRecurse = 1 'True = рекурсией

End With

Call GetDirectorySize(FP.sFileRoot, FP)

GetVolumeInformation Combo1.Text + "\", VName, 255, Serial, 0, 0, FSName, 255

Retval = GetDiskFreeSpace(Combo1.Text + "\", SecPerClus, BytePerSec, FreeClus, TotalClus)

VName = Left$(VName, InStr(1, VName, Chr$(0)) - 1)

FSName = Left$(FSName, InStr(1, FSName, Chr$(0)) - 1)

Free = (FreeClus / 1000 * SecPerClus * BytePerSec) * 1000

If MainForm.NumDrive = 2 Then Label1(0).Caption = "Тип устройства: Съемный диск"

If MainForm.NumDrive = 3 Then Label1(0).Caption = "Тип устройства: Жесткий диск"

If MainForm.NumDrive = 5 Then Label1(0).Caption = "Тип устройства: CD или DVD диск"

Label1(1).Caption = "Полный объем: " + Format$(FP.nFileSize + Free, "#,###") & " байт" + " (" + Format$((FP.nFileSize + Free) / 1073741824, "###.#") + " Гбайт)"

Label1(2).Caption = "Свобоный объем: " + Format$(Free, "#,###") & " байт" + " (" + Format$(Free / 1073741824, "###.#") + " Гбайт)"

Label1(3).Caption = "Используемый объем: " + Format$(FP.nFileSize, "###,###,###,###") + " байт" + " (" + Format$(FP.nFileSize / 1073741824, "###.#") + " Гбайт)"

Label1(4).Caption = "Файловая система: " + FSName

Label1(5).Caption = "Число свободных кластеров: " + CStr(FreeClus)

Label1(6).Caption = "Число секторов в кластере: " + CStr(SecPerClus)

Label1(7).Caption = "Число байт в секторе: " + CStr(BytePerSec)

Label1(8).Caption = "Общее число кластеров: " + CStr(TotalClus)

ProgressBar1.Value = ((FP.nFileSize / (FP.nFileSize + Free)) * 100): Label2.Caption = CStr(CInt(ProgressBar1.Value)) + "%"

End Sub

Private Sub Form_Load()

Dim i As Byte, drivetype As Long, k As Byte

FillCombo Combo1, True

For i = 0 To Combo1.ListCount - 1

 Combo1.ListIndex = i

 drivetype = GetDriveType(Combo1.Text + "\")

 If drivetype = MainForm.NumDrive Then Combo1.AddItem Combo1.Text: k = k + 1

Next i

For i = 0 To Combo1.ListCount - k - 1

 Combo1.RemoveItem 0

Next i

Combo1.ListIndex = 0

Call Command2_Click

End Sub

Private Sub FillCombo(cbo As ComboBox, ByVal bUsed As Boolean)

Dim DriveNum As Long

cbo.Clear

For DriveNum = 0 To 25

 If CBool(GetLogicalDrives And (2 ^ DriveNum)) = bUsed Then

 cbo.AddItem Chr$(Asc("A") + DriveNum) & ":"

 End If

Next DriveNum

End Sub

Private Sub GetDirectorySize(sRoot As String, FP As FILE_PARAMS)

Dim wfd As WIN32_FIND_DATA

Dim hFile As Long

hFile = FindFirstFile(sRoot & "*.*", wfd)

If hFile <> INVALID_HANDLE_VALUE Then

 Do

 If Asc(wfd.cFileName) <> vbDot Then

 If (wfd.dwFileAttributes And vbDirectory) Then

 If FP.bRecurse Then

 GetDirectorySize sRoot & TrimNull(wfd.cFileName) & "\", FP

 End If 'If fp.bRecurse

 Else

 FP.nFileCount = FP.nFileCount + 1

 FP.nFileSize = FP.nFileSize + ((wfd.nFileSizeHigh * (MAXDWORD + 1)) + wfd.nFileSizeLow)

 End If 'If WFD.dwFileAttributes

 End If 'If Asc(wfd.cFileName)

 FP.nSearched = FP.nSearched + 1

 Loop While FindNextFile(hFile, wfd)

End If 'If hFile

End Sub

Private Function TrimNull(startstr As String) As String

TrimNull = Left$(startstr, lstrlen(StrPtr(startstr)))

End Function

Private Function QualifyPath(sPath As String) As String

If Right$(sPath, 1) <> "\" Then

 QualifyPath = sPath & "\"

Else

 QualifyPath = sPath

End If

End Function


Приложение 4 (листинг модуля окна свойств дисплея)

 

Option Explicit

Private Declare Function GetDeviceCaps Lib "gdi32" (ByVal hdc As Long, ByVal nIndex As Long) As Long

Private Const DRIVERVERSION As Long = 0 'Версия драйвера

Private Const TECHNOLOGY As Long = 2 'Классификация устройства

Private Const HORZSIZE As Long = 4 'Размер по горизонтали в мм.

Private Const VERTSIZE As Long = 6 'Размер по вертикали в мм.

Private Const HORZRES As Long = 8 'Размер по горизонтали в точках

Private Const VERTRES As Long = 10 'Размер по вертикали в точках

Private Const BITSPIXEL As Long = 12 'Кол-во бит на точку

Private Const PLANES As Long = 14 'Number of planes

Private Const NUMBRUSHES As Long = 16 'Number of brushes the device has

Private Const NUMPENS As Long = 18 'Number of pens the device has

Private Const NUMMARKERS As Long = 20 'Number of markers the device has

Private Const NUMFONTS As Long = 22 'Number of fonts the device has

Private Const NUMCOLORS As Long = 24 'Макс. кол-во возможных цветов

Private Const PDEVICESIZE As Long = 26 'Size required for device descripto

Private Const CURVECAPS As Long = 28 'Curve capabilities

Private Const LINECAPS As Long = 30 'Line capabilities

Private Const POLYGONALCAPS As Long = 32 'Polygonal capabilities

Private Const TEXTCAPS As Long = 34 'Text capabilities

Private Const CLIPCAPS As Long = 36 'Clipping capabilities

Private Const RASTERCAPS As Long = 38 'Bitblt capabilities

Private Const ASPECTX As Long = 40 'Length of the X leg

Private Const ASPECTY As Long = 42 'Length of the Y leg

Private Const ASPECTXY As Long = 44 'Length of the hypotenuse

Private Const SHADEBLENDCAPS As Long = 45 'Shading and blending caps (IE5)

Private Const LOGPIXELSX As Long = 88 'Logical pixels/inch in X

Private Const LOGPIXELSY As Long = 90 'Logical pixels/inch in Y

Private Const SIZEPALETTE As Long = 104 'Number of entries in physical palette

Private Const NUMRESERVED As Long = 106 'Number of reserved entries in palette

Private Const COLORRES As Long = 108 'Количество цветов

Private Const VREFRESH As Long = 116 'Текущий рефрешь по вертикали в Гц

 '(только для монитора)

Private Const DESKTOPVERTRES As Long = 117 'Размер десктопа по горизонтали

Private Const DESKTOPHORZRES As Long = 118 'Размер десктопа по вертикали

Private Const BLTALIGNMENT As Long = 119 'Preferred blt alignment

'Для списка режимов

Private Declare Function EnumDisplaySettings Lib "user32" Alias "EnumDisplaySettingsA" (ByVal lpszDeviceName As Long, ByVal iModeNum As Long, lpDevMode As Any) As Boolean

Private Const CCDEVICENAME = 32

Private Const CCFORMNAME = 32

Private Type DEVMODE

 dmDeviceName As String * CCDEVICENAME

 dmSpecVersion As Integer

 dmDriverVersion As Integer

 dmSize As Integer

 dmDriverExtra As Integer

 dmFields As Long

 dmOrientation As Integer

 dmPaperSize As Integer

 dmPaperLength As Integer

 dmPaperWidth As Integer

 dmScale As Integer

 dmCopies As Integer

 dmDefaultSource As Integer

 dmPrintQuality As Integer

 dmColor As Integer

 dmDuplex As Integer

 dmYResolution As Integer

 dmTTOption As Integer

 dmCollate As Integer

 dmFormName As String * CCFORMNAME

 dmUnusedPadding As Integer

 dmBitsPerPel As Integer

 dmPelsWidth As Long

 dmPelsHeight As Long

 dmDisplayFlags As Long

 dmDisplayFrequency As Long

End Type

Private Sub Command1_Click()

Unload Me

End Sub

Private Sub Form_Load()

Dim sBPPtype As String

Dim sFreqtype As String

Dim CurrBPP As Long

Dim CurrVFreq As Long

'Подписываем глубину цвета для удобства чтения

CurrBPP = GetDeviceCaps(hdc, BITSPIXEL)

Select Case CurrBPP

 Case 4: sBPPtype = "(16 цветов)"

 Case 8: sBPPtype = "(256 цветов)"

 Case 16: sBPPtype = "(High Color)"

 Case 24, 32: sBPPtype = "(True Color)"

End Select

CurrVFreq = GetDeviceCaps(hdc, VREFRESH)

Select Case CurrVFreq

 Case 0, 1: sFreqtype = "(Определяется адаптером)"

 Case Else: sFreqtype = "(Ручная настройка)"

End Select

 Label1(0).Caption = "Разрешение по горизонтали: " & GetDeviceCaps(hdc, HORZRES) & " пикселей"

Label1(1).Caption = "Разрешение по вертикали: " & GetDeviceCaps(hdc, VERTRES) & " пикселей"

Label1(2).Caption = "Разрешение по горизонтали в миллиметрах: " & GetDeviceCaps(hdc, HORZSIZE) & " мм"

Label1(3).Caption = "Разрешение по вертикали в миллиметрах: " & GetDeviceCaps(hdc, VERTSIZE) & " мм"

Label1(4).Caption = "Качество цветопередачи: " & CurrBPP & " бит " & sBPPtype

Label1(5).Caption = "Количество цветов: " & 2 ^ CurrBPP

Label1(6).Caption = "Частота обновления экрана: " & CurrVFreq & " Гц " & sFreqtype

'Заполнение списка режимов

EnumDisplay lstmodes

End Sub

Private Sub EnumDisplay(displaylistbox As ListBox)

Dim lTemp As Long, tDevMode As DEVMODE, lIndex As Long

lIndex = 0

Do

 lTemp = EnumDisplaySettings(0&, lIndex, tDevMode)

 If lTemp = 0 Then Exit Do

 With tDevMode

 displaylistbox.AddItem .dmPelsWidth & " x " & .dmPelsHeight & " , " & .dmBitsPerPel & " бит"

 End With

 lIndex = lIndex + 1

Loop

End Sub


Приложение 5 (листинг модуля окна тестирования дисков)

 

Private Declare Function GetDriveType Lib "kernel32.dll" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long

Private Declare Function GetLogicalDrives Lib "kernel32" () As Long

Private Declare Function GetTickCount Lib "kernel32" () As Long

Dim TStart As Long 'переменная таймера только для этой процедуры

Dim TEnd As Long 'переменная таймера только для этой процедуры

Dim Zapis(9) As Single

Dim Chten(9) As Single

Dim AStart As Single

Dim AEnd As Single

Private Sub Command1_Click()

Dim i As Long, j As Byte, Tmp As Single, Str1 As String

If MainForm.NumDrive = 3 Then

 AStart = GetTickCount()

 For j = 0 To 9

 TStart = GetTickCount()

 Open Combo1.Text & "\proba.txt" For Output As 1

 For i = 0 To 349524

 Print #1, " "

 Next i

 Close 1

 TEnd = GetTickCount()

 Zapis(j) = 1 / ((TEnd - TStart) / 2000)

 Next j

 For i = 0 To 9

 Tmp = Tmp + Zapis(i)

 Next i

 Tmp = Tmp / 10

 Label1.Caption = "Средняя скорость записи " & FormatNumber(Tmp, 3) & " Мб/сек"

 ProgressBar1.Value = Tmp

 For j = 0 To 9

 TStart = GetTickCount()

 Open Combo1.Text & "\proba.txt" For Input As 1

 Str1 = Len(Input(LOF(1), 1))

 Close 1

 TEnd = GetTickCount()

 Chten(j) = 1 / ((TEnd - TStart) / 1000)

 Next j

 For i = 0 To 9

 Tmp = Tmp + Chten(i)

 Next i

 Tmp = Tmp / 10

 Label2.Caption = "Средняя скорость чтения " & FormatNumber(Tmp, 3) & " Мб/сек"

 ProgressBar2.Value = Tmp

 AEnd = GetTickCount()

 Label3.Caption = "Общее время теста: " & FormatNumber(((AEnd - AStart) / 1000), 4) & " секунд"

 Label4.Caption = "Кол-во тестов: 10 на запись, 10 на чтение"

End If

If MainForm.NumDrive = 2 Then

 ProgressBar1.Max = 80

 ProgressBar2.Max = 80

 AStart = GetTickCount()

 TStart = GetTickCount()

 Open Combo1.Text & "\proba.txt" For Output As 1

 For i = 0 To 349524

 Print #1, " "

 Next i

 Close 1

 TEnd = GetTickCount()

 Label1.Caption = "Cкорость записи " & FormatNumber(1 / ((TEnd - TStart) / 1000000), 3) & " Kb/sec"

 ProgressBar1.Value = 1 / ((TEnd - TStart) / 1000000)

For j = 0 To 3

 TStart = GetTickCount()

 Open Combo1.Text & "\proba.txt" For Input As 1

 Str1 = Len(Input(LOF(1), 1))

 Close 1

 TEnd = GetTickCount()

 Chten(j) = 1 / ((TEnd - TStart) / 10000)

Next j

For i = 0 To 3

 Tmp = Tmp + Chten(i)

Next i

Tmp = Tmp / 10

AEnd = GetTickCount()

Label2.Caption = "Средняя скорость чтения " & FormatNumber(Tmp, 3) & " Мб/сек"

Label3.Caption = "Общее время теста: " & FormatNumber(((AEnd - AStart) / 1000), 4) & " секунд"

ProgressBar2.Value = Tmp

Label4.Caption = "Кол-во тестов: 1 на запись, 4 на чтение"

End If

End Sub

Private Sub Command2_Click()

Unload Me

End Sub

Private Sub Form_Load()

Dim i As Byte, drivetype As Long, k As Byte

FillCombo Combo1, True

For i = 0 To Combo1.ListCount - 1

 Combo1.ListIndex = i

 drivetype = GetDriveType(Combo1.Text + "\")

 If drivetype = MainForm.NumDrive Then Combo1.AddItem Combo1.Text: k = k + 1

Next i

For i = 0 To Combo1.ListCount - k - 1

 Combo1.RemoveItem 0

Next i

Combo1.ListIndex = 0

Call Command1_Click

End Sub

Private Sub FillCombo(cbo As ComboBox, ByVal bUsed As Boolean)

Dim DriveNum As Long

cbo.Clear

For DriveNum = 0 To 25

 If CBool(GetLogicalDrives And (2 ^ DriveNum)) = bUsed Then

 cbo.AddItem Chr$(Asc("A") + DriveNum) & ":"

 End If

Next DriveNum

End Sub


Информация о работе «Разработка программного продукта "ПК инфо"»
Раздел: Информатика, программирование
Количество знаков с пробелами: 100010
Количество таблиц: 1
Количество изображений: 8

Похожие работы

Скачать
128411
25
7

... раньше, чем предполагалось, можно либо завершить кампанию досрочно, либо уменьшить интенсивность рекламного воздействия. Глава 3. Результаты анализа методов продвижения программного продукта R7 на жестко ограниченном рынке бухгалтерских услуг на примере деятельности фирмы ООО СиБиЭсинформ и рекомендации по формированию дальнейшей стратегии 3.1 Оценка коммуникативной эффективности ...

Скачать
116601
19
0

... , с учетом современных стандартов построения документации, с учетом внедрения рыночных отношений. Документы должны быть удобными для обработки и последующих записей в учетные регистры. Правильный выбор программного продукта и фирмы-разработчика – первый и определяющий этап совершенствования бухгалтерского учета. Купить бухгалтерскую программу – это сейчас не проблема. По оценкам экспертов на ...

Скачать
219671
1
4

... оптимальные варианты оснащения офиса коммерческой компании комплектом оборудования, достаточным для решения поставленной задачи Глава 1. 1.1 Постановка задачи. Целью данного дипломного проекта является разработка системы управления работой коммерческой компании. Исходя из современных требований, предъявляемых к качеству работы управленческого звена коммерческой компании, нельзя не отметить, что ...

Скачать
138680
12
12

... приведения к базовому узлу, метод удельных весов, метод учета затрат на единицу веса изделия, расчет себестоимости по статьям затрат. В данном проекте приводится расчет себестоимости разработки автоматизированной системы управления торговым предприятием. (АСУТП). АСУТП служит для ведения учета торговой деятельности в Интернет и на аукционе EBay. Из основных преимуществ перед конкурентами стоит ...

0 комментариев


Наверх