Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Basic / VBA


Информационный Канал Subscribe.Ru

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Basic/VBA

Выпуск № 136
от 20.10.2005, 23:33

Администратор:Калашников О.А.
В рассылке:Подписчиков: 126, Экспертов: 21
В номере:Вопросов: 2, Ответов: 6


Вопрос № 27719: Здравствуйте. Есть вопросы по Microsoft Visual Basic 6.0. 1). Как добавить информацию в реестр, и как её оттуда удалить? 2)Как проверить есть ли связь с Интернетом. Как то в рассылках был такой вопрос, и был приведен код в ответ. Я его вс...
Вопрос № 27750: Здравствуйте глубоко уважаемые эксперты! Нужно чтобы на форме показывалась конфигурация компьютера(очень простенькая) Как можно, если вообще возможно, это сделать?...

Вопрос № 27.719
Здравствуйте.
Есть вопросы по Microsoft Visual Basic 6.0.
1). Как добавить информацию в реестр, и как её оттуда удалить?
2)Как проверить есть ли связь с Интернетом. Как то в рассылках был такой вопрос, и был приведен код в ответ. Я его вставлял, но вылазит ошибка.
3) Как сделать так чтоб в программу нельзя было закрыть (например, как в nero во время записи, крестик невозможно нажать), и как сделать, чтоб нельзя было нажать на кнопки скрыть, развернуть. И как в определенные моменты сделать так, чтоб кнопку нельзя было нажать, например, идет подсчет (через таймер) до 10, и пока отсчёт не дойдет до 10 нельзя нажать кнопку на форме определённую. Приведите пример если нетрудно.
Заранее спасибо за ответы.
Отправлен: 15.10.2005, 06:41
Вопрос задал: Неизвестнов Том (статус: Посетитель)
Всего ответов: 5
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: _Виталий
Здравствуйте, Неизвестнов Том!
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 - это самое то, либо ищите в МСДН (если она есть).
---------
Учиться никогда не поздно. Особенно программированию!
Ответ отправил: Залетин Виталий Викторович (статус: 4-ый класс)
Отправлен: 15.10.2005, 14:28

Отвечает: Евгений Неверов
Здравствуйте, Неизвестнов Том!
Насчёт второго вопроса смотрите код ниже. Функция inNet возвращает True, если пользователь в сети.

Приложение:

Ответ отправил: Евгений Неверов (статус: Студент)
Отправлен: 15.10.2005, 15:57

Отвечает: Miklucho
Здравствуйте, Неизвестнов Том!
3) чтоб программу нельзя было закрыть, на событие unload формы нужно написать cancel=-1, а кнопки (и др. элементы) блокируются свойством enable.

PS Смотри почаще архив рассылки, т.к твои вопросы уже проходили и не раз.
Ответ отправил: Miklucho (статус: Студент)
Отправлен: 18.10.2005, 18:46


Вопрос № 27.750
Здравствуйте глубоко уважаемые эксперты!
Нужно чтобы на форме показывалась конфигурация компьютера(очень простенькая)
Как можно, если вообще возможно, это сделать?
Отправлен: 15.10.2005, 20:05
Вопрос задал: Dushin Igor (статус: 1-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Licvidator
Здравствуйте, Dushin Igor!
Ну.. например код в приложении.
Для его работы нужно подключить Microsoft Scripting Runtime (Project - References), Microsoft Sysinfo Control (Project - Components), добавить 5 кнопок и textbox

Приложение:

Ответ отправил: Licvidator (статус: Профессор)
Отправлен: 15.10.2005, 21:08


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2005, RusFAQ.ru, Россия, Москва. Все права защищены.
Идея, дизайн, программирование, авторское право: Калашников О.А.

Rambler's Top100 Яндекс


Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.basicvba
Архив рассылки
Отписаться
Вспомнить пароль

В избранное