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


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

Голосования сайта VBNet.Ru. Результаты голосований передаются на сайт. Проследите, что есть соединение с интернетом.



Рассылки Subscribe.Ru
VB.NET-World
Новости сайта IgorykSoft и советы по программированию
DanSoft о Visual Basic
Visual Basic.NET Уроки.

Ссылки:

  • Улицы VB
  • Использование VB
  • Азбука VB
  • VB на русском
  • Улицы VB
  • Кирпичики VB
  • CообЧа VB
  • MDesign
  • IgorykSoft
  • DanSoft
  • Господа!!! читайте 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 можно найти здесь.

    наверх


    VBNet CD '06 2003

       VBNet.Ru представляет новый компакт диск "VBNet CD '06 2003"!
       CD содержит только новые материалы, почти всё, содержавшееся на предыдущих CD было удалено! Что же нового на CD?
       Добавлено 19 программ в раздел "Софт". Главная программа на этом CD - DirectX 9 SDK. Это пакет для разработки мультимедийных приложений (графика, 3D, звук и т.д.). Имеются примеры, в том числе и на VB .NET.
       Другие программы:
    • .NET Framework 1.1 - новая версия .NET Framework
    • Internet Explorer Web Controls - пакет бесплатных контролов для ASP .NET с исходным кодом
    • Crystall Reports .NET 10 Service Pack 1 - Пакет обновления для Crystall Reports .NET 10.
    • WMI Core Components для Win 9x - ядро WMI (Windows Management Instrumentation) для Win 9x.
    • Terrarium Client - Игра Terrarium.
    • Test Recorder - Программа для автоматизации процесса тестирования .NET приложений.
    • TierDeveloper 2.0
    • MDAC 2.7 - Компоненты для работы с БД от Microsoft. Версия 2.7.
    • Crystall Reports 9 Evaluation Kit - Популярный компонент для генерирования отчётов.
    • MicroGerakL - Бесплатный редактор иконок.
    • EXEScope - редактор ресурсов
    • FileMon - бесплатная программа для мониторинга работы с файловой системой.
    • RegMon - бесплатная программа для мониторинга работы с реестром.
    • Nero Burning Rom 5.5.10.28 - новая версия программы для записи CD-R и CD-RW дисков.
    • Resource Hacker - бесплатный редактор ресурсов
    • SoundForge - Утилита для создания и редактирования звука.
    • WinRAR v 3.22 - архиватор
       Добавлено 19 новых ActiveX и .NET компонентов.
       Добавлено 11 интересных книг о Visual Basic и .NET на английском языке.
       В разделе "Примеры" несколько новых примеров на Visual Basic .NET по работе с Direct3D 9 и .NET Framework. 10 примеров по программированию под новую версию Office - Office 2003. А также движок форума на ASP .NET с исходниками!
       В разделе "Эксклюзив" моя новая статья о криптографии в .NET и несколько примеров на Visual Basic .NET о симметричном шифровании и использовании WMI.
       А также коллекция музыки в формате MIDI и болшая коллекция иконок!
       Ну и конечно свежая версия сайта VBNet.Ru. С момента выхода предыдущего выпуска "VBNet CD" на VBNet.Ru появилось 7 статей, 8 ActiveX-контролов, 44 примера и около 5000 сообщений в форуме!
       Полное содержание диска можно скачать здесь: http://vbnet.ru/vbshop/vbnetcd062003.zip.
       Цена диска, включая почтовые расходы: 100 рублей. Диск распространяется по почте наложенным платежом.
       Магазин компакт-дисков был немного улучшен. Теперь он больше похож на солидные интернет-магазины. Вы можете заказать сразу несколько дисков (сейчас в нашем магазине продаётся 4 диска). Действует система скидок постоянным покупателям.
       Наш магазин расположен по адресу http://vbnet.ru/vbshop/cdshop.asp
       Мы всегда рады Вас видеть!

    наверх


    Удаление HTML-тегов из строки

    Небольшая функция, предназначенная для вырезания HTML-тегов из строки. Я её писал для чата (http://vbnet.ru/chat). Предназначена для использования в ASP. Если Вы хотите использовать её в VB, то нужно добавить объявления переменных.

    Function DeleteTags(Source)
         pos1 = InStr(Source, "<")
         pos2 = 1
         Do While (pos1 > 0) And (pos2 > 0)
             If pos1 > 0 Then
                 pos2 = InStr(pos1, Source, ">")
             End If
             If pos2 = 0 Then
                 Source = Left(Source, pos1 - 1)
             Else
                 Source = Left(Source, pos1 - 1) & Right(Source, Len(Source) - pos2)
             End If
             pos1 = InStr(Source, "<")
         Loop
         DeleteTags = Source
    End Function

    наверх


    Получение путей к системным папкам в .NET

    .NET
    С помощью класса Environment можно узнать путь к различным системным папкам.
    Найти список системных папок и их описания можно в Object Browser (смотрите перечисление System.Environment.SpecialFolder).


    Dim p As System.Environment.SpecialFolder
    Dim s As String

    'Получаем путь к папке SendTo.
    p=Environment.SpecialFolder.SendTo;
    s=Environment.GetFolderPath(p)
    Console.WriteLine("Папка SendTo: {0}.", s)

    'Получаем путь к папке Startup.
    p=Environment.SpecialFolder.Startup
    s=Environment.GetFolderPath(p)
    Console.WriteLine("Папка Startup: {0}.", s)

    наверх


    Симметричное шифрование в .NET

    .NET
    Пример симметричного шифрования данных в .NET.
    На форму установить TextBox (name="txtText"), две кнопки (btnEncrypt и btnDecrypt). И вот такой код:


         '---Симметричное шифрование---

         'Ключ и вектор инициализации для симметричного шифрования
         Dim Key As Byte() = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16} 'Ключ
         Dim IV As Byte() = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16} 'Вектор инициализации

         Private Sub btnEncrypt_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEncrypt.Click
             'Создаём экземпляр класса RijndaelManaged
             Dim RMCrypto As New Security.Cryptography.RijndaelManaged
             'Создаём FileStream, туда будет записана зашифрованная информация
             Dim fs As New IO.FileStream("C:\crypted.dat", IO.FileMode.Create)
             'Создаём CryptoStream
             Dim CryptStream As New Security.Cryptography.CryptoStream(fs, RMCrypto.CreateEncryptor(Key, IV), Security.Cryptography.CryptoStreamMode.Write)
             'Создаём StreamWriter для записи данных в CryptoStream
             Dim SWriter As New IO.StreamWriter(CryptStream)
             'Пишем что-нибудь в CryptoStream
             SWriter.WriteLine(txtText.Text)
             'Закрываем все объекты
             SWriter.Close()
             fs.Close()
             CryptStream.Close()
         End Sub

         Private Sub btnDecrypt_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDecrypt.Click
             'Создаём экземпляр класса RijndaelManaged
             Dim RMCrypto As New Security.Cryptography.RijndaelManaged
             'Создаём FileStream, оттуда будем читать зашифрованную информацию
             Dim fs As New IO.FileStream("C:\crypted.dat", IO.FileMode.Open)
             'Создаём CryptoStream
             Dim CryptStream As New Security.Cryptography.CryptoStream(fs, RMCrypto.CreateDecryptor(Key, IV), Security.Cryptography.CryptoStreamMode.Read)
             'Создаём StreamReader для чтения данных из CryptoStream
             Dim SReader As New IO.StreamReader(CryptStream)
             'Читаем расшифрованную информацию из CryptoStream и пишем её в консоль
             txtText.Text = SReader.ReadToEnd()
             'Закрываем все объекты
             SReader.Close()
             fs.Close()
             CryptStream.Close()
         End Sub

    наверх


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

    BalloonMessage for MS Agent

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

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

    наверх


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

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

    Вопросы:


    Автор вопроса: Илья

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

       Как проверить запущена ли в системе данная программа? (Например Word) Я пользуюсь VB 6.0 и Windows 98.


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

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

       Подскажите пожалуйста как работать с обьектом MS WORD - MS EQUATION???


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

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

       Hi, if anybody has write on vb.net or know where can get source Visual Movement Detection com[nents?


    Автор вопроса: Дмитрий

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

       Есть японский шрифт. Есть текстовый файл на японском в unicod'e. Как его можно в свою прогу яагруяить и в ней редактировать, если ияменение .Font.Charset на японский для японского шрифта MS Mincho не помогает, также как и API-функция SetConsoleOutputCP.
    Может кто-нибудь янает как в веб-брауяерах типа explorer'а программно реализуется ияменение кодировки (меню вид-вид кодировки)


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

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

       Как в vb6 быстрее копировать и перемещать файлы: CopyFile и MoveFileEx, или с помощью FSO?
    И как переименовать файл? Можно переместить его в ту же папку с новым именем, но это не разумно...
    И то же самое для vb.net.


    Автор вопроса: ]CBK[C...R...a...S...H

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

       Я себе Visual Studio 7 .NET установил
    Ну вообще неРеал
    И возникли у меня такие вопросы
    1) Как мне старые проекты открыть(я понял что не как)
    2) Какие библиотеки нужны для переноса приложений на VB.net
    3) Как мне сделать SDI интерфейс(в VB6 в опциях это было, а в .NET я этого не нашол)


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

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

       Подскажите , пожалуйста : Есть файл .dbf , который содержит текстовое поле , в котором кодировка досовская.Как сделать читабельно с помощью ВБ ?


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

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

       Как узнать hDC в такой ситуации:
      
    Dim h as Picture
    Dim k as long
    h=LoadPicture("c:\1.jpg")
      
    BitBlt k,0,0,100,100, ... ,0,0,vbSrcCopy
      
    Место ... нужно вставить hDС загруженной картинки. h.Handle неподходит.


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

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

       Кто знает, какой API вызов возвращает полный путь к файлу (директории), разумеется любой, не текущей


    Автор вопроса: Володя

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

       У меня два вопросика.
    1. Как программно можно переместить мышку?
    2. Как спрятать программу от Ctrl+Alt+Del?


    Автор вопроса: Славик

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

       Что-то натворил с
    VB, а что не знаю, причем случалось такое уже несколько раз за год. После установки и удаления всяких левых программ VB стал прозрачным. Есть меню, панель управления, окно свойств, в общем все что нужно для работы (и все прекрасно работает), только все эти окна висят прямо на рабочем столе как самостоятельные приложения. Что нужно сделать, чтобы вернуть все взад???
    Конечно можно работать и так, только как-то дико, как будто висишь на высоте пятиэтажки, где тут сосредоточишься. Переустановку системы чур не предлагать, это я и сам знаю.


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

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

       Народ кто может помогите! Я написал прогу и в нее добавил компонент.
    Вопрос: Как мне засунуть компонент в корень проги, ведь не у всех есть этот компонент! Если можно то поподробней!


    Автор вопроса: Тим

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

       Хочу чтобы в строке состояния формы был прогрессбар, как в эксплорере, для отображения процесса загрузки "листвью".
    Возможно ли это сделать в обычном контроле "прогрессбар", или же надо рисовать самому?




    Ответы:


    Вопрос:

       Как можно прикрепить звук (wav,mp3) к программе, чтобы потом его воспроизвести (через Mci)?

    Ответ:

    Автор ответа: ]CBK[C...R...a...S...H

    Засовываеш нужный mp3,4,5 в ресурсы программы (RES), а в соде пишеш

    Dim bFile() as Byte
    Dim fHande as byte
    bFile()=loadresdata(101,10) '101-ID твоего ресурса
    fHande=freefile
    open app.path & "\music.mp3" for binary as fHande
    put fHende,1,bFile
    close fHande
    mci.play app.path & "\music.mp3"


    Вопрос:

       Как поместить в панель задач иконку, клик по которой позволит открыть программу, контекстное меню.

    Ответ:

    Автор ответа: Данила

    Разбирайся

    Private Type NOTIFYICONDATA
         cbSize As Long
         hWnd As Long
         uId As Long
         uFlags As Long
         ucallbackMessage As Long
         hIcon As Long
         szTip As String * 64
    End Type

    'разные константы
    Private Const NIM_ADD = &H0
    Private Const NIM_MODIFY = &H1
    Private Const NIM_DELETE = &H2
    Private Const NIF_MESSAGE = &H1
    Private Const NIF_ICON = &H2
    Private Const NIF_TIP = &H4

    Private Const WM_LBUTTONDBLCLK = &H203
    Private Const WM_LBUTTONDOWN = &H201
    Private Const WM_RBUTTONUP = &H205

    'декларируем функцию
    Private Declare Function Shell_NotifyIcon Lib "shell32" Alias
    "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As
    Boolean
    Dim TrayI As NOTIFYICONDATA
    Private Sub Form_Load()
         TrayI.cbSize = Len(TrayI) 'Set the window's handle (this will be used to
    hook the specified window)

         TrayI.hWnd = pichook.hWnd 'какой-то индентификатор (видимо, фича для
    работы с иконкой)

         TrayI.uId = 1& 'Set the flags
         TrayI.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
         'Set the callback message
         TrayI.ucallbackMessage = WM_LBUTTONDOWN

         TrayI.hIcon = imgIcon(2).Picture 'устанавливает картинку, которая будет
    показываться
         TrayI.szTip = "Recent" & Chr$(0) 'устанавливает текст
         Shell_NotifyIcon NIM_ADD, TrayI 'создает иконку

         Me.Hide
    End Sub

    Private Sub Form_Unload(Cancel As Integer)
         'remove the icon
         TrayI.cbSize = Len(TrayI)
         TrayI.hWnd = pichook.hWnd
         TrayI.uId = 1&
         Shell_NotifyIcon NIM_DELETE, TrayI
         End
    End Sub
    Private Sub mnuPop_Click(Index As Integer)
         Select Case Index
             Case 0
                 MsgBox "KPD-Team 1998" + Chr$(13) + "URL:
    http://www.allapi.net/" + Chr$(13) + "E-Mail: KPDTeam@Allapi.net",
    vbInformation + vbOKOnly
             Case 2
                 Unload Me
         End Select
    End Sub
    Private Sub form_MouseDown(Button As Integer, Shift As Integer, X As Single,
    Y As Single)
         Msg = X / Screen.TwipsPerPixelX
         If Msg = WM_LBUTTONDBLCLK Then
             'Left button double click
             mnuPop_Click 0
         ElseIf Msg = WM_RBUTTONUP Then
             'Right button click
             Me.PopupMenu mnuPopUp
         End If
    End Sub
    Private Sub Timer1_Timer()
         Static Tek As Integer
         'Animate the icon
         Me.Icon = imgIcon(Tek).Picture
         TrayI.hIcon = imgIcon(Tek).Picture
         Tek = Tek + 1
         If Tek = 3 Then Tek = 0
         Shell_NotifyIcon NIM_MODIFY, TrayI
    End Sub

    Private Sub выход_Click()
    Form_Unload 0
    End
    End Sub


    Вопрос:

       Есть такая проблема при посимвольной обработке строки...

    Dim TMP As String
    Dim TMP2 As String
    Dim X As Integer

    For X = 1 to Len(TMP) Step 0
    TMP2 = TMP2 & Mid(TMP, X, 1)
    X = X + 1
    Next X

    Проблема в том, что перебор строки состоящий всего из 10 тыс. символов занимает самое малое минуту, а если требуется перебрать 5 000 000 символов, например файл обработать... как можно повысить скорость работы? Повышал приоритет программы до RealTime, но это почти не заметно...
      Буду благодарен любому совету, или примеру намыленному на SoundMuzic@narod.ru;

    Ответ:

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

    Используй для этого байтовый массив. Например так:
      
    Dim TMP as String
    Dim TMP2 as String
    Dim b() as Byte
    Dim i as Integer
    b() = TMP$
    For i = 0 to UBound(b) Step LenB("A")
       TMP2 = TMP2 & Chr$(b(i))
    Next
      
    Будет существенно быстрее за счет исключения из цикла "медленной" функции Mid.
      
    Примечание. LenB("A") нужна для определения корректного смещения в разных версиях VB.



    Ответ:

    Автор ответа: Шарутин Федор Валентинович

    Попрубуйте при чтении строки сопосотавить ей структуру-пользовательский тип данных, как набор единичных данных требуемого типа. Например

    Type recTI 'глобальный тип данных
         skeep As Integer
          value As Single
          End Type


    Dim struct(1000) As recTI 'В процедуре чтения
    ............................
    Open F_Name For Random Access Read As #F_Number Len = 6000
    Get #F_Number, 1, struct()
    ............................
    'далее работа с элементами структуры, а не фрагментом строки через функции
    извлечения
    For Nomer_TI = 1 To Число_адресов
                              a1(Nomer_TI) = struct(Nomer_TI).value

      
    !!! Код VBA приведен отвлеченно от Ваших типов данных, следует под них
    подработять.
    Такой подход в моих задачах дает выигрыш по времени.


    Вопрос:

       Как отсортировать двумерный массив раямерностью 10Х3 по первому столбцу, но при этом сохранить первоначальную свяяь между строками массива, если можно пришлите кусок кода?

    Ответ:

    Автор ответа: ]CBK[C...R...a...S...H

    Кода я тебе не пришлю мне в лом думать над ним
    НО
    Это делается легко!!!
    Создается другой массив размерностью 10х3 и в цикле пересчета ты присваеваеш данные из перваго массива во второй Вот короче кусок кода(незнаю работает или нет)

    dim Mass1(10,3) as integer
    dim Mass2(10,3) as integer
    dim ii as integer,jj as integer
    Dim max as integer,m as integer
    Dim maxIndex as integer
    'сортировка по max
    'Найдем max элимент
    for ii=0 to 10
         max=mass1(0,0)
             for i=1 to 10
                 if max                  max=mass1(i,0)
                     maxIndex=i
                 end if
             next i
    for jj=0 to 3
         mass2(m,jj)=mass1(maxIndex,jj)
    next jj
         mass1(maxIndex,0)=-10000 'Минимальное число, чтобы оно не было max
         m=m+1
    next ii

    Если чесно я этот код написал не в IDE так что за его работоспособность не отвечаю


    Вопрос:

       Как вызвать хранимую процедуру c SQL Server'a в коде программы на VB6 ?

    Ответ:

    Автор ответа: Yura Melnik

    Необходимо сформировать следующую строку:

    Public cn As New ADODB.Connection
    cn.Open "dsn=<имя_источника_данных>"
    Dim str as String
    Str = “Exec <имя хранимой процедуры> |<параметр1>|, |<параметр2>|,….|<параметрN>|” ' Даты заключаются в '2003-03-01'
    Form1.cn.Execute str 'Собственно сам вызов вызов процедуры



    Ответ:

    Автор ответа: Евген

    Примерно так:
      
    Dim rs As ADODB.Recordset
    Dim cn As ADODB.Connection
      
    cn.Open "FILE NAME=A.DSN"
    rs.Open "StoredProcedureName", cn, adOpenKeyset, adLockOptimistic, adCmdStoredProc



    Ответ:

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

    here example of code

    Public Function GetMovementInformation(ByVal btIsCurrMonth As Byte, _
                                   Optional ByVal dtDateFrom As Date = 0, _
                                   Optional ByVal dtDateTo As Date = 0, _
                                   Optional ByVal lintPayBy As Long = 0, _
                                   Optional ByVal lintDebitCreditArt As Long = 0, _
                                   Optional ByVal lintMovesID As Long = 0) As ADODB.Recordset
    On Error GoTo ErrHang
         Dim DBRS As ADODB.Recordset
         Dim dbCon As ADODB.Connection
         Dim strSQL As String
         Set dbCon = CreateObject("ADODB.Connection")
         dbCon.Open strCon
         dbCon.CursorLocation = adUseClient
         strSQL = "exec sp_Movement_Information " & btIsCurrMonth & ",'" & CDate(dtDateFrom) & "','" & _
                                                CDate(dtDateTo) & "'," & lintPayBy & "," & lintDebitCreditArt & "," & lintMovesID
         Set GetMovementInformation = dbCon.Execute(strSQL)
         GetMovementInformation.ActiveConnection = Nothing
         dbCon.Close
         Set dbCon = Nothing
         Exit Function
    ErrHang:
         Call Log(strErrorSource & " Function GetMovementInformation" & " " & Err.Number & " " & Err.Description)
         Set dbCon = Nothing
         Err.Raise Err.Number
    End Function


    Вопрос:

       Как на VB6 заполнить форму на web-странице и сделать клик на submit.
    При таких вариантах пишет ошибка метод не поддерживается

    Private Sub Command1_Click()
    Dim Vladimir As String
    Explorer.Visible = True
    Explorer.Navigate "C:\WINDOWS\Рабочий стол\RoboForm1.htm"
    Delay 2 'задержа необходима для загрузки страницы
    'Explorer.Document.Forms(0).Ваше_имя.Value = Vladimir
    Explorer.Document.Forms(0).Ваше_имя.Write "Vladimir"
    'Explorer.Document.InputBox.Ваше_имя.Put "Vladimir"
    'Explorer.Document.Forms(0).Добавить_новое.Click
    End Sub

    Где можно об этом узнать,или что нужно сделать.
    В интернете ничего не нашел.

    Ответ:

    Автор ответа: Евген

    Видимо, плохо искал. ;) Зайди на www.citforum.ru - там этой информации море с описаниями, примерами и ссылками.


    Вопрос:

       Привет люди помогите решить проблему есть класс, а в нем процерура:

         Dim ws As Object
         Sub wsInit()
             Set ws = CreateObject("MSWinsock.Winsock")
         End Sub

    которая создает обьект Winsock. Как известно, у него есть событие DataArrival. Так вот мне необходимо его перехватить.

    Есть мой вариант того, как это зделать:

         Private Sub ws_DataArrival(ByVal bytesTotal As Long)
             Dim tmp as String
             ws.GetData tmp
             MsgBox tmp
         End Sub

    Но он не работает (по крайней мере у меня).

    Ответ:

    Автор ответа: Шкуренко Александр

    Волшебное слово WithEvents!

    Private WithEvents ws As Winsock
    Private Sub Class1_Terminate()
         Set ws = Nothing
    End Sub

    ' Если OCX выбран в References
    Public Sub Init()
         Set ws = New MSWinsockLib.Winsock
    End Sub

    ' А если в Components тогда бросаешь его на форму и передааешь по ссылке
    Public Sub Init(ByRef ctl as Winsock)
         Set ws = ctl
    End Sub

    Private Sub ws_DataArrival(ByVal bytesTotal As Long)
         MsgBox "Yes! This is event 'DataArrival'"
    End Sub



    Ответ:

    Автор ответа: Old Krot

    you must define not as object
      
    private withevents ws as WinSock

    so you can handle all events



    Ответ:

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

    Нелохо бы вверху (где Declaration) дописать

    Dim WithEvents ws As MSWinsock.Winsock

    А из процедуры удалить эту гадость:

    Dim ws As Object.

    Усе.



    Ответ:

    Автор ответа: P@Ssword

    Подключи к проекту WinSock и пиши:

    Dim WithEvents ws As winsock

    А потом сверху выбираешь объект и т.д., и т.п., и ДТП.


    Вопрос:

       Люди в Visual Studio есть очень реальная утилита Depends она служит для получения API функций из библиотек, программ и т.д. Но в ней есть баг она не пишет какие данные необходимо передавать в ту или иную функцию, кто знает что с этим делать

    Ответ:

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

    Эта утилита выдает лишь имена, ординалы и точки входа секций импорта/экспорта но ни как ни декларации функций.



    Ответ:

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

    Это не баг.
    Дизасемблер тебе поможет!



    Ответ:

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

    А ничего. Она смотрит заголовки импорта/экспорта и вываливает их на юзер в удобной для него форме. Вот и все ее назначение. И, соответственно, все возможности...



    Ответ:

    Автор ответа: P@Ssword

    Боюсь, что это не баг и так просто параметры не узнаешь...


    Вопрос:

       Есть ли какая-нибудь прога, которая показывает к какому классу относится окно? Например,манипулятор панели яадач- "Shell_TrayWnd"...

    Ответ:

    Автор ответа: .::neo::.

    Сам спрашиваю-сам отвечаю! В Visual C++ есть прога под названием spy++...



    Ответ:

    Автор ответа: Роман

    У меня есть программа ЕХЕ и исходники на VB. Определяет хэндл, класс,
    имя родителя и т.д. Весит - 125кб.
    Кому надо: svs@kes.veco.ru
    Мыльте - пришлю.



    Ответ:

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

    В поставку Студии входит программуля Spy++ (spyxx.exe). Она-то и покажет всю нужную тебе информацию (там, кстати, усть ну Очень удобный поиск:))



    Ответ:

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

    В VS5 и выше есть утилита Spy++, в VB.NET она кажется так же входит.



    Ответ:

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

    Навалом. Лично мне нравиться Sign 0f Misery. Можно, так же, воспользоваться Spy++ из VS



    Ответ:

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

    Spy++ Входит в состав MsVS.


    Вопрос:

       Такой вопрос: Я создаю панель инструментов типа MS Office.

    Пишу код:

    Private Sub Form_Load()
    'Раямеры и положение формы
    formMain.Height = Screen.Height
    formMain.Left = Screen.Width - formMain.Width
    End Sub

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

    Ответ:

    Автор ответа: Роман

    newForm.Height=Screen.Height
    newForm.Width=Screen.Width-formMain.Width


    Вопрос:

       Как можно послать сообщение на email?

    Ответ:

    Автор ответа: .::neo::.

    Сколько было уже разговору по-этому поводу(методов даже несколько), мне нравится вот этот:
    Подключаешь контрол Microsoft MAPI Controls. Кладёшь на форму MAPISession и MAPIMessage и пишешь:

    MAPISession1.SignOn

    MAPIMessages1.SessionID = MAPISession1.SessionID

    MAPIMessages1.Compose
    MAPIMessages1.RecipAddress = younick@yandex.ru
    MAPIMessages1.MsgSubject = "Заголовок"
    MAPIMessages1.MsgNoteText = "Тело письма"

    MAPIMessages1.Send False

    MAPISession1.SignOff

    ...вот и все дела! Можно ещё написать через shell {shell "srart mailto:younick@yandex.ru"}, но мне так почему-то не нравится...


    Вопрос:

       Раярабатывал я тут приложение - редактор тестов с выборочными ответами, работающее с БД Access.
    Краткое описание: прога соядает, ияменяет, удаляет таблицы в которых хранятся данные тестовых яаданий.
    Заметил, что раямер файлов БД постоянно увеличивается, даже если не добавляются новые таблицы. Почему это происходит?

    Ответ:

    Автор ответа: Mind Engine

    Сжатие базы сделай, все вернется на круги своя! %)



    Ответ:

    Автор ответа: Роман

    Лучше пользоваться базами ISAM(базы данных индексно-последовательного метода доступа). Например: dBase, а лучше - FoxPro (*.dbf)



    Ответ:

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

    Дело в том, что Access, по мнению некоторых не удаляет записи как таковые, а помечает их только на удаление, при сжатии же он удаляет их.
    Сам я не нашёл более правдоподобного объяснения проблемы, но факт фактом-база увеличивается.
    Если тебя такой вариант не устраивает - используй функцию сжатия БД - метод
    DAO.CompactDatabase (ScrName as String ,DstName as String, DstLocale,Options,SrcLocale)

    Я использую только ScrName as String ,DstName as String - база которую необходимо сжать, база которая будет получена в результе. Потом удаляй стандартными средсвами старый файл?!
    Ясно?


    Вопрос:

       Подскажите plz, как можно в текстовый файл (*.txt) вставить стрку в произвольную позицию (имеется ввиду между некоторыми другими строками), не загужая, при этом, содержимое файла в TextBox?

    Ответ:

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

    В TextBox загружать текст совершенно и ненадо. Можно сделать это несколькими способами. Покрайней мере я других незнаю. 1) прочитать и запомнить в массиве строки файла, вставить нужную и сохранить.
      
    Dim A() As String
    Dim S As String
    Dim Q As String
    n = 0
    Open "c:\1.txt" For Input As #1
         While Not EOF(1)
             n = n + 1
             ReDim Preserve A(1 To n)
             Line Input #1, Q
             A(n) = Q
         Wend
    Close
      
    n = 2 ' Встовляет во вторую строку
    S = "abcdefdVIR" 'Текст
      
    Open "c:\2.txt" For Output As #1
         For i = 1 To UBound(A)
             If n = i Then Print #1, S
             Q = A(i)
             Print #1, Q
         Next
    Close

    2) Можно и подругому: Читать и записывать в бинарном виде и обрабатывать массив как массив символов



    Ответ:

    Автор ответа: ]CBK[C...R...a...S...H

    Точно сказать не могу но вроде это делается так

    open "my.txt" for binary as #1
    put #1, место_куда_вставлять, что_вставлять

    место_куда_вставлять - позицая напимер 14



    Ответ:

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

    А зачем здесь текстбокс? Грузи в переменную string. По другому никак. Хотя, конечно, если очень захотеть, можно извратиться и отобразить файл в память... И тогда его уже через память ковырять. Но это технически. А на практике обычных методов вроде всегджа хватало.



    Ответ:

    Автор ответа: P@Ssword

    Загрузи куда-нибудь ещё (aka в память %-)


    Вопрос:

       Нужно в VB6 построить амплитудно-частотную хар-ку звукового .wav - файла.

    Ответ:

    Автор ответа: P@Ssword

    Читай про быстрые преобразования Фурье.




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

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

    наверх


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

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