Вопрос № 27719: Здравствуйте.
Есть вопросы по Microsoft Visual Basic 6.0.
1). Как добавить информацию в реестр, и как её оттуда удалить?
2)Как проверить есть ли связь с Интернетом. Как то в рассылках был такой вопрос, и был приведен код в ответ. Я его вс...Вопрос № 27750: Здравствуйте глубоко уважаемые эксперты!
Нужно чтобы на форме показывалась конфигурация компьютера(очень простенькая)
Как можно, если вообще возможно, это сделать?...
Вопрос № 27.719
Здравствуйте.
Есть вопросы по Microsoft Visual Basic 6.0.
1). Как добавить информацию в реестр, и как её оттуда удалить?
2)Как проверить есть ли связь с Интернетом. Как то в рассылках был такой вопрос, и был приведен код в ответ. Я его вставлял, но вылазит ошибка.
3) Как сделать так чтоб в программу нельзя было закрыть (например, как в nero во время записи, крестик невозможно нажать), и как сделать, чтоб нельзя было нажать на кнопки скрыть, развернуть. И как в определенные моменты сделать так, чтоб кнопку нельзя было нажать, например, идет подсчет (через таймер) до 10, и пока отсчёт не дойдет до 10 нельзя нажать кнопку на форме определённую. Приведите пример если нетрудно.
Заранее спасибо за ответы.
Отвечает: _Виталий
Здравствуйте, Неизвестнов Том!
1) Код для модуля в приложении. Пример использования:
------------------------------------
Call SaveString(HKEY_LOCAL_MACHINE, "Software estReg", "test", "testing")
retval = GetString(HKEY_LOCAL_MACHINE, "Software estReg", "test")
MsgBox retval
Call DeleteValue(HKEY_LOCAL_MACHINE, "Software estReg", "test")
Call DeleteKey(HKEY_LOCAL_MACHINE, "Software estReg")
------------------------------------
2) См. вопрос № 27712
3)Блокировка обычной кнопки на форме:
Command1.Enabled = False
ну и обратно:
Command1.Enabled = True
По-поводу кнопок всернуть,развернуть,закрыть. Можно удалить их все свойство формы ControlBox=False, отключить MaxButton = False и MinButton = False, но при попытке сделать это в Runtime получается ошибка, у меня получилось только на стадии разработки.
Приложение:
Ответ отправил: _Виталий (статус: 8-ой класс)
Отправлен: 15.10.2005, 10:54
Отвечает: Licvidator
Здравствуйте, Неизвестнов Том!
1. Функции для работы с реестром см. в прикрепленном файле
2. http://rusfaq.ru/?Step=info&Action=Question&ID=27712 (только добавьте объявления АПИ и констант)
3. http://rusfaq.ru/?Step=info&Action=Question&ID=27644 Свернуть/развернуть: свойство ControlBox формы, значение False (убирает совсем) или же MaxButton=False, MinButton=False (деактивирует)
Насчет кнопки: имя_кнопки.Enabled=False (потом сделать True)
Прикреплённый файл: Загрузить >> Срок хранения файла на сервере RusFAQ.ru составляет 30 суток с момента отправки ответа.
Ответ отправил: Licvidator (статус: Профессор)
Отправлен: 15.10.2005, 11:45
Отвечает: Залетин Виталий Викторович
Здравствуйте, Неизвестнов Том!
1. Есть стандартные функции SaveSetting и т. д. Можно пользоваться АПИ функциями (см. почту).
3. Чтоб нельзя было закрыть через крестик, надо удалить последний пункт системного меню формы. Можно юзать, например, такой код:
Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long
Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
Private Declare Function RemoveMenu Lib "user32" _
(ByVal hMenu As Long, _
ByVal nPosition As Long, _
ByVal wFlags As Long) As Long
Declare Function GetMenuItemCount Lib "user32" (ByVal hMenu As Long) As Long
Const MF_BYPOSITION = &H400&
Const MF_REMOVE = &H1000&
Const SC_CLOSE=&H6 'Вот тут, если память не изменяет, такое значение, но в АПИ вьювере оно есть
Sub KillClose()
dim hMnu as long
hMnu=GetSystemMenu(Form.HWND, False)
RemoveMenu hMnu, SC_CLOSE, MF_BYPOSITION Or MF_REMOVE
DrawMenuBar Form.HWND
End Sub
Можно и так (недавно наткнулся на этот пример, и это самое верное решение - удалять последний пункт системного меню окна, не по его номеру в константе):
Private Sub Form_Load()
Dim hSysMenu As Long, nCnt As Long
hSysMenu = GetSystemMenu(Me.hwnd, False)
If hSysMenu Then
nCnt = GetMenuItemCount(hSysMenu)
If nCnt Then
RemoveMenu hSysMenu, nCnt - 1, _
MF_BYPOSITION Or MF_REMOVE
RemoveMenu hSysMenu, nCnt - 2, _
MF_BYPOSITION Or MF_REMOVE
DrawMenuBar Me.hwnd
Me.Caption = "Пробуй закрыть меня!!!"
End If
End If
End Sub
Насчет скрыть/развернуть, думаю, можно пойти тем же путем (в апивьювере все константы есть (по идее, они должны называться SC_MINIMIZE, SC_MAXIMIZE (или около того)).
А насчет кнопки, то тут можно просто присваивать ей свойство Enabled=False (заблокировать) и Enabled=True (разблокировать). С таймерои та же история, считайте в таймере хоть до ста, а потом CommandButton.Enabled=True и все!
2. Насчет интернета, я сам в этом пока на стадии разборок. Поищите в НЕТе какие-либо статьи по RAS - это самое то, либо ищите в МСДН (если она есть).
--------- Учиться никогда не поздно. Особенно программированию!
Отвечает: Евгений Неверов
Здравствуйте, Неизвестнов Том!
Насчёт второго вопроса смотрите код ниже. Функция inNet возвращает True, если пользователь в сети.
Приложение:
Ответ отправил: Евгений Неверов (статус: Студент)
Отправлен: 15.10.2005, 15:57
Отвечает: Miklucho
Здравствуйте, Неизвестнов Том!
3) чтоб программу нельзя было закрыть, на событие unload формы нужно написать cancel=-1, а кнопки (и др. элементы) блокируются свойством enable.
PS Смотри почаще архив рассылки, т.к твои вопросы уже проходили и не раз.
Ответ отправил: Miklucho (статус: Студент)
Отправлен: 18.10.2005, 18:46
Вопрос № 27.750
Здравствуйте глубоко уважаемые эксперты!
Нужно чтобы на форме показывалась конфигурация компьютера(очень простенькая)
Как можно, если вообще возможно, это сделать?
Отвечает: Licvidator
Здравствуйте, Dushin Igor!
Ну.. например код в приложении.
Для его работы нужно подключить Microsoft Scripting Runtime (Project - References), Microsoft Sysinfo Control (Project - Components), добавить 5 кнопок и textbox
Приложение:
Ответ отправил: Licvidator (статус: Профессор)
Отправлен: 15.10.2005, 21:08