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


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 можно найти здесь.

    наверх


    Эксперт

    - Привет, Серый.
    - Угу, привет. Ты проходи, садись, я щас, с функцией тут разберусь...
    - Да я на момент. Вопросец имеется.
    - Вопросец, вопросец... Так, тут переменная не объявлена... Вопросец... С вопросами в систему, к экспертам... А тут точку не поставил! Вот она где, соб-бака!!
    - Ты че, какая система? Ты о чем?
    - О! Все, работает... Чего ты говоришь?
    - Ты про каких это экспертов тут заикаешься?
    - А-а. А ты что, первый раз слышишь, что ли? Ты на СообЧа бывал?
    - Где?!!
    - Да вот, гляди. Щас соединимся... Во! http://soobcha.ru, зришь?
    - М-да... Занятно. Так я с вопросом к тебе...
    - А я вот и говорю: туда иди, в систему "Эксперт", там ответят.
    - Это чайники, что ли, ответят?
    - Не сомневайся, ответят. Там у них такое наворочено... Короче, ты по почте вопрос свой задаешь - и все:)))))) Больше не изволь беспокоиться, там они сами будут искать ответ на твой вопрос. А через некоторое время вывалят тебе на ящик не один, а несколько ответов. Пользуйся и радуйся:)
    - А чего это они там такие добрые да услужливые? У них чего, своих проблем нет? Сколько я должен платить за такое трогательное беспокойство?
    - Ну, это немного. Меньше, чем ты думаешь:) Тебе достаточно только подтвердить правильный ответ. Давишь на соответствующую ссылку, дескать, вот этот ответ мне понравился, помог, и я доволен. Просто пустое письмо засылаешь к ним, и вся оплата. А если хочешь у них экспертом стать, то пожалуйста, регистрируйся и отвечай на вопросы.
    - Кем? Экспертом?
    - А что? Что-то ты ведь знаешь, не вчера за комп сел.
    - А на фига мне это надо? Разбираться с чужими проблемами... У меня своих - хоть отбавляй...
    - Ага. Вот ты только что спрашивал: а сколько? И если уж ты со своими проблемами обращаешься к людям, то ведь надеешься, что тебе помогут. А сам-то что, влом, что ли, помочь кому-то? Да ладно! Тебя, вобщем-то, никто и не тянет, не заставляет. А вот те, кому интересно, кому не жаль поделиться, те там и работают. Я, между прочим, давно уже с ними.
    - В смысле, экспертом, что ли, заделался? И сколько тебе платят?
    - А ты не прикалывай. Там никто никому не платит. А вот конкурсы, между прочим, проводят, и не хилые. Представляешь, за лучший ответ дают бесплатно три месяца платного хостинга, да еще домен регистрируют. За просто так. А вот тебе, если ты задашь самый лучший вопрос, тоже приз может выгореть.
    - Это как: лучший? На который никто ответить, что ли, не сможет? Так я щас таких вопро...
    - Причем тут это? Просто ты, если вопрос пишешь к ним, так сподобься хоть запятые в нужных местах поставить, там, грамотно, короче, обрисуй свой трабл.
    - Ну ладно, въехал. Ты мне вот лучше помоги с моим траблом. Мой Фотошоп не хочет по русски работать...
    - Ха, так этот трабл там уже сколько раз появлялся. У них на сайте и ответ есть... Вот, любуйся: Заходим в редактор реестра (regedit.exe). Находим ключ HKEY_LOCAL_MACHINE\System\CurrentControlSet\control\Nls\Codepage В нем изменяем значение параметра 1252 с cp_1252.nls на cp_1251.nls. Перезагружаемся...
    - Понял... погоди, запишу...
    - Да чего записывать? Шагай домой, входи на сайт и копируй...
    - Да я ссылку запишу... Слушай, а как там в эту систему вопрос задать? Вообще, как она работает?
    - Так тут же, на сайте, все есть. А вообще, можешь по почте пустое письмо загнать на mailto:reply.infoexpert@soobcha.ru, и получишь всю необходимую инфу. А вообще, ты лучше в следующий раз с вопросами не ко мне, а туда. Может, я и отвечу там.
    - А не проше тебе здесь ответить?
    - Э-э-э... Там я баллы зарабатываю...
    - А это еще зачем?
    - Ладно, мотай. Дома почитаешь, все о них узнаешь. У меня тут халтурка... Давай, пока.
    - Пока. А как ты экспертом там зарегился?
    - Иди, иди! Инфу читай...

    наверх


    Как программно отключить заставку Windows?

    Вопрос:

    Как программно отключить заставку Windows?

    Ответ:

    Можно, в файле System.ini, который храниться в каталоге WINDOWS есть ссылка на имя текущей заставки и если её удалить, то и заставки не будет.
    Сделать это можно так:

    Private Sub SwitchOffScreenSaver()
       Dim FileNoRd As Integer
       Dim FileNoWr As Integer
       Dim WinDir As String
       Dim szData As String
       Dim szExample As String
               
       szExample = "SCRNSAVE.EXE"
       WinDir = GetWinDir 'Используем нашу новую функцию для получения каталога Windows (см. выше)
       FileNoWr = FreeFile 'Получаем свободный номер для записи
       'открываем временный файл для построчного сохранения данных.
       Open "C:\mytemp.tmp" For Output As #FileNoWr
          FileNoRd = FreeFile 'Получаем свободный номер для чтения
          'открываем рабочий файл для анализа и изменения
          Open WinDir & "System.ini" For Input As #FileNoRd
             Do Until EOF(FileNoRd)
                Line Input #FileNoRd, szData
                'Если мы находим в файле наш пример и его длина совпадает,
                If Mid(szData, 1, Len(szExample)) = szExample Then
                   'то очищаем значения найденной строки для _
                    отключения заставки.
                   szData = szExample & "="
                End If
                Print #FileNoWr, szData
             Loop
       Close 'Закрываем все открытые файлы
       'Копируем новые данные из временного файла в System.ini
       FileCopy "C:\mytemp.tmp", WinDir & "System.ini"
       Kill "C:\mytemp.tmp" 'Удаляем временный файл
    End Sub

    SC

    наверх


    Как на VB определить путь к системной папке?

    Вопрос:

    Как на VB определить путь к системной папке?

    Ответ:

    Private Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
    'Получение директории C:\WINDOWS\SYSTEM

    Private Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
    'Директория "C:\WINDOWS"
    Private Function GetSysDir() As String
       Dim szBuffer As String * 50
       Dim lngRet As Long
       
       lngRet = GetSystemDirectory(szBuffer, 50)
       GetSysDir = Left$(szBuffer, lngRet)
       If Right(GetSysDir, 1) <> "\" Then GetSysDir = GetSysDir & "\"
    End Function

    Private Function GetWinDir() As String
       Dim szBuffer As String * 50
       Dim lngRet As Long
       
       lngRet = GetWindowsDirectory(szBuffer, 50)
       GetWinDir = Left$(szBuffer, lngRet)
       If Right(GetWinDir, 1) <> "\" Then GetWinDir = GetWinDir & "\"
    End Function

    'Использование
    Private Sub Form_Load()
        MsgBox GetWinDir
        MsgBox GetSysDir
    End Sub

    или объединяем наши 2 функции:

    Private Function GetDirectory(szDirName As String) As String
       Dim szBuffer As String * 50
       Dim lngRet As Long
       
       If LCase(szDirName) = "sys" then
          lngRet = GetSystemDirectory(szBuffer, 50)
       ElseIf LCase(szDirName) = "win" then
          lngRet = GetWindowsDirectory(szBuffer, 50)
       End If
       GetDirectory = Left$(szBuffer, lngRet)
       If Right(GetDirectory, 1) <> "\" Then GetDirectory = GetDirectory & "\"
    End Function

    'Использование
    Private Sub Form_Load()
        MsgBox GetDirectory("win")
        MsgBox GetDirectory("sys")
    End Sub

    SC

    наверх


    Как поместить картинки в DLL?

    Вопрос:

    Как поместить картинки в DLL и как с ними потом работать (т.е. читать картинки из этой же DLL)?

    Ответ:

    В начале заходим в меню Add-Ins, затем Add-In Meneger... .Там находим строчку Visual Basic 6 Resource Editor и справа от описания есть флажки, устанавливаем Loaded/Unloaded и Load on StartUp. На стандартной панели инструментов должнен появиться VB Resource Editor. Запускаем и добовляем всё что душе угодно. Всё наши картинки там. Код чтения картинки:

    Private Declare Function DrawIcon Lib "user32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal hIcon As Long) As Long
    Private Declare Function ExtractIconEx Lib "shell32.dll" Alias "ExtractIconExA" (ByVal lpszFile As String, ByVal nIconIndex As Long, phiconLarge As Long, phiconSmall As Long, ByVal nIcons As Long) As Long

    Private Sub Command1_Click()
       Dim hIcon As Long
       
       ExtractIconEx "C:\my.dll", 0, hIcon, 0, 1
       DrawIcon Form1.hdc, 0, 0, hIcon
    End Sub

    У формы свойство ScaleMode должно быть 3 - Pixel

    SC

    наверх


    Возможна ли одновременная работа в одной программе двух Winsock?

    Вопрос:

    Возможна ли одновременная работа в одной программе двух Winsock, один работает на приём сообщений (так сказать в режиме ожидания сообщений), а второй - на отправку сообщений ?

    Ответ:

    А что тебе мешает?

    Вот выдержка из MSDN (благополучно работают два сокета):

    To create a TCP server
    Create a new Standard EXE project.
    Change the name of the default form to frmServer.
    Change the caption of the form to "TCP Server."
    Draw a Winsock control on the form and change its name to tcpServer.
    Add two TextBox controls to the form. Name the first txtSendData, and the second txtOutput.

    Add the code below to the form.
    Private Sub Form_Load()
    ' Set the LocalPort property to an integer.
    ' Then invoke the Listen method.
    tcpServer.LocalPort = 1001
    tcpServer.Listen
    frmClient.Show ' Show the client form.
    End Sub

    Private Sub tcpServer_ConnectionRequest _
    (ByVal requestID As Long)
    ' Check if the control's State is closed. If not,
    ' close the connection before accepting the new
    ' connection.
    If tcpServer.State <> sckClosed Then _
    tcpServer.Close
    ' Accept the request with the requestID
    ' parameter.
    tcpServer.Accept requestID
    End Sub

    Private Sub txtSendData_Change()
    ' The TextBox control named txtSendData
    ' contains the data to be sent. Whenever the user
    ' types into the textbox, the string is sent
    ' using the SendData method.
    tcpServer.SendData txtSendData.Text
    End Sub

    Private Sub tcpServer_DataArrival _
    (ByVal bytesTotal As Long)
    ' Declare a variable for the incoming data.
    ' Invoke the GetData method and set the Text
    ' property of a TextBox named txtOutput to
    ' the data.
    Dim strData As String
    tcpServer.GetData strData
    txtOutput.Text = strData
    End Sub

    The procedures above create a simple server application. However, to complete the scenario, you must also create a client application.

    To create a TCP client Add a new form to the project, and name it frmClient. Change the caption of the form to TCP Client. Add a Winsock control to the form and name it tcpClient. Add two TextBox controls to frmClient. Name the first txtSend, and the second txtOutput. Draw a CommandButton control on the form and name it cmdConnect. Change the caption of the CommandButton control to Connect. Add the code below to the form. Important Be sure to change the value of the RemoteHost property to the friendly name of your computer.

    Private Sub Form_Load()
    ' The name of the Winsock control is tcpClient.
    ' Note: to specify a remote host, you can use
    ' either the IP address (ex: "121.111.1.1") or
    ' the computer's "friendly" name, as shown here.
    tcpClient.RemoteHost = "RemoteComputerName"
    tcpClient.RemotePort = 1001
    End Sub

    Private Sub cmdConnect_Click()
    ' Invoke the Connect method to initiate a
    ' connection.
    tcpClient.Connect
    End Sub

    Private Sub txtSendData_Change()
    tcpClient.SendData txtSend.Text
    End Sub

    Private Sub tcpClient_DataArrival _
    (ByVal bytesTotal As Long)
    Dim strData As String
    tcpClient.GetData strData
    txtOutput.Text = strData
    End Sub

    The code above creates a simple client-server application. To try the two together, run the project, and click Connect. Then type text into the txtSendData TextBox on either form, and the same text will appear in the txtOutput TextBox on the other form.

    Sergey Y. Tkachev

    наверх


    Как поменять картинку загрузки Windows?

    Вопрос:

    Как поменять картинку загрузки Windows?

    Ответ:

    Не ручаюсь ха точность информации. Цитирую:

    Анимированная картинка, которая выводится при загрузке Windows (на фоне голубых облачков написано Windows 95(98)), в Windows 95 находится в файле logo.sys в корневом каталоге, а в Windows 98 эта картинка, если не ошибаюсь, "вшита" в файл command.com Меняя этот файл (logo.sys) на любой файл формата BMP (соответствующих размеров и 256 цветов), можно поменять скучную картинку при загрузке. А в Windows 98 можно просто поместить файл logo.sys в корневой каталог - эффект тот же самый. Аналогично, в каталоге WINDOWS есть ещё 2 файла - logos.sys и logow.sys. Они "отвечают" за сообщения "Теперь питание..." и "Подождите, идет подготовка...". Формат тот же.
    Владимир Ротин

    Сергей Гуров

    наверх


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

    BalloonMessage for MS Agent

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

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

    наверх


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

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

    Вопросы:


    Автор вопроса: Максим

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

       Если в запущенной программе в ручную переместить какой-нибудь контрол, например Image, можно ли её в таком состоянии сохранить?


    Автор вопроса: Роот Яков

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

       Как в Excel сделать что бы макрос запускался при изменении определенной ячейки?


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

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

       Как сделать функцию на подобии Inputbox? Т.е. вызываем функцию, она открывает окошко, ждёт, пока там чего-нибудь натворят, потом возобновляет работу и передаёт на выход результат работы.


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

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

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


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

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

       Как в .NET производить сериализацию?


    Автор вопроса: I-Sof

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

       Как программно создавать/удалять меню, подменю и т.д.?




    Ответы:


    Вопрос:

       По мере изучения VB столкнулся с двумя проблемами: 1) Нужно из формы запустить посторонний exe-шник с ключами, например winrar.exe 2) Часто встречал, что в VB-шных прогах для вывода отчетов использовался Word. Заранее созданный шаблон имел *.doc формат. Причем для заполнения данными в нужные ячейки таблицы помещали так называемые маркеры. Например: Поставщик: %001 Покупатель: %002 и т.п. Вот и я бы хотел реализовать нечто подобное в своих прогах.

    Ответ:

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

    Используй Shell "format.com a: /q", vbNormalFocus.


    Вопрос:

       Как мне запустить файл *.exe, помещенный в контейнер OLE? И вот еще, где найти в VB файл ресурса, что-то не могу с этим разобраться.

    Ответ:

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

    Файл ресурсов создаётся, если в меню "Add-Ins" - "Add-in Manager" мы установим птичку Startup/Loaded напротив пункта "VB6 Resource Editor". После чего в контестном меню, которое включается при занесении мыши в окно Project Explorer (Ctrl-R) и нажатии правой кнопки мыши, пункт "Add" - "Resource File". Если такого не появится, что-то не выполнено в инсталяции VB6...




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

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

    наверх


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

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