Пара вопросов

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
lil d
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 14.08.2003 (Чт) 19:46
Откуда: Тольятти

Пара вопросов

Сообщение lil d » 14.08.2003 (Чт) 19:53

1. Как программно изменить частоту обновления изображения монитора (например, на 100Hz)?
2. Как програмно отформатировать диск?

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 14.08.2003 (Чт) 19:59

Насчёт №2:
Shell "Format /y C: (D:, E:...)", vbHide (если хочешь скрыть)
По-моему, так...
Нет меня больше

Oxygen
Белая и пушистая
Белая и пушистая
Аватара пользователя
 
Сообщения: 1314
Зарегистрирован: 15.07.2003 (Вт) 7:14
Откуда: Москва

Сообщение Oxygen » 14.08.2003 (Чт) 20:25

А насчет первого смотри сюда: http://bbs.vbstreets.ru/viewtopic.php?t=2367

lil d
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 14.08.2003 (Чт) 19:46
Откуда: Тольятти

Сообщение lil d » 14.08.2003 (Чт) 20:44

За второе спасибо, но в первом вопросе я спрашивал не про разрешение экрана, а про частоту обновления, т.е. количество обновлдений изображения дисплея в секунду.

Oxygen
Белая и пушистая
Белая и пушистая
Аватара пользователя
 
Сообщения: 1314
Зарегистрирован: 15.07.2003 (Вт) 7:14
Откуда: Москва

Сообщение Oxygen » 14.08.2003 (Чт) 22:02

Во втором примере , который лежит в той теме, описывается способ поменять разрешение экрана и чистоту обновления, только тебе немного придется в нем покопаться. Но если не хочешь копаться, то вот код, он еще и разрешение экрана меняет.
Код: Выделить всё
Declare Function EnumDisplaySettings Lib "user32" Alias _
                "EnumDisplaySettingsA" (ByVal lpszDeviceName As Long, _
                                        ByVal iModeNum As Long, _
                                        lptypDevMode As Any) As Boolean

Declare Function ChangeDisplaySettings Lib "user32" Alias _
                "ChangeDisplaySettingsA" (lptypDevMode As Any, _
                                          ByVal dwFlags As Long) As Long

Public Const EWX_LOGOFF = 0
Public Const EWX_SHUTDOWN = 1
Public Const EWX_REBOOT = 2
Public Const EWX_FORCE = 4
Public Const CCDEVICENAME = 32
Public Const CCFORMNAME = 32
Public Const DM_BITSPERPEL = &H40000
Public Const DM_PELSWIDTH = &H80000
Public Const DM_PELSHEIGHT = &H100000
Public Const CDS_UPDATEREGISTRY = &H1
Public Const CDS_TEST = &H4
Public Const DISP_CHANGE_SUCCESSFUL = 0
Public Const DISP_CHANGE_RESTART = 1
Public Const DM_DISPLAYFREQUENCY = &H400000
Public Const ENUM_CURRENT_SETTINGS = -1

Public Type typDevMODE
    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
Public Sub SetResolution(ByVal w, ByVal h, ByVal OldFreq)
    On Error Resume Next
    Dim typDevM As typDevMODE
    Dim lngResult As Long
    Dim intAns As Integer
    '
    lngResult = EnumDisplaySettings(0, 0, typDevM)
    '
    With typDevM
        .dmFields = DM_PELSWIDTH Or DM_PELSHEIGHT Or DM_DISPLAYFREQUENCY
        .dmPelsWidth = w
        .dmPelsHeight = h
        .dmDisplayFrequency = OldFreq
    End With

    DoEvents
    lngResult = ChangeDisplaySettings(typDevM, 0)
    DoEvents
End Sub

Sub main()
Dim X, Y, OldX, OldY As Long
    Dim typDevM As typDevMODE
    Dim OldFreq As Long
    EnumDisplaySettings 0, ENUM_CURRENT_SETTINGS, typDevM '
    OldX = typDevM.dmPelsWidth
    OldY = typDevM.dmPelsHeight
    OldFreq = typDevM.dmDisplayFrequency
    SetResolution 640, 480, OldFreq
    'Если нужно поменять только частоту обновления,то заместо 640, 480 ставишь OldX, OldY, а заместо OldFreq нужную частоту.
    Form1.Show
End Sub

Если что непонятно, пиши.

lil d
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 14.08.2003 (Чт) 19:46
Откуда: Тольятти

Сообщение lil d » 15.08.2003 (Пт) 20:43

2 A.A.Z.:
Почему-то этот код (1-ый случай) не пашет - говорит: "File not found"
Наверняка должен быть другой код.

Oxygen
Белая и пушистая
Белая и пушистая
Аватара пользователя
 
Сообщения: 1314
Зарегистрирован: 15.07.2003 (Вт) 7:14
Откуда: Москва

Сообщение Oxygen » 15.08.2003 (Пт) 21:45

Попробую ответить я. Во-первых из под Win200 и WinXP ты ничего не отформатируешь (Винда не даст). Во-вторых, просто в этих системах вообще такого файла нет. В-третьих, немного синтаксис не тот :D :
Shell "echo y|format c:/u/q", vbHide
(параметр u - невосстановимо, параметр q - быстрый формат)
но это будет работать только в Win98, WinMe и Win95.

lil d
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 14.08.2003 (Чт) 19:46
Откуда: Тольятти

Сообщение lil d » 16.08.2003 (Сб) 21:37

2Oxygen: Спасибо ;)


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: SemrushBot, Yandex-бот и гости: 2

    TopList