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


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!!!

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

       Обратите внимание на раздел "VBNet CD '06 2003"!
    Читайте!


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




    Книги

    Переход на 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
       Мы всегда рады Вас видеть!

    наверх


    Установка и получение флага

    .NET.
    Две функции для работы с флагами. Если вы не знаете, что это такое, поясню. Часто в одной переменной целого типа (обычно Integer или Long) хранится несколько логических значений. Каждое значение занимает один бит. Такое часто встречается в API-функциях.
    Функция SetFlag устанавливает флаг, а функция GetFlag получает значение флага.

    'Устанавливает флаг. Передаётся исходная переменная, устанавливаемый флаг и значение флага (True или False)
    'Возвращается переменная, в которой установлен нужный флаг.
    Public Function SetFlag(ByVal Flags As Integer, ByVal Flag As Flags, ByVal Value As Boolean) As Integer
         If Value = True Then
             Return (Flags Or Flag)
         Else
             Return (Flags And (Not Flag))
         End If
    End Function

    'Получает значение флага. Передаётся исходная переменная и флаг. Возвращается значение флага - True или False
    Public Function GetFlag(ByVal Flags As Integer, ByVal Flag As Flags) As Boolean
         Return Convert.ToBoolean(Flags And Flag)
    End Function

    наверх


    Время выполнения кода

    .NET.
    Часто необходимо измерить время выполнения куска кода. Как это сделать? В .NET это делатется с помощью классов DateTime и TimeSpan.

    Dim datebefore As Date 'Здесь хранится время запуска кода
    Dim dateafter As Date 'Здесь время окончания кода
    Dim tspan As New TimeSpan 'Это для вычисления разницы между dateafter и datebefore

    'Засекаем время
    datebefore = Now

    '---здесь располагается код---

    'Смотрим время
    dateafter = Now
    tspan = dateafter.Subtract(datebefore)
    MsgBox("Время выполнения: " & tspan.TotalMilliseconds.ToString)

    наверх


    Использование WMI

    .NET.
    WMI (Windows Management Instrumentation) - это Microsoft'ская реализация WBEM, система для управления Windows. С помощью WMI можно получить много очень поезной информации, например, серийный номер, дату выпуска и название BIOS, модель процессора, объём оперативной памяти, информацию о логических дисках и часовых поясах и т.д.
    Ниже приведён пример получения информации о BIOS. Положите на форму TextBox с именем txtOutput, Multiline=True. Хотя можно обойтись и без этого, просто вместо вывода информации в TextBox сделайте вывод в консоль.
    Да, чуть не забыл... Добавьте в Project|Add Reference ссылку на System.Management и импортируюте пространство имён System.Management, вставив вверху файла .vb такую строку:

    Imports System.Management

    'Очищаем TextBox
    txtOutput.Text = ""

    Try 'Обработчик ошибок
         Dim searcher As New ManagementObjectSearcher 'Создаём объект ManagementObjectSearcher
         searcher.Query = New SelectQuery("Select * From Win32_BIOS") 'Задаём запрос
         'Запрос пишется на языке структурированных запросов SQL
         Dim obj As ManagementObject 'Здесь будет храниться объект WMI
         Dim prop As PropertyData 'А здесь - свойство
         For Each obj In searcher.Get 'Получаем объекты и перебираем их в цикле For Each
             For Each prop In obj.Properties 'Получаем свойства объекта obj и перебираем их в цикле For Each
                 'Здесь пришлось вставить проверку на Nothing, потому что при попытке конвертировать Nothing в строку методом ToString возникает ошибка
                 If IsNothing(prop.Value) = True Then
                     txtOutput.Text &= prop.Name & " = {Nothing}" & vbCrLf
                 Else
                     txtOutput.Text &= prop.Name & " = " & prop.Value.ToString & vbCrLf
                 End If
             Next
         Next
    Catch exp As Exception
         MsgBox(exp.Message, MsgBoxStyle.Critical)
    End Try

    наверх


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

    BalloonMessage for MS Agent

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

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

    наверх


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

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

    Вопросы:


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

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

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


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

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

       Как узнать загруженность процессора?


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

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

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


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

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

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

    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;


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

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

       Как программировать LPT - порт?


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

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

       У меня возник такой вопрос>>> Имеется база данных Аксэс. Как можно сделать,чтобы например со странички Searhc.asp ввести в поле слово и в базе данных это все проверилось на наличее этого слова в тексте и если такое слово присутствует, вывести на страничку текст, в котором это слова есть. Другими словами мне нужем поиск по базе данных для ASP программирования! Прошу помочь в моей сложной работе.


    Автор вопроса: Анатолий

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

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


    Автор вопроса: Игорь

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

       Как свяяать CHM-файл справки, созданный с помощью HTML Help Workshop, с конкретными объектами VB-приложения для получения контекстно-зависимой
    помощи?


    Автор вопроса: Тарасова Надежда Сергеевна

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

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


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

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

       Люди кто может сказать реально VB.NET отличается от VB?


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

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

       Народ, кто-нибудь делал в ListBox в ВБ6.0 плоские полосы прокрутки? Сам листбокс может быть плоским, а полосы - что-то не получается. догадываюсь, что можно отправить мессагу, а какую - не представляю, пока...


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

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

       Помогите написать код программы который при наведении курсора на папку в Explorer покаяывал бы ее раямер на Form. Или хотя бы ссылку на инфу или исходники или API функции которыми можно воспользоваться.


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

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

       Имеется некоторая проблема: нашел очень неплохую литературку (Книга +CD) по VB.Net. Стоит довольно приличных денег при довольнол подробной информации. Если кто имел дело с VB.Net подскажите, стоит ли нанего переходить и есть ли у него какие-нибудь особые требования к системе?


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

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

       Как на 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

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


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

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

       Как получиь Hwnd активного в данный момент окна, но выяванного не моей программой (т.е. GetActiveWindow не прокатывает)?


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

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

       Подскажите, если знаете, как можно изменить вид кодировки отображения файлов, загружаемых в richtextbox?
    Еще вопрос: как и с помощью какого control'а можно (если можно) загрузить word'овский документ для корректного просмотра и/или редактирования?




    Ответы:


    Вопрос:

       Как сделать help?

    Ответ:

    Автор ответа: Yuri Samsonov

    На первом диске Visual Studio есть HTML Help Workshop. Там в хэлпе подробно описано, как чего делать. Общий принцип: создаешь на каждую статью помощи HTML-страничку, затем в этой проге создаешь содержание и подключаешь ранее созданные статьи. При необходимости можно задать ключевые слова по которым потом будет осуществляться поиск в хэлпе. Компилируешь, получаешь .chm-файл - файл помощи. Кидаешь в папку к своему проекту; в проекте указываешь имя хэлп-файла (Preferences...->Help file).


    Вопрос:

       Подскажите пожалуйста или пришлите кусочек исходника как считать данные из памяти или записать при помощи VB

    Ответ:

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

    To CRAZYDIMA:
    Зачем человеку файл в память катать? Он трейнер к игрушке сделать хочет
    Вот так это делается:
      
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long 'У вас все должно быть в одну строчку
    Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessld As Long) As Long
    Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAcess As Long, ByVal blnheritHandle As Long, ByVal dwProcessld As Long) As Long
    Private Declare Function WriteProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAdress As Any, lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
    Private Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAddess As Any, lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWriten As Long) As Long
    Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
      

    Private Sub Command1_Click()
    Dim hwnd As Long
    Dim pid As Long
    Dim pHandle As Long
    Dim MemVal As Long
    MemVal = Val(Text1.Text)
    hwnd = FindWindow(vbNullString, "GTA3")
    If (hwnd = 0) Then
    MsgBox "нет такого окна"
    Exit Sub
    End If
    GetWindowThreadProcessId hwnd, pid
    pHandle = OpenProcess(PROCESS_ALL_ACCESS, False, pid)
    If (pHandle = 0) Then
    MsgBox "немогу хендл взять"
    Exit Sub
    End If
    WriteProcessMemory pHandle, &H94139C, MemVal, 4, 0&
    WriteProcessMemory pHandle, &H9413A0, MemVal, 4, 0&
    CloseHandle pHandle
    End Sub
      

    Private Sub Command2_Click()
    Dim hwnd As Long
    Dim pid As Long
    Dim pHandle As Long
    Dim MemVal As Long
    hwnd = FindWindow(vbNullString, "GTA3")
    If (hwnd = 0) Then Exit Sub
    GetWindowThreadProcessId hwnd, pid
    pHandle = OpenProcess(PROCESS_ALL_ACCESS, False, pid)
    If (pHandle = 0) Then Exit Sub
    ReadProcessMemory pHandle, &H94139C, MemVal, 4, 0&
    Text2 = Trim(Str(MemVal))
    CloseHandle pHandle
    End Sub


    Вопрос:

       У меня пара вопросиков:

    1. Возможно ли сделать под VB форму нестандартной геометрии? К примеру, с отверстиями, скруглёнными краями и т.п. В Delphi такая фишка имеется. Если можно, примерчик пжалста...

    2. Как проверить, существует ли такая-то директория или файл в ней?

    Ответ:

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

    Лови:
    http://www.azbukavb.narod.ru/vbcod/vbcod11.html



    Ответ:

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

    Почитай архивы. Там были примеры про XЗ--стиль кнопок и т.д.
    Узнать есть ли папка или файл - через функцию Dir()
    Прочти Help по ней - там все понятно.



    Ответ:

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

    Есть встроенные функции:
      
    Private Sub Command1_Click()
    Dim strTmp
    strTmp = Dir("c:\window*", vbDirectory) ' не путать с DirListBox!!!!!!!!
    Print strTmp
    strTmp = Dir("c:\windows\*.txt") 'выведет первый найденный файл с расширением *.txt
    Print strTmp
    End Sub
      
    'также
    'vbNormal = 0 'Обычный файл.Используется дефолтом
    'vbReadOnly = 1 'только чтение
    'vbHidden = 2 'скрытый
    'vbSystem = 4 'системный
    'vbVolume = 8 'метка тома
    'vbDirectory = 16 папка
    'комбинации атрибутов
    'vbHidden+vbDirectory выводит скрытые папки


    Вопрос:

       Как получить список компов локальной сети?

    Ответ:

    Автор ответа: •Creator•

    пользуйся этим:

    Private Declare Function WNetOpenEnum Lib "mpr.dll" Alias "WNetOpenEnumA" (ByVal dwScope As Long, ByVal dwType As Long, ByVal dwUsage As Long, lpNetResource As Any, lphEnum As Long) As Long

    Private Declare Function WNetEnumResource Lib "mpr.dll" Alias "WNetEnumResourceA" (ByVal hEnum As Long, lpcCount As Long, ByVal lpBuffer As Long, lpBufferSize As Long) As Long

    Private Declare Function WNetCloseEnum Lib "mpr.dll" (ByVal hEnum As Long) As Long

       Могу прислать пример после обменом инфой!
       Он выдаст список всех машин во всех рабочих группах, делал сам, жалко отдавать.
       пишите •Creator•


    Вопрос:

       Nuzhen instaler, kotoryj zainstalirujet .exe, .NET Framework a tak zhe Sybase db, t.e. setup, kotoryj zapuskajet drugije setupy. Mozhet uzhe jest gotovyje produkty?

    Ответ:

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

    Попробуй, например, "Innosetup" http://www.innosetup.com
    Он бесплатный, и довольно удобный. Текст инсталяшки храниться в файле скриптами. Можно в любое время че-то подредактировать и скомпилить инсталяшку заново...


    Вопрос:

       Как сделать, чтобы скрытые папки отображались в DirListBox’e?

    Ответ:

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

    Там вроде есть параметр hidden поставь там true.


    Вопрос:

       Помогите написать код программы который при наведении курсора на папку в Explorer показывал бы ее размер на Form. Или хотя бы ссылку на инфу или исходники или API функции которыми можно воспользоваться.

    Ответ:

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

    Простейший пример.

    Dim cnn As ADODB.Connection
    Dim rst As ADODB.Recordset
    Const ServerName = "comp\testserver" ' имя SQL сервера
    Const DataBase = "TestTable" 'имя базы данных
        
    Sub AsyncExecute()
    On Error GoTo ErrHandler
         Set cnn = New ADODB.Connection ' создаем объект
         ' подключаемся к базе данных (в этом примере к базе, находящейся на SQL сервере)
         ' если к базе Access, в строке коннекта нужно изменить провайдера и имя пользователя
         ' (обычно вместо "sa" - "admin")
         cnn.Open "Provider=sqloledb;Data Source=" _
                     & ServerName & ";Initial Catalog=" _
                     & DataBase, "sa", "sql"
         Set rst = New ADODB.Recordset ' создаем объект
         rst.Open "SELECT * FROM Table1", cnn, adOpenStatic, adLockBatchOptimistic, adAsyncExecute
         ' можно было вместо adAsyncExecute использовать adAsyncFetch( строки после заполнения кэша
         ' будут получены асинхронно)
         Timer1.Enabled = True ' включаем таймер
         Me.MousePointer = vbArrowHourglass
    Exit Sub
    ErrHandler:
         MsgBox Err.Number & " " & Err.Description, vbCritical + vbOKOnly
    End Sub

    Private Sub Timer1_Timer()
         If rst.State = adStateExecuting Then
             Exit Sub
         End If
         ' ОК. Все строки запроса получены
         Timer1.Enabled = False
         Me.MousePointer = vbArrow
    End Sub

    З.Ы. А вообще тема интерфейса баз данных довольно интересная. Если есть желание развивать тему дальше пишите.




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

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

    наверх


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

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