Visual Basic: новости сайтов, советы, примеры кодов.
Выпуск 104.


VBNet VBMania
Голосование:

Покупали ли Вы CD или книги с сайта VBNet.Ru?

Да, конечно
Только книги
Только диски
Просто игнорирую




Рассылки Subscribe.Ru
VB.NET-World


Рассылки Subscribe.Ru
Старые игры

Доска почёта:

Sergey Y. Tkachev
Кононенко Роман
Kirill
Sergey Sapozhnikov
Sobic

Ссылки:

  • Улицы VB
  • Использование VB
  • Азбука VB
  • Улицы VB
  • Кирпичики VB
  • CообЧа VB
  • VB по русски
  • Snoozex Design
  • IgorykSoft
  • Господа!!! читайте MSDN!!!

    Несколько слов от автора:

       Опять новый выпуск. Читайте новости.
    Читайте!


    Содержание выпуска




    Книги

    Переход на VB .NET. Стратегии, концепции, код (цена ~ 158 руб.)

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

    Автор(ы): Дан Эпплман, Издательство: Питер, 2002 г.


    Программирование на VB.NET. Учебный курс (цена ~ 119 руб.)

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

    Автор(ы): Г. Корнелл, Дж. Моррисон, Издательство: Питер, 2002 г.


    VB.NET для разработчиков (цена ~ 125 руб.)

    Основная задача книги - быстро ознакомить разработчиков Visual Basic с изменениями в .NET Framework. Программисты, использующие Java, C++, Delphi или другие инструменты разработки приложений и интересующиеся Visual Basic или технологией .NET Framework, также найдут эту книгу полезной. Хотя книга посвящена Visual Basic.NET, ее основная цель - продемонстрировать взаимодействие Visual Basic и ...

    Автор(ы): Кит Франклин, Издательство: Вильямс, 2002 г.




    Остальные книги о VB можно найти
    здесь.

    наверх


    Citycat by Email

       Программа Citycat by Email позволяет работать с сервером Subscribe.ru с помощью электронной почты. Теперь Вам не нужно тратить деньги на работу в online и просматривать мегабайты рекламы для того, чтобы подписаться на нужную рассылку! Вам просто необходимо скачать небольшую базу данных по всем рассылкам каталога с нашего сайта, после чего Вы сможете подписываться и отписываться от рассылок, заказывать архивы прошлых выпусков, выполнять поиск по каталогу рассылок и многое другое.
       Программу Citycat by Email можно бесплатно загрузить с сайта http://sapisoft.h1.ru.

    наверх


    Новости сайта VBNet

    Дата: 26.10.2002 06:40 | Раздел: Примеры кода | Автор: Vovk Sergey

    ListMenu - Показывает, как превратить обычное меню в неограниченный список.

    Дата: 24.10.2002 06:38 | Раздел: Примеры кода | Автор: Bilenko Anatoly

    3dMOtion - Пример имитации вращения объекта без использованя матриц перехода из 3д в 2д.



    Последние 20 тем форума на VBNet.Ru:

    02:30 / 27 окт.  Кому надо - контролы "а ля ХР" под .NET | Хитов: 4 |  Ответов: 1
    20:33 / 26 окт.  Поиск файлов на диске | Хитов: 10 |  Ответов: 2
    19:54 / 26 окт.  Отцы Direct Икса!!! Помогите | Хитов: 12 |  Ответов: 3
    18:09 / 26 окт.  Тип данных LPCTSTR | Хитов: 5 |  Ответов: 1
    14:29 / 26 окт.  CallByName | Хитов: 5 |  Ответов: 0
    06:35 / 26 окт.  Заголовки окон | Хитов: 15 |  Ответов: 0
    04:57 / 26 окт.  Ну неужели никто не знает??? | Хитов: 34 |  Ответов: 2
    21:34 / 25 окт.  Папка Fonts | Хитов: 16 |  Ответов: 1
    20:22 / 25 окт.  ImageBox | Хитов: 28 |  Ответов: 6
    19:02 / 25 окт.  VB | Хитов: 33 |  Ответов: 7
    18:54 / 25 окт.  window ontop в XP | Хитов: 10 |  Ответов: 0
    16:59 / 25 окт.  Печать из БД в Ворде (VB 6) | Хитов: 10 |  Ответов: 0
    14:16 / 25 окт.  Возможно ли на VB отслеживать пакеты? | Хитов: 28 |  Ответов: 4
    11:27 / 25 окт.  Говорят, был здесь код (не нашел): символы вмес... | Хитов: 37 |  Ответов: 2
    09:11 / 25 окт.  GetTableName | Хитов: 21 |  Ответов: 1
    02:08 / 25 окт.  VB6 Migration toll, как его доустановить до VB7 | Хитов: 19 |  Ответов: 2
    02:02 / 25 окт.  В VB7 при закрытии окна мигает работающее прило... | Хитов: 14 |  Ответов: 1
    00:47 / 25 окт.  Системный регистр??? | Хитов: 28 |  Ответов: 2
    00:42 / 25 окт.  EXEшник запускается ТОЛЬКО с моего компа! | Хитов: 60 |  Ответов: 7
    23:31 / 24 окт.  Ещё один(Вопросик) | Хитов: 34 |  Ответов: 4


    Последние поступления в Библиотеку кодов:



    наверх


    Новости сайта VBMania



    наверх


    Новости сайта Азбука VB



    наверх


    Доска объявлений

       Ищу телеработу.

    • Переводы: английский, украинский, русский.
    • Cipper программист.
    • Assembler программист.
    • PIC разработчик
    • композитор
    • Прогрессивные стили
    • 3D анимация
    • GIF анимация
    Антон Лозовский.

    наверх


    Мои программы

    BalloonMessage for MS Agent

       BalloonMessage for Microsoft Agent реализует диалог программы с пользователем, используя при этом технологию Microsoft Agent. OCX реализует три типа диалоговых окон: InputBox, MsgBox и MsgLabels.

    Авторы: Шатрыкин Иван и Павел Сурменок.

    наверх

    Вопрос/Ответ

    Здесь Вы можете задать вопрос, или ответить на уже имеющиеся вопросы.

    Вопросы:


    Автор вопроса:
    Меркуль Юрий

    Ответ ожидается по этому адресу

       У меня вот какой вопрос - пишу:

    Private Sub Command1_Click()

    a = a + 1
    If Text2.Text = "" Then
    Winsock1.RemoteHost = "ip адрес сервера" + ad
    Winsock1.RemotePort = Text1.Text
    Winsock1.Connect
    Winsock2.RemotePort = Text1.Text
    Winsock2.RemoteHost = "ip адрес сервера" + ad
    Winsock2.Connect
    Winsock1.SendData Text3.Text
    Winsock2.SendData Text2.Text
    Winsock1.SendData "START"
    Winsock1.SendData Text3.Text
    If LISMCOM.Text1.Text <> "OK" Then MsgBox "NO!"
    Else
    Winsock1.RemotePort = Text1.Text
    Winsock1.RemoteHost = Text2.Text
    Winsock1.Connect
    Winsock2.RemotePort = 1002
    Winsock2.RemoteHost = Text2.Text
    Winsock2.Connect
    End If
    End Sub

    Запускаю... На Winsock1.SendData Text3.Text пишет ошибку №40006: "Wrong protocol or connection state" и т.д. Может кто подскажет, что мне делать?


    Автор вопроса: alex

    Ответ ожидается по этому адресу

       Есть add-in для VB, как из него добавлять в активный проект формы , меню, и другие элементы управления ??? и как оперировать их свойствами??


    Автор вопроса: Dr.Max

    Ответ ожидается по этому адресу

       Как измерять скорость кода программы?????????
    Чего-то сшал про такую апи - функцию.


    Автор вопроса: Dr.Max

    Ответ ожидается по этому адресу

       Есть текстовый файл ,10 столбцов на 10 сток ,еще есть массив ,тоже 10х10 ,а теперь вопрос: как загнать файл в массив ?


    Автор вопроса: Dr.Max

    Ответ ожидается по этому адресу

       Как сохранить рисунок в 8-битном цвете, причём ,оптимизировать так ,чтобы сохранялись только те цвета ,которые есть на рисунке .
    Т.е. так как делает 3ds max , когда сохраняешь рисунки в bmp в 256 цветов.
    Ну или подскажите какая программа может так делать.


    Автор вопроса: Marakonn

    Ответ ожидается по этому адресу

       Пишу нечто вроде эквалайзера. Подскажите, кто знает, или дайте ссылку, как можно определить частоту выводимого через звуковуху звука и "громкость" этой частоты. И вообще, можно как-нибудь из VB работать со звуковухой (например выводить звук определенной частоты и др.)? Желательно примеры слать на email.




    Ответы:


    Вопрос:

       Как измерять скорость кода программы?????????
    Чего-то сшал про такую апи - функцию.

    Ответ:

    Автор ответа: Dr.Max

    Как измерять скорость кода программы?????????
    Чего-то сшал про такую апи - функцию.


    Вопрос:

       1. Для просмотра HTML странички к програме прицепил объект WebBrowser. Задаю свойству Navigate полный путь и имя файла. Открывает все нормально. В документе есть ссылки внитри текста. При нажатии на любую из них ругается, что немогу открыть страницу и т.д. (будто ее не существует). Хотя какое-то время назад (как только я начинал делать свою програму) все работало нормально. Что делать.

    2. Записываю в фаил строку текста. В нем есть запятые, точки, все как положено. При чтении из фала VB почемуто воспринимает знаки препинания как разделители записей, и , соответственно, они пропадают. Выручайте, мож кто знает. Записываю в фаил по OUTPUT, читаю INPUT.

    Ответ:

    Автор ответа: Oxygen Specman

    А ты не пробовал использовать оператор LINE INPUT? Читает всю строку целиком. Используется так LINE INPUT номер файла, переменная.
    Переменная должна быть строкового типа.


    Вопрос:

       1. Для просмотра HTML странички к програме прицепил объект WebBrowser. Задаю свойству Navigate полный путь и имя файла. Открывает все нормально. В документе есть ссылки внитри текста. При нажатии на любую из них ругается, что немогу открыть страницу и т.д. (будто ее не существует). Хотя какое-то время назад (как только я начинал делать свою програму) все работало нормально. Что делать.

    2. Записываю в фаил строку текста. В нем есть запятые, точки, все как положено. При чтении из фала VB почемуто воспринимает знаки препинания как разделители записей, и , соответственно, они пропадают. Выручайте, мож кто знает. Записываю в фаил по OUTPUT, читаю INPUT.

    Ответ:

    Автор ответа: Андрей Никитин

    По поводу записи-чтения:

    Выдержка из MSDN:
    Unlike the <Input #> statement, the <Input> function returns all of the characters it reads,
    including commas, carriage returns, linefeeds, quotation marks, and leading spaces.

    Иными словами используй Input вместо Input# - не будут фильтроваться запятые, кавычки и т.д.


    Вопрос:

       Как узнать тип объектной переменной в VB6?
    Я присваиваю переменной типа Variant объект, например Node или ListItem или ещё какой то, как узнать какого типа в данный момент эта переменная?

    Ответ:

    Автор ответа: ViTal

    Воспользуйся встроенной функцией бэйсика - TypeName. Можешь попробовать ещё и VarType.


    Вопрос:

       народ не поможетели в такой ситуации :нужна функция которой я даю строку текста и символ (букву,цифру либо спец символ), а она мне возращает слово в котором есть этот знак (не его номер), да и ещё слово может состоять не только из букв, а и из смеси букв, цифр и заков.

    Ответ:

    Автор ответа: amrita

    Предлагаю такой вариант.
    Формат строки предполагает, что разделителем слов является пробел. Функция берет их Text1.Text строку, из Text2.Text љсимвол, результат поиска выводит в Text3.Text.
      
    Option Explicit
    Dim i As Long
    Dim exist As Boolean
    Dim symbol, Xword As String
      
    Private Sub Command1_Click()
    exist = False
    For i = 1 To Len(Text1.Text)
    symbol = Mid(Text1.Text, i, 1)
    If symbol = " " Then
       If exist Then
         Text3.Text = Xword
         If MsgBox("Искать дальше?", vbOKCancel) = vbCancel Then
           Exit Sub
         Else
           Text3.Text = ""
           exist = False
         End If
       Else
       End If
       Xword = ""
    Else
       Xword = Xword + symbol
       If symbol = Text2.Text Then exist = True
    End If
    Next i
    MsgBox ("Готово!")
    End Sub


    Вопрос:

       Как использовать в Basic функцию Rnd для любых символов(букв.цифр)
    Напешите код. Если кто знает.

    Ответ:

    Автор ответа: sv

    Можно испольховать ASCII коды

           Dim nNum As Integer
           nNum = Int(Rnd * 255)
           Print nNum, Chr$(nNum)


    Вопрос:

       Как использовать в Basic функцию Rnd для любых символов(букв.цифр)
    Напешите код. Если кто знает.

    Ответ:

    Автор ответа: amrita

    Насколько я понял вопрос, необходимо, чтобы функция возвращала случайный символ или строку любых символов. Могу предложить такой вариант.
    1. Любой случайный символ
    Symbol=Chr(Int(255 * Rnd(1))).
    2. Строка случайных символов (Length – ее длина)
    For i = 1 To length
    MyString=MyString+ Chr(Int(255 * Rnd(1)));
    Next i
    Возвращаются все символы, т.е. не только буквы и цифры, но и специальные. Чтобы исключить последние, нужно добавить проверку кода символа по таблице. Например, коды русских букв 192…255, английских 65…90 и 97…122. и т.д. Таблица есть в Help’e (Characters Set).


    Вопрос:

       Как использовать в Basic функцию Rnd для любых символов(букв.цифр)
    Напешите код. Если кто знает.

    Ответ:

    Автор ответа: Renat Rahimov

    Dim a As String, b As Byte
    Randomize Timer
    b = Rnd * 255 ' b - номер символа в стандарте ASCII (от 0 до 255)
    a = Chr(b) ' a - и есть случайный символ


    Вопрос:

       Как использовать в Basic функцию Rnd для любых символов(букв.цифр)
    Напешите код. Если кто знает.

    Ответ:

    Автор ответа: Tibor

    Rnd(255) - где 255 ето придел допустимого значения
    от сюда и пляшем :)


    Вопрос:

       Как скомпилировать проект, что бы он работал без инсталляции и использования MSVBVM60.DLL (на другом компе)?

    Ответ:

    Автор ответа: -=CBK=-CRaSH

    Воспользуйся программой Fusion v1.0 она засунет MSVBVM6.0 прямо в EXE


    Вопрос:

       Как скомпилировать проект, что бы он работал без инсталляции и использования MSVBVM60.DLL (на другом компе)?

    Ответ:

    Автор ответа: Tibor

    Ищи програмулину которая называется VB Power Wrap или что-то вроде того.
    Но учто, что отныне твой exe-шник невероятных размеров :)


    Вопрос:

       Как скомпилировать проект, что бы он работал без инсталляции и использования MSVBVM60.DLL (на другом компе)?

    Ответ:

    Автор ответа: Diman

    Для того, чтобы программа не обращалась к файлам динамической библиотеки vb6. Надо в опциях компиляции во вкладке "Compile" выбрать "Compile to Native Code". Работает только начиная с версии 6.


    Вопрос:

       нужно сделать чтобы прога определяла имя своего файла и место нахождения
    app.exeName - че то не работае

    Ответ:

    Автор ответа: Tibor

    А что он тебе выдаёт?
    Попробуй склмпилить exe-шник и запустить его.
    Всё должно работать.


    Вопрос:

       Как определить на каком элементе управления установлен фокус? Желательно с примером.

    Ответ:

    Автор ответа: Oxygen Specman

    В VB есть такое событие GotFocus. Берешь прописываешь его для каждого объекта (в виде подпрограмм, т.е. Sub) и смотришь какая из них сработает.


    Вопрос:

       Подскажите ссылки где можно найти документацию и исходняки для 3D програмирования DirectX. Если нетрудно киньте на E-Mail исходняки, можно урезая файлы .3ds .x и т.д. Мне нужно именно 3D, а не плоская графика.

    Ответ:

    Автор ответа: Oxygen Specman

    Попробуй среду программирования Dark Basic, он обычно идет на дисках - сборниках Бейсиков. Можешь поискать в инете, занимает около 90 Мб. Он идет со справкой и примерами. В нем, насколько я помню можно использовать объекты из 3D Studio Max. Вывод графики в нем осуществляется через Direct3D


    Вопрос:

       Вопрос 1: Как сделать так,чтобы программу невозможно было выгрузить, а если её выгрузить, то запускалась бы копия программы.
    Вопрос 2: У меня есть программа. Как сделать так, чтобы она брала данные из внешнего файла (например .txt) и загружала их оттуда (В этом файле должны находиться переменные вместе с данными)

    Ответ:

    Автор ответа: Артём Кривокрисенко

    Делается это так.

    Sub Form_Unload(Cancel as integer)
             Cancel=1
    end sub
    (программу трудно будет выгрузить)

    sub Form_unload(Cancel as Integer)
             shell App.path & "\" & app/exename
    end sub
    (программа при завершении работы запускает свою копию.)


    Чтение данных из файла

    dim strAll as string
    dim strTemp as string

    open strPath for input as #1
    while not eof(1)
    LineInput #1,strTemp
    strAll=strTemp & vbCrLf
    wend
    strAll=left(strAll,len(strAll)-2)

    В переменную strAll будут загружены все данные из файла Path


    Вопрос:

       Хелп плиз, как зделать так, чтоб моя программа повторно не запускалась а при попытке повторного запуска выдала сообщение типа "программа уже запущена"

    Ответ:

    Автор ответа: Eugene KRUGLOFF

    If App.PrevInstance Then End ' или MsgBox


    Вопрос:

       Как мне по имеющемуся пути осуществить перебор всех файлов, находящихся в данной конкретной папке (исключая подпапки).
    Есть ли такая вояможность в VB6 или какими функциями API необходимо польяоваться?

    Ответ:

    Автор ответа: Артём Кривокрисенко

    dim strFileName as string
    dim strPath as string
    strPath="C:\windows\"

    strFileName=dir(strPath & "*.*")
    while strFileName <> ""
    'Сделать что-нибудь с файлом (strPath & strFileName)
    strFileName=dir
    wend


    Вопрос:

       1. Как из ВБ 6 открыть мои док, или например нажать кнопку в окне установки связи с Интернет
    2. У меня на вэб-странице есть ВБ 6-форма с окном Text, в который можно вписывать текст.Как добавить этот текст в мою форму на сервере, чтобы при новом открытии страницы этот текст сохранялся

    Ответ:

    Автор ответа: Eugene KRUGLOFF

    По вопросу #1 есть длинный ответ.
    За ответом можешь отмылить мне.


    Вопрос:

       Подскажите как в VB написать подобие ping(пинга) через API.

    Ответ:

    Автор ответа: -=CBK=-CRaSH

    Лави


    Ping.bas :
      
      
    Type Inet_address
         Byte4 As String * 1
         Byte3 As String * 1
         Byte2 As String * 1
         Byte1 As String * 1
    End Type
      
    Public IPLong As Inet_address
      
    Type WSAdata
         wVersion As Integer
         wHighVersion As Integer
         szDescription(0 To 255) As Byte
         szSystemStatus(0 To 128) As Byte
         iMaxSockets As Integer
         iMaxUdpDg As Integer
         lpVendorInfo As Long
    End Type
      
    Type Hostent
         h_name As Long
         h_aliases As Long
         h_addrtype As Integer
         h_length As Integer
         h_addr_list As Long
    End Type
      
    Type IP_OPTION_INFORMATION
         TTL As Byte ' Time to Live (used for traceroute)
         Tos As Byte ' Type of Service (usually 0)
         Flags As Byte ' IP header Flags (usually 0)
         OptionsSize As Long ' Size of Options data (usually 0, max 40)
         OptionsData As String * 128 ' Options data buffer
    End Type
      
    Public pIPo As IP_OPTION_INFORMATION
      
    Type IP_ECHO_REPLY
         Address(0 To 3) As Byte ' Replying Address
         Status As Long ' Reply Status
         RoundTripTime As Long ' Round Trip Time in milliseconds
         DataSize As Integer ' reply data size
         Reserved As Integer ' for system use
         data As Long ' pointer to echo data
         Options As IP_OPTION_INFORMATION ' Reply Options
    End Type
      
    Public pIPe As IP_ECHO_REPLY
      
    ' WSock32 Subroutines and Functions
      
    Declare Function gethostname Lib "wsock32.dll" (ByVal hostname$, HostLen&) As Long
    Declare Function gethostbyname& Lib "wsock32.dll" (ByVal hostname$)
    Declare Function WSAGetLastError Lib "wsock32.dll" () As Long
    Declare Function WSAStartup Lib "wsock32.dll" (ByVal wVersionRequired&, lpWSAData As WSAdata) As Long
    Declare Function WSACleanup Lib "wsock32.dll" () As Long
      
    ' Kernel32 Subroutines and Functions
      
    Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (hpvDest As Any, hpvSource As Any, ByVal cbCopy As Long)
      
    ' ICMP Subroutines and Functions
      
         ' IcmpCreateFile will return a file handle
         
    Declare Function IcmpCreateFile Lib "icmp.dll" () As Long
          
          ' Pass the handle value from IcmpCreateFile to the IcmpCloseHandle. It will return
          ' a boolean value indicating whether or not it closed successfully.
          
    Declare Function IcmpCloseHandle Lib "icmp.dll" (ByVal HANDLE As Long) As Boolean
      
         ' IcmpHandle returned from IcmpCreateFile
         ' DestAddress is a pointer to the first entry in the hostent.h_addr_list
         ' RequestData is a null-terminated 64-byte string filled with ASCII 170 characters
         ' RequestSize is 64-bytes
         ' RequestOptions is a NULL at this time
         ' ReplyBuffer
         ' ReplySize
         ' Timeout is the timeout in milliseconds
      
    Declare Function IcmpSendEcho Lib "ICMP" (ByVal IcmpHandle As Long, ByVal DestAddress As Long, _
         ByVal RequestData As String, ByVal RequestSize As Integer, RequestOptns As IP_OPTION_INFORMATION, _
          ReplyBuffer As IP_ECHO_REPLY, ByVal ReplySize As Long, ByVal TimeOut As Long) As Boolean
    '''''
    Полностью форма
    VERSION 4.00
    Begin VB.Form Form1
        BorderStyle = 1 'Fixed Single
        Caption = "VB4032-ICMPEcho (Created by Jim Huff)"
        ClientHeight = 3765
        ClientLeft = 3840
        ClientTop = 4035
        ClientWidth = 8130
        BeginProperty Font
           name = "Arial"
           charset = 0
           weight = 400
           size = 8.25
           underline = 0 'False
           italic = 0 'False
           strikethrough = 0 'False
        EndProperty
        Height = 4170
        Icon = "Form1.frx":0000
        Left = 3780
        LinkTopic = "Form1"
        MaxButton = 0 'False
        MinButton = 0 'False
        ScaleHeight = 3765
        ScaleWidth = 8130
        Top = 3690
        Width = 8250
        Begin VB.TextBox Text6
           Height = 315
           Left = 2625
           TabIndex = 15
           Text = "5"
           Top = 825
           Width = 390
        End
        Begin VB.CommandButton Command2
           Caption = "&Clear View"
           Height = 390
           Left = 6450
           TabIndex = 13
           Top = 675
           Width = 1590
        End
        Begin VB.CommandButton Command3
           Caption = "&Trace"
           Height = 390
           Left = 6450
           TabIndex = 12
           Top = 150
           Width = 765
        End
        Begin VB.TextBox Text5
           Height = 315
           Left = 4425
           TabIndex = 10
           Text = "32"
           Top = 450
           Width = 390
        End
        Begin VB.TextBox Text4
           Alignment = 2 'Center
           Height = 315
           Left = 4425
           MaxLength = 1
           TabIndex = 9
           Text = "5"
           Top = 75
           Width = 390
        End
        Begin VB.TextBox Text3
           BeginProperty Font
              name = "Terminal"
              charset = 255
              weight = 400
              size = 9
              underline = 0 'False
              italic = 0 'False
              strikethrough = 0 'False
           EndProperty
           Height = 2490
           Left = 75
           MultiLine = -1 'True
           ScrollBars = 3 'Both
           TabIndex = 7
           Top = 1200
           Width = 7965
        End
        Begin VB.TextBox Text2
           Alignment = 2 'Center
           Height = 315
           Left = 4425
           MaxLength = 3
           TabIndex = 1
           Text = "255"
           Top = 825
           Width = 390
        End
        Begin VB.TextBox Text1
           Alignment = 2 'Center
           Height = 315
           Left = 1050
           TabIndex = 0
           Text = "www.microsoft.com"
           Top = 75
           Width = 1965
        End
        Begin VB.CommandButton Command1
           Caption = "&Ping"
           BeginProperty Font
              name = "MS Sans Serif"
              charset = 0
              weight = 400
              size = 8.25
              underline = 0 'False
              italic = 0 'False
              strikethrough = 0 'False
           EndProperty
           Height = 390
           Left = 7275
           TabIndex = 2
           Top = 150
           Width = 765
        End
        Begin VB.Label Label7
           Alignment = 1 'Right Justify
           Caption = "Request T/O (seconds):"
           Height = 240
           Left = 825
           TabIndex = 14
           Top = 900
           Width = 1740
        End
        Begin VB.Label Label6
           Alignment = 1 'Right Justify
           Caption = "# of Chars/Pkt:"
           Height = 240
           Left = 3150
           TabIndex = 11
           Top = 525
           Width = 1140
        End
        Begin VB.Label Label5
           Alignment = 1 'Right Justify
           Caption = "# of Packets:"
           Height = 240
           Left = 3150
           TabIndex = 8
           Top = 150
           Width = 1140
        End
        Begin VB.Label Label4
           Alignment = 1 'Right Justify
           Caption = "TTL:"
           Height = 240
           Left = 3975
           TabIndex = 6
           Top = 900
           Width = 390
        End
        Begin VB.Label Label3
           Alignment = 2 'Center
           BackColor = &H00FFFFFF&
           BorderStyle = 1 'Fixed Single
           Height = 315
           Left = 1050
           TabIndex = 5
           Top = 450
           Width = 1965
        End
        Begin VB.Label Label2
           Alignment = 1 'Right Justify
           Caption = "IPAddress:"
           Height = 255
           Left = 150
           TabIndex = 4
           Top = 525
           Width = 870
        End
        Begin VB.Label Label1
           Alignment = 1 'Right Justify
           Caption = "Host Name:"
           Height = 255
           Left = 75
           TabIndex = 3
           Top = 150
           Width = 975
        End
    End
    Attribute VB_Name = "Form1"
    Attribute VB_Creatable = False
    Attribute VB_Exposed = False
    ' WSock32 Variables
      
    Dim iReturn As Long, sLowByte As String, sHighByte As String
    Dim sMsg As String, HostLen As Long, Host As String
    Dim Hostent As Hostent, PointerToPointer As Long, ListAddress As Long
    Dim WSAdata As WSAdata, DotA As Long, DotAddr As String, ListAddr As Long
    Dim MaxUDP As Long, MaxSockets As Long, i As Integer
    Dim Description As String, Status As String
      
    ' ICMP Variables
      
    Dim bReturn As Boolean, hIP As Long
    Dim szBuffer As String
    Dim Addr As Long
    Dim RCode As String
    Dim RespondingHost As String
      
    ' TRACERT Variables
      
    Dim TraceRT As Boolean
    Dim TTL As Integer
      

    ' WSock32 Constants
      
    Const WS_VERSION_MAJOR = &H101 \ &H100 And &HFF&
    Const WS_VERSION_MINOR = &H101 And &HFF&
    Const MIN_SOCKETS_REQD = 0
      
    Sub GetRCode()
      
         If pIPe.Status = 0 Then RCode = "Success"
         If pIPe.Status = 11001 Then RCode = "Buffer too Small"
         If pIPe.Status = 11002 Then RCode = "Dest Network Not Reachable"
         If pIPe.Status = 11003 Then RCode = "Dest Host Not Reachable"
         If pIPe.Status = 11004 Then RCode = "Dest Protocol Not Reachable"
         If pIPe.Status = 11005 Then RCode = "Dest Port Not Reachable"
         If pIPe.Status = 11006 Then RCode = "No Resources Available"
         If pIPe.Status = 11007 Then RCode = "Bad Option"
         If pIPe.Status = 11008 Then RCode = "Hardware Error"
         If pIPe.Status = 11009 Then RCode = "Packet too Big"
         If pIPe.Status = 11010 Then RCode = "Rqst Timed Out"
         If pIPe.Status = 11011 Then RCode = "Bad Request"
         If pIPe.Status = 11012 Then RCode = "Bad Route"
         If pIPe.Status = 11013 Then RCode = "TTL Exprd in Transit"
         If pIPe.Status = 11014 Then RCode = "TTL Exprd Reassemb"
         If pIPe.Status = 11015 Then RCode = "Parameter Problem"
         If pIPe.Status = 11016 Then RCode = "Source Quench"
         If pIPe.Status = 11017 Then RCode = "Option too Big"
         If pIPe.Status = 11018 Then RCode = " Bad Destination"
         If pIPe.Status = 11019 Then RCode = "Address Deleted"
         If pIPe.Status = 11020 Then RCode = "Spec MTU Change"
         If pIPe.Status = 11021 Then RCode = "MTU Change"
         If pIPe.Status = 11022 Then RCode = "Unload"
         If pIPe.Status = 11050 Then RCode = "General Failure"
         RCode = RCode + " (" + CStr(pIPe.Status) + ")"
      
         DoEvents
         If TraceRT = False Then
         
             If pIPe.Status = 0 Then
                 text3.Text = text3.Text + " Reply from " + RespondingHost + ": Bytes = " + Trim$(CStr(pIPe.DataSize)) + " RTT = " + Trim$(CStr(pIPe.RoundTripTime)) + "ms TTL = " + Trim$(CStr(pIPe.Options.TTL)) + Chr$(13) + Chr$(10)
             Else
                 text3.Text = text3.Text + " Reply from " + RespondingHost + ": " + RCode + Chr$(13) + Chr$(10)
             End If
      
         Else
             If TTL - 1 < 10 Then text3.Text = text3.Text + " Hop # 0" + CStr(TTL - 1) Else text3.Text = text3.Text + " Hop # " + CStr(TTL - 1)
             text3.Text = text3.Text + " " + RespondingHost + Chr$(13) + Chr$(10)
         End If
      
    End Sub
      
    Sub vbGetHostByName()
      
         Dim szString As String
      
         Host = Trim$(Text1.Text) ' Set Variable Host to Value in Text1.text
      
         szString = String(64, &H0)
         Host = Host + Right$(szString, 64 - Len(Host))
      
         If gethostbyname(Host) = SOCKET_ERROR Then ' If WSock32 error, then tell me about it
             sMsg = "Winsock Error" & Str$(WSAGetLastError())
             MsgBox sMsg, vbOKOnly, "VB4032-ICMPEcho"
         Else
             PointerToPointer = gethostbyname(Host) ' Get the pointer to the address of the winsock hostent structure
             CopyMemory Hostent.h_name, ByVal _
             PointerToPointer, Len(Hostent) ' Copy Winsock structure to the VisualBasic structure
      
             ListAddress = Hostent.h_addr_list ' Get the ListAddress of the Address List
             CopyMemory ListAddr, ByVal ListAddress, 4 ' Copy Winsock structure to the VisualBasic structure
             CopyMemory IPLong, ByVal ListAddr, 4 ' Get the first list entry from the Address List
             CopyMemory Addr, ByVal ListAddr, 4
      
             Label3.Caption = Trim$(CStr(Asc(IPLong.Byte4)) + "." + CStr(Asc(IPLong.Byte3)) _
                 + "." + CStr(Asc(IPLong.Byte2)) + "." + CStr(Asc(IPLong.Byte1)))
         End If
      
    End Sub
    Sub CenterForm()
       Form1.Left = (Screen.Width - Form1.ScaleWidth) \ 2
       Form1.Top = (Screen.Height - Form1.ScaleHeight) \ 2
    End Sub
      
    Sub vbGetHostName()
         
         Host = String(64, &H0) ' Set Host value to a bunch of spaces
         
         If gethostname(Host, HostLen) = SOCKET_ERROR Then ' This routine is where we get the host's name
             sMsg = "WSock32 Error" & Str$(WSAGetLastError()) ' If WSOCK32 error, then tell me about it
             MsgBox sMsg, vbOKOnly, "VB4032-ICMPEcho"
         Else
             Host = Left$(Trim$(Host), Len(Trim$(Host)) - 1) ' Trim up the results
             Text1.Text = Host ' Display the host's name in label1
         End If
      
    End Sub
      
    Sub vbIcmpSendEcho()
      
         Dim NbrOfPkts As Integer
      
         szBuffer = "abcdefghijklmnopqrstuvwabcdefghijklmnopqrstuvw" & _
    "abcdefghijklmnopqrstuvwabcdefghijklmnopqrstuvwabcdefghijklmnopqrstuvwabcdefghijklm"
      
         If IsNumeric(Text5.Text) Then
             If Val(Text5.Text) < 32 Then Text5.Text = "32"
             If Val(Text5.Text) > 128 Then Text5.Text = "128"
         Else
             Text5.Text = "32"
         End If
      
         szBuffer = Left$(szBuffer, Val(Text5.Text))
      
         If IsNumeric(text4.Text) Then
             If Val(text4.Text) < 1 Then text4.Text = "1"
         Else
             text4.Text = "1"
         End If
      
         If TraceRT = True Then text4.Text = "1"
      
         For NbrOfPkts = 1 To Trim$(text4.Text)
      
             DoEvents
             bReturn = IcmpSendEcho(hIP, Addr, szBuffer, Len(szBuffer), pIPo, pIPe, Len(pIPe) + 8, 2700)
      
             If bReturn Then
      
                 RespondingHost = CStr(pIPe.Address(0)) + "." + CStr(pIPe.Address(1)) + "." + CStr(pIPe.Address(2)) + "." + CStr(pIPe.Address(3))
      
                 GetRCode
      
             Else ' I hate it when this happens. If I get an ICMP timeout
                         ' during a TRACERT, try again.
      
                 If TraceRT Then
                     TTL = TTL - 1
                 Else ' Don't worry about trying again on a PING, just timeout
                     text3.Text = text3.Text + "ICMP Request Timeout" + Chr$(13) + Chr$(10)
                 End If
      
             End If
      
         Next NbrOfPkts
      
    End Sub
      
    Sub vbWSAStartup()
         
         ' Subroutine to Initialize WSock32
      
         iReturn = WSAStartup(&H101, WSAdata)
      
         If iReturn <> 0 Then ' If WSock32 error, then tell me about it
             MsgBox "WSock32.dll is not responding!", vbOKOnly, "VB4032-ICMPEcho"
         End If
      
         If LoByte(WSAdata.wVersion) < WS_VERSION_MAJOR Or (LoByte(WSAdata.wVersion) = WS_VERSION_MAJOR And HiByte(WSAdata.wVersion) < WS_VERSION_MINOR) Then
             sHighByte = Trim$(Str$(HiByte(WSAdata.wVersion)))
             sLowByte = Trim$(Str$(LoByte(WSAdata.wVersion)))
             
             sMsg = "WinSock Version " & sLowByte & "." & sHighByte
             sMsg = sMsg & " is not supported "
             MsgBox sMsg, vbOKOnly, "VB4032-ICMPEcho"
             End
         End If
      
         If WSAdata.iMaxSockets < MIN_SOCKETS_REQD Then
             sMsg = "This application requires a minimum of "
             sMsg = sMsg & Trim$(Str$(MIN_SOCKETS_REQD)) & " supported sockets."
             MsgBox sMsg, vbOKOnly, "VB4032-ICMPEcho"
             End
         End If
         
         MaxSockets = WSAdata.iMaxSockets
      
         ' WSAdata.iMaxSockets is an unsigned short, so we have to convert it to a signed long
      
         If MaxSockets < 0 Then
             MaxSockets = 65536 + MaxSockets
         End If
      
         MaxUDP = WSAdata.iMaxUdpDg
         If MaxUDP < 0 Then
             MaxUDP = 65536 + MaxUDP
         End If
      
         ' Process the Winsock Description information
      
         Description = ""
      
         For i = 0 To WSADESCRIPTION_LEN
             If WSAdata.szDescription(i) = 0 Then Exit For
             Description = Description + Chr$(WSAdata.szDescription(i))
         Next i
      
         ' Process the Winsock Status information
      
         Status = ""
      
         For i = 0 To WSASYS_STATUS_LEN
             If WSAdata.szSystemStatus(i) = 0 Then Exit For
             Status = Status + Chr$(WSAdata.szSystemStatus(i))
         Next i
      
    End Sub
    Function HiByte(ByVal wParam As Integer)
      
         HiByte = wParam \ &H100 And &HFF&
      
    End Function
    Function LoByte(ByVal wParam As Integer)
      
         LoByte = wParam And &HFF&
      
    End Function
    Sub vbWSACleanup()
      
         ' Subroutine to perform WSACleanup
      
         iReturn = WSACleanup()
      
         If iReturn <> 0 Then ' If WSock32 error, then tell me about it.
             sMsg = "WSock32 Error - " & Trim$(Str$(iReturn)) & " occurred in Cleanup"
             MsgBox sMsg, vbOKOnly, "VB4032-ICMPEcho"
             End
         End If
      
    End Sub
      
    Sub vbIcmpCloseHandle()
       
         bReturn = IcmpCloseHandle(hIP)
         
         If bReturn = False Then
             MsgBox "ICMP Closed with Error", vbOKOnly, "VB4032-ICMPEcho"
         End If
      
    End Sub
      
    Sub vbIcmpCreateFile()
      
         hIP = IcmpCreateFile()
      
         If hIP = 0 Then
             MsgBox "Unable to Create File Handle", vbOKOnly, "VBPing32"
         End If
      
    End Sub
    Private Sub Command1_Click()
      
         vbWSAStartup ' Initialize Winsock
      
         If Len(Text1.Text) = 0 Then
             vbGetHostName
         End If
      
         If Text1.Text = "" Then
             MsgBox "No Hostname Specified!", vbOKOnly, "VB4032-ICMPEcho" ' Complain if No Host Name Identified
             vbWSACleanup
             Exit Sub
         End If
      
         vbGetHostByName ' Get the IPAddress for the Host
      
         vbIcmpCreateFile ' Get ICMP Handle
      
         ' The following determines the TTL of the ICMPEcho
      
         If IsNumeric(Text2.Text) Then
             If (Val(Text2.Text) > 255) Then Text2.Text = "255"
             If (Val(Text2.Text) < 2) Then Text2.Text = "2"
         Else
             Text2.Text = "255"
         End If
      
         pIPo.TTL = Trim$(Text2.Text)
      
         vbIcmpSendEcho ' Send the ICMP Echo Request
      
         vbIcmpCloseHandle ' Close the ICMP Handle
      
         vbWSACleanup ' Close Winsock
      
    End Sub
      
    Private Sub Command2_Click()
      
         text3.Text = ""
      
    End Sub
      
    Private Sub Command3_Click()
      
         text3.Text = ""
      
         vbWSAStartup ' Initialize Winsock
      
         If Len(Text1.Text) = 0 Then
             vbGetHostName
         End If
      
         If Text1.Text = "" Then
             MsgBox "No Hostname Specified!", vbOKOnly, "VB4032-ICMPEcho" ' Complain if No Host Name Identified
             vbWSACleanup
             Exit Sub
         End If
      
         vbGetHostByName ' Get the IPAddress for the Host
      
         vbIcmpCreateFile ' Get ICMP Handle
         
         
         ' The following determines the TTL of the ICMPEcho for TRACE function
      
         TraceRT = True
      
         text3.Text = text3.Text + "Tracing Route to " + Label3.Caption + ":" + Chr$(13) + Chr$(10) + Chr$(13) + Chr$(10)
      
         For TTL = 2 To 255
      
             pIPo.TTL = TTL
      
             vbIcmpSendEcho ' Send the ICMP Echo Request
             DoEvents
      
             If RespondingHost = Label3.Caption Then
      
                 text3.Text = text3.Text + Chr$(13) + Chr$(10) + "Route Trace has Completed" + Chr$(13) + Chr$(10) + Chr$(13) + Chr$(10)
      
                 Exit For ' Stop TraceRT
      
             End If
      
         Next TTL
      
         TraceRT = False
      
         vbIcmpCloseHandle ' Close the ICMP Handle
      
         vbWSACleanup ' Close Winsock
      
    End Sub
      
    Private Sub Form_Load()
      
         ' I have, on many occasions, found the need to be able to perform
         ' a Ping function from within Visual Basic. There are a few OCX
         ' Controls available on the market, however, they all require the
         ' ability for the WinSock stack to support SOCK_RAW.
      
         ' Microsoft does not support Raw Sockets on any of their WinSock1.1
         ' stacks. It also appears that it will not be supported on the
         ' Winsock2.0 stack for Windows95.
    В преференсе добавь Microsoft DAO 3.0 Object Library
    Если не понял пиши
         ' Raw Sockets, however, is supported on NT4.0.
      
         ' Microsoft, due to the lack of support of Raw Sockets, created the
         ' ICMP.DLL in order to perform basic ICMP functions such as PING and
         ' TRACERT.
      
         ' Well, I have finally figured out how to use the ICMP.DLL from Visual
         ' Basic. There are not additives and no preservatives.
      
         ' This program is provided as is, without any warranties. I am providing
         ' it freely. I designed it on Windows95, however, I am sure it will work
         ' on NT3.51. if you use portions of this code, please include some sort
         ' of reference to the author.
      
         ' This program was created by Jim Huff of Edinborg Productions.
      
         ' If you have any questions, you can reach me at:
      
         ' jimhuff@shentel.net
         ' edinborg@shentel.net
      
         CenterForm
      
    End Sub


    Вопрос:

       Как записывать в реестр DWORD параметр, и читать его.
    Напишите пожалуйста пример.

    Ответ:

    Автор ответа: Eugene KRUGLOFF

    Тоже длинный ответ.
    За ответом можешь обратиться ко мне


    Можете заполнить эту форму, либо отослать вопрос СЮДА

    Форма для добавления нового вопроса в этот раздел. Информация отсылается по E-mail владельцу сайта.
    Текст сообщения:
    Ваше имя
    E-mail для ответа

    наверх


    Выпуск подготовили:

    Сурменок Павел