Мир программирования на Visual BASIC и HTML
Информация
  Архив рассылки
  Рассылка

Исходники
  Secret CODE
  Tic Tac Toe

Спонсоры
  Городской кот
  Subscribe.Ru
  Russian Surf

Ссылки
  VB Streets
  Visual BASIC
  VB: Step by Step
  SnoozeX Design
  СообЧа
  СообЧа-VB

VB Форумы
WEB:
  VBS Форум
  Ru.Visual.Basic
Mail:
  VBStreets
  СообЧа: VB
  подписка - пустое   письмо в VB группу

Доска почета
  Sergey VIMBERG
  Олег
  Oleg Palayda
  BSP
  Евгений
  Николай
  hackcode
  Дмитрий Данелия

Вопросы
  Автору
  По VB
  По HTML

Кнопки

Рассылка 'Мир программирования на Visual BASIC и HTML.'

мы в режиме:

SUPERTOP

SnoozeX Design
Несколько слов от автора: Здравствуйте. Вот снова запаздал мой выпуск. На этот раз я приболел :(, попал в больницу. Извиняюсь перед всеми за запоздалые ответы на письма. Ну вот читайте новый выпуск.
Ваши пожелания:


E-Mail для ответа:   

ПРИМЕЧАНИЕ: Выпуски данной рассылки начиная с первого вы сможете прочитать на http://subscribe.ru/archive/comp.design.snoozex/    @LEXis

24.04.2001 Выпуск N22 Обзор ведет @LEXis

 Сегодня в выпуске:

# E-Mail группа "СообЧа-Visual BASIC":
О группе
Определение подключения к инету (удобный пример)
# Поленые коды на Visual BASIC:
Добавление элемента CheckBox в элемент ComboBox
# Практикум на примерах:
Windows API (Часть 1 - Общие сведения)
# В разделе "вопросы/ответы":
Ответы на вопросы читателей
# Рубрика "Объявления"


 E-Mail группа "СообЧа-Visual BASIC"
О группе

Группа VB. Заходите в гости. Здесь вы приобретете практические навыки по программированию на Visual Basic. Как вы этого сможете достигнуть? Путем написания собственной серьезной программы. Чем обычно занимается рядовой чайник-программист? Ну пишет там всякие приколы на VB... Ну ма-а-ленькую полезную программку наваяет. А как получить навыки в создании серьезных программ? Правильно, путем создания серьезных программ. ;) Но в одиночку вам с этим не справиться. Вот для этого в проекте СообЧа существует группа программистов-чайников, которые занимаются разработкой серьезного софта на VB. Суть состоит в том, что вам совсем необязательно знать все в Visual Basicе. Вам достаточно быть рядовым чайником и немного знать операторы VB. Остальному научимся вместе. На данный момент в группе разрабатывается почтовая программа под рабочим названием "Сообчайлер". Она будет уметь все, что умеет популярная программа The Bat и даже намного больше. Есть сборник оригинальных идей, выдвинутых членами нашей группы, которые мы постараемся реализовать все вместе. Проект разбивается на отдельные простые задачи. Такие как: проверка орфографии, форма для написания нового письма, главное окно... и т.п. Каждую часть делает отдельный человек. Затем он высылает сделанный модуль в группу и остальные просто присоединяют его к базовому проекту. Вам совсем не обязательно четко представлять как это сделать. Достаточно просто начать и столкнуться с какой-нибудь проблемой. Пусть это будет даже проблема типа "А как добавить новый модуль к проекту?". Все. Наткнулись... ;) Дальше действуем по одной схеме - пишем письмо с описанием проблемы в группу и мы все вместе разбираемся в проблеме. Таким образом все остальные получат ЗНАНИЯ и некоторые навыки в решении создавшихся проблем. Не забывайте - все мы чайники. Не стоит бояться задать вопрос. Задавайте - а мы вместе попытаемся найти ответ.
Подписаться в группу (пустое письмо)

Определение подключения к инету (удобный пример)

Дмитрий Данелия Апрель 2001

Создан обычный проект. На форме кнопка.

'----
Private Declare Function RasEnumConnections Lib "RasApi32.dll" Alias
"RasEnumConnectionsA" _
(lpRasCon As Any, lpcb As Long, lpcConnections As Long) As Long
Private Declare Function RasGetConnectStatus Lib "RasApi32.dll" Alias
"RasGetConnectStatusA" _
(ByVal hRasCon As Long, lpStatus As Any) As Long

Private Const RAS95_MaxEntryName = 256
Private Const RAS95_MaxDeviceType = 16
Private Const RAS95_MaxDeviceName = 32
Private Type RASCONN95
dwSize As Long
hRasCon As Long
szEntryName(RAS95_MaxEntryName) As Byte
szDeviceType(RAS95_MaxDeviceType) As Byte
szDeviceName(RAS95_MaxDeviceName) As Byte
End Type
Private Type RASCONNSTATUS95
dwSize As Long
RasConnState As Long
dwError As Long
szDeviceType(RAS95_MaxDeviceType) As Byte
szDeviceName(RAS95_MaxDeviceName) As Byte
End Type

Public Function IsConnected() As Boolean
Dim TRasCon(255) As RASCONN95
Dim lg As Long
Dim lpcon As Long
Dim RetVal As Long
Dim Tstatus As RASCONNSTATUS95
TRasCon(0).dwSize = 412
lg = 256 * TRasCon(0).dwSize
RetVal = RasEnumConnections(TRasCon(0), lg, lpcon)
Tstatus.dwSize = 160
RetVal = RasGetConnectStatus(TRasCon(0).hRasCon, Tstatus)
If Tstatus.RasConnState = &H2000 Then
IsConnected = True
Else
IsConnected = False
End If
End Function

Private Sub Form_Load()
'если есть соединение, то IsConnected() = True, иначе False
MsgBox IsConnected()
End Sub
'----

 Полезные коды на Visual BASIC
Добавление элемента CheckBox в элемент ComboBox

Создайте проект с формой (на форму 1 ComboBox и 1 CheckBox).

'----
'Добавьте на форму 1 ComboBox и 1 CheckBox
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" _
(ByVal hwndParent As Long, ByVal hwndChildAfter As Long, _
ByVal lpszClass As String, ByVal lpszWindow As String) As Long
Private Declare Function SendMessageLong Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _
ByVal lParam As Long) As Long
Const EC_LEFTMARGIN = &H1
Const EC_RIGHTMARGIN = &H2
Const EC_USEFONTINFO = &HFFFF&
Const EM_SETMARGINS = &HD3&
Const EM_GETMARGINS = &HD4&

Private Sub AddCheckToCombo(ByRef chkThis As CheckBox, _
ByRef cboThis As ComboBox)
Dim lhWnd As Long
Dim lMargin As Long
lhWnd = FindWindowEx(cboThis.hwnd, 0, "EDIT", vbNullString)
If (lhWnd <> 0) Then
lMargin = chkThis.Width \ Screen.TwipsPerPixelX + 2
SendMessageLong lhWnd, EM_SETMARGINS, EC_LEFTMARGIN, lMargin
chkThis.BackColor = cboThis.BackColor
chkThis.Move cboThis.Left + 3 * Screen.TwipsPerPixelX, _
cboThis.Top + 2 * Screen.TwipsPerPixelY, chkThis.Width, _
cboThis.Height - 4 * Screen.TwipsPerPixelY
chkThis.ZOrder
End If
End Sub

Private Sub Form_Load()
Check1.Width = 130
Check1.Height = 130
AddCheckToCombo Check1, Combo1
End Sub
'----

 Практикум на примерах
Windows API (Часть 1 - Общие сведения)

    Windows API - значительная и мощная библиотека дополнительных функций, доступная любому VB-программисту. Многие из них пользуются просто готовыми решениями, найденными в различных книгах и Интернете, не очень задумываясь о сути этой технологии. Это приемлимо при решении простых задач, но для серьезной работы предпочтительнее более детально разобраться с основными принципами использования функций Windows API.

      Многим начинающим программистам аббревиатура API кажется таинственной и пугающей. На самом деле Windows API или Application Programming Interface (интерфейс прикладного программирования) - это набор готовых функций, которые предоставляет программисту операционная система Windows. Эти функции могут вызываться из VB для выполнения тех задач, решить которые невозможно, используя стандартный код VB. Например при помощи Windows API можно легко перезагрузить компьютер, работать с системным реестром и файлами инициализации, но даже то, что можно сделать средствами VB порой легче, быстрее и красивее выходит при правильном использовании фунуций API. Да и к тому же множество функций, включенный в VB, являются некоторыми оболочками или надстройками над Windows API.

      В общем случая, понятие API схоже с тем, что раньше чаще называли библиотекой подпрограмм, однако здесь подразумеваеться особая категория таких библиотек. В ходе разработки любого сложного приложения (Application) для конечного пользователя формируется набор специфических внутренних функций, используемых для реалицации данной программы, который называется Application API. Однако, часто оказывается, что эти функции могут эффективно использоваться и для создания других прилодений, в том числе другими программистами. В этом случае авторы, исходя из стратегии продвижения своего продукта, должны решить вопрос: открывают ли они доступ к этому набору другим пользователям? При утвердительном ответе в описании программного пакета в качестве положительной характеристики появляется фраза: "комплект включает открытый набор API функций". Соответственно Winodws API - это набор функций, являющихся частью операционной системы и в то же время - доступный для любого другого приложения, в том числе написанного с помощью VB. В этом плане вполне оправдана аналогия с набором прерываний BIOS/DOS который, по сути являлся DOS API.

      Итак, чтоже может заставить программиста использовать Windows API? Несмотря на то, что VB обладает огромным множеством различных встроенных функций, в процессе более-менее серьезной разработки обнаруживается, что их возможностей зачастую не хватает для решения поставленных задач. При этом программисты-новички часто начинают жаловаться на недостатки VB и подумывать о смене инструмента, не подозревая, что в их распоряжении имеется более двух тысяч различных функций и надо только уметь ими воспользоваться.

      С точки зрения программиста функции Windows API агалогичны обычным функция VB. Они имеют набор входных и выходных параметров, а иногда и возвращают в вызвавшую их программу некоторое значение. Однако, функции API обычно уже скомпилированы в отдельный файл, называемый DLL (dynamic link library - динамически связываемая библиотека). Для использования этих функций необходимо добавить несколько строк кода, чтобы определить их в качестве внешних для VB процедур. Другими словами, для использования функций Windows API вы должны сначала объявить их в разделе General Declaration программного модуля. Это похоже на объявление переменных с той лишь разницей, что переменные вы связываете с определенным местом в оперативной памяти, а функции API - с определенной внешней DLL. В операторе Declare необходимо указать все параметры функции API, а также имя библиотеки в которой она размещена и тип возвращаемых данных. В отличии от обычных функций VB объявление API не содержит программного кода. Оно представляет собой строку, указывающую на содержащую эту функцию DLL. В большинстве операторов Declare используется ключевое слово Alias которое определяет действительное имя функции в библиотеке. Оно может не совпадать с именем используемым в вашей программе. Например такое название функции как _lopen не допустимо в VB, хотя в языке C широко распространена практика начинать имена функций со знака подчеркивания. Эта проблема и решается при помощи ключевого слова Alias. Рассмотрим простой конкретный пример:

Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags as long, ByVal _
dwReserved as long) as long
      Как видите, здесь указано имя функции ExitWindowsEx, имя библиотеки user32 и список параметров. После ввода этого оператора функция ExitWindowsEx "видна" из VB и ей можно пользоваться. Однако, перед обращением к этой функции вы должны указать конкретное значение двух параметров. Следующие константы описывают допустимые значение первого параметра uFlags:
Public Const EWX_FORCE = 4
Public Const EWX_LOGOFF = 0
Public Const _
EWX_REBOOT = 2
Public Const EWX_SHUTDOWN = 1
      Второй параметр dwReserved типичен для многих функций Windows API. Это зарезервированный параметр, не предназначенный для общего использования, т.е. для него просто можно указать значение 0. Теперь все готово и вы можете из любого места своей программы выключать или перезагружать компьютер:
Dim LretVal as Long
LretVal = ExitWindowsEx(EWX_REBOOT, 0)
      Итак, о чем еще стоит упомянуть здесь же? К сожалению в справочной системе VisualBasic отсутствует описание хотя бы части Windows API. В комплект поставки входит только файл win32api.txt и приложение API Viewer. При помощи этих средств вы можете легко найти объявление необходимой функции по её имени и значение различных констант, а так же описание специфических типов.

 Вопросы / Ответы
Отправитель вопроса Сурменок Павел
Здрасьте!
Может кто-нибудь даст примерчик или научит меня, простого чайника, как работать с MS Agent?
С наилучшими пожеланиями, Сурменок Павел
 Объявления
Требуются люди
Хочу напомнить, что еще пусты многие вакансии рассылки:
- Рубрика "Рецензия книг"
- Рубрика "Практикум на примерах"
Также можно просто присылать коды.
Проекты группы СообЧа-VB
Вот проекты которые на данный момент в рабочем состоячнии:
- Сообчайлер: почтовый клиент
- Крестики - Нолики: игра :)
- Secret CODE: шифратор
- Inet TIMER: блокиратор интернета

Код моей кнопки:

<!-- SnoozeX Design "PLAY" -->
<a href="http://snoozex.boom.ru" TARGET="_blank"><BR><IMG SRC="http://snoozex.boom.ru/new.gif" WIDTH=88 HEIGHT=31 BORDER=1 ALT="SnoozeX Design"></a>
<!-- SnoozeX Design "END" -->

Выпуск подготовили:                    
@LEXis
Дмитрий Данелия
@LEXis ICQ uin : 14912636
Подписаться на рассылку Кувалина Алексея
Мир программирования на Visual BASIC и HTML
© 2000 - 2001 @LEXis & Design by SnoozeX Design
Рассылка является составной частью проекта "СообЧа - СООБщество ЧАйников"
Сайт СообЧа: http://www.soobcha.ru/
Сайт группы по VB: http://soobcha-vb.narod.ru/
Подписаться на сообщество
© 2000 - 2001 СообЧа (СООБщество ЧАйников)
Спасибо за внимание. Ваш @LEXis

http://subscribe.ru/
E-mail: ask@subscribe.ru
Relayed by Corbina
Рейтингуется SpyLog
Хостинг от uCoz