VBNet
VBMania
Голосование: Доска почёта: Sergey Y. Tkachev Кононенко Роман Kirill Sergey Sapozhnikov Sobic Ссылки: |
Господа!!! читайте MSDN!!! Несколько слов от автора:
Опять новый выпуск. Читайте новости.
Читайте! Содержание выпуска
Книги
Остальные книги о VB можно найти здесь. наверх Citycat by Email Программа Citycat by Email позволяет работать с сервером Subscribe.ru с помощью электронной почты. Теперь Вам не нужно тратить деньги на работу в online и просматривать мегабайты рекламы для того, чтобы подписаться на нужную рассылку! Вам просто необходимо скачать небольшую базу данных по всем рассылкам каталога с нашего сайта, после чего Вы сможете подписываться и отписываться от рассылок, заказывать архивы прошлых выпусков, выполнять поиск по каталогу рассылок и многое другое. Программу Citycat by Email можно бесплатно загрузить с сайта http://sapisoft.h1.ru. наверх Новости сайта VBNet
Последние 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 наверх Доска объявлений Ищу телеработу.
наверх Мои программы 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 владельцу сайта. |
|||||||||||||||||||
Выпуск подготовили: |
Сурменок Павел |