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


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



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

Ссылки:

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

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

       Свежий выпуск.
    Читайте!


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




    Aslof рекомендует

       Ищешь фильм?
    http://subscribe.ru/catalog/rest.cinema.filmforyou
    Сайт рассылки - http://aslof.balzer.ru/


    Citycat by Email

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

    наверх


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

    Дата: 06.12.2003 15:24 | Раздел: Статьи по VB | Автор: Назаров В.Д.

    Работа с Word. Часть 3. - Третья часть цикла статей о взаимодействии с MS Word. В этой части рассматриваются приёмы добавления текста в документ Word.

    Дата: 05.12.2003 15:24 | Раздел: Статьи по VB | Автор: Назаров В.Д.

    Работа с Word. Часть 2. - В этом примере описываются основные приёмы последовательного добавления текста в документ Word. Для правильного использования данных приёмов нужно представлять принцип построения документа Word.

    Дата: 03.12.2003 13:07 | Раздел: Статьи по VB | Автор: Назаров В.Д.

    Работа с Word. Часть 1. - Использование Word в приложениях на Visual Basic 6 открывает широчайшие возможности для создания профессионально оформленных документов (например отчетов). Это часто необходимо при работе в фирме или на предприятии для обеспечения документооборота.

    Дата: 02.12.2003 12:32 | Раздел: Статьи по VB | Автор: Половый Александр

    Использование условной компиляции для отладки программы, в которой поставлен Hook на форму - При работе с сообщениями Windows, когда приходится ставить Hook (Захват) на форму, нельзя тестировать программу в среде Visual Basic, поскольку при нахождении любой простой ошибки (даже синтаксической) вся система закрывается с сообщением об ошибке (еще и не сохраняет последниие Ваши изменения в коде!). В таком случае для отладки приходиться комментировать код, содержащий элементы Hook, а потом его опять раскомментировать (по 20 раз на день!).



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

    06:10 / 8 дек.  ListView и TreeView вЫзаУт mscomctl.ocx | Хитов: 6 |  Ответов: 4
    04:02 / 8 дек.  БД | Хитов: 7 |  Ответов: 1
    23:26 / 7 дек.  Многопоточность в .Net | Хитов: 3 |  Ответов: 0
    22:09 / 7 дек.  ProgressBar | Хитов: 11 |  Ответов: 0
    21:05 / 7 дек.  HTML | Хитов: 10 |  Ответов: 0
    17:49 / 7 дек.  Всем программёрам!!! | Хитов: 19 |  Ответов: 0
    16:20 / 7 дек.  mciSendString | Хитов: 10 |  Ответов: 0
    16:20 / 7 дек.  mciSendString | Хитов: 3 |  Ответов: 0
    14:12 / 7 дек.  SELECT......... | Хитов: 25 |  Ответов: 1
    12:43 / 7 дек.  listview: item any backcolor | Хитов: 13 |  Ответов: 2
    11:44 / 7 дек.  Как подключит базу к web сайту | Хитов: 23 |  Ответов: 3
    11:28 / 7 дек.  Как убить объект | Хитов: 30 |  Ответов: 2
    10:11 / 7 дек.  Время | Хитов: 30 |  Ответов: 5
    09:47 / 7 дек.  Проблема с Common Dialog | Хитов: 22 |  Ответов: 2
    04:43 / 7 дек.  Профессиональная раскраска RichText | Хитов: 32 |  Ответов: 2
    04:07 / 7 дек.  А как создать макрос удаляющий пустые строки | Хитов: 12 |  Ответов: 1
    03:45 / 7 дек.  Grafika i tekst v odnom faile | Хитов: 53 |  Ответов: 14
    03:28 / 7 дек.  передача между picture (замаялся уже...) | Хитов: 21 |  Ответов: 3
    02:15 / 7 дек.  Счетчики и все такое | Хитов: 20 |  Ответов: 1
    01:58 / 7 дек.  Помогите писать терминалку на VB | Хитов: 20 |  Ответов: 3


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

    Как отследить скролл мыши (61)
    Преобразование числа в Украинскую валюту (62)


    наверх


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



    наверх


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



    Новые статьи:



    наверх


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

    Новые статьи:



    Новые примеры:



    наверх


    Один момент из жизни форума: Image control

    Адерес темы: http://vbnet.ru/forum/show.asp?id=28983

    Вопрос:
    Автор вопроса: Emil Revencu

       Как можно узнать цвет пикселя и вставить пиксель определённого цвета в image control (как POINT и PSET для picturebox)?


    Ответы:

    Автор: CyRax
        Попробуй GetPixel.

    Автор: Emil Revencu
        Не могу получить HDC для image, а GETPIXEL этого требует.

    Автор: Павел
        Спешу огорчить: у Image нет hWnd, hDC и прочего, потому что это вообще не окно и не контрол. Это т.н. графический контрол, то есть для Windows его не существует вовсе, его самостоятельно рисует VB Runtime функциями GDI.



    наверх


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

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

    Вопросы:


    Автор вопроса: SHEFF aka 3BEPb

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

       Как загружать из файлы .тхт в VB?
    Например:
      
          Number = FreeFile
          Open "C:\All\My document\My proect\xakep\History.txt" For Output As 1
          Print #1, "Money=", Form2.Label32.Caption
          Print #1, "Life=", Form2.lblhp.Caption
          Close #1

      
    Вот что получаеться в текстовом файле:
      
    Money= 20
    Life= 100

    Вот и как загрузить эти цифры обратно в Visual Basic?


    Автор вопроса: SHEFF aka 3BEPb

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

       Смотрите:
      
    MMControl1.DeviceType = "waveaudio"
    MMControl1.FileName = Form1.Label3.Caption + "\sound\notify.wav"
    MMControl1.Command = "open"
    MMControl1.Command = "play"
      
    И Вот этот звук звучит тока 1 раз и все :( , что надо сделать чтобы он звучал стока раз скока будет происходить то или иное событие...


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

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

       Как сделать так чтобы мой проект в access запускался без самого accessa?


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

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

       Каким образом можно узнать цвет точки на форме, и каким образом его поменять?


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

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

       Программа на VB обрабатывает множество однотипных текстовых файлов и записывает данные в БД "Access".В общем программа работает нормально, но иногда, особенно когда файлов много, выпадает ошибка:
    "Couldn'n update: currently locked by user 'Admin' on machine 'NIK'".
      Как я понял, VB не может добавить запись в таблицу, но "победить" проблему мне так и не удалось.
      Если кто-нибудь сталкивался c подобной ошибкой, пожалуйста помогите.


    Автор вопроса: Валерий Алексеевич

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

       Visual Basic 6. Пожалуйста, подскажите как создать двумерный массив (M x N) и заполнить его нулями и единицами в шахматном порядке.


    Автор вопроса: Валерий Алексеевич

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

       Где можно скачать и установить Помощь MSDN для VB6?


    Автор вопроса: Валерий Алексеевич

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

       Просьба сообщить, как правильно открыть созданный и сохраненный проект Visual Basic 6.0 для дальнейшего редактирования? При открытии файла Проект.vbg не появляются ни форма проекта, ни модуль. Однако кнопкой Run проект запускается. Почему в проекте отсутствует файл с расширением *.bas?


    Автор вопроса: Валерий Алексеевич

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

       Дана задача: Зарплата инженера 5000р., бухгалтера 5400р., техника 3200р. Найти сумму выплачиваемой зарплаты, если на предприятии работает 2 инженера, 3 бухгалтера и 13 техников.
    Задачу я решил следующим способом. Программа работает. Прошу сообщить правильно ли я ее решил?
    Приводу текст модуля программы:

    'Устанавливаем начальные значения при открытии программы:
    Private Sub Form_Load()
         Me.Текст1.Text = 0 'Задаем нулевые значения исходным данным
         Me.Текст2.Text = 0 'Задаем нулевые значения исходным данным
         Me.Текст3.Text = 0 'Задаем нулевые значения исходным данным
         Me.Текст4.Text = 0 'Задаем нулевые значения исходным данным
         Me.Текст5.Text = 0 'Задаем нулевые значения исходным данным
         Me.Текст6.Text = 0 'Задаем нулевые значения исходным данным
         Me.Текст7.Text = 0 'Задаем нулевые значения исходным данным
         Me.Рамка2.Visible = False 'Скрываем группу Ответа
    End Sub
      
    'Кнопка Решить задачу:
    Private Sub Комманда1_Click()
    Me.Рамка2.Visible = True 'Показываем группу Ответа
    'Производим вычисления по расчету суммы зарплаты:
    Me.Текст7.Text = Me.Текст1.Text * Me.Текст4.Text + Me.Текст2.Text * Me.Текст5.Text + Me.Текст3.Text * Me.Текст6.Text
    End Sub
      
    'Кнопка Закончить:
    Private Sub Комманда2_Click()
         Unload Me 'Закрываем программу
    End Sub
      
    'Кнопка Заполнить:
    Private Sub Комманда3_Click()
         Me.Текст1.Text = 5000 'Устанавливаем значения согласно условию задачи
         Me.Текст2.Text = 5400 'Устанавливаем значения согласно условию задачи
         Me.Текст3.Text = 3200 'Устанавливаем значения согласно условию задачи
         Me.Текст4.Text = 2 'Устанавливаем значения согласно условию задачи
         Me.Текст5.Text = 3 'Устанавливаем значения согласно условию задачи
         Me.Текст6.Text = 13 'Устанавливаем значения согласно условию задачи
         Me.Текст7.Text = 0 'Устанавливаем значения согласно условию задачи
         Me.Рамка2.Visible = False 'Скрываем группу Ответа
    End Sub
      
    'Кнопка Очистить:
    Private Sub Комманда4_Click()
         Me.Рамка2.Visible = False 'Скрываем группу Ответа
         Me.Текст1.Text = 0 'Очищаем значения исходных данных
         Me.Текст2.Text = 0 'Очищаем значения исходных данных
         Me.Текст3.Text = 0 'Очищаем значения исходных данных
         Me.Текст4.Text = 0 'Очищаем значения исходных данных
         Me.Текст5.Text = 0 'Очищаем значения исходных данных
         Me.Текст6.Text = 0 'Очищаем значения исходных данных
         Me.Текст7.Text = 0 'Очищаем значения исходных данных
    End Sub


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

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

       Ребят, качните кто-нибудь нормальный контрол дерева. Я уже запарился с микрософтовским. Мне нужно-то всего-то 4 функции: добавить ветку с ИД и названием, удалить ветку, получить ИД ветки и найти ИД. Пока в стандартном это сделаешь, мылом покроешься.


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

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

       Я уже задавал вопрос, и все же... как в DataReport динамически добавить Label, ну и вообще какие либо объекты, или если такое не возможно, то где это возможно?


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

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

       Как написать прогу ( типа смотрелки фоток), чтобы при открытии каждой новой фотки размер формы ( ну в общем всей проги), становился равен размеру фотки. Я пробовал всякие autosize и windowState но что-то не получается.


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

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

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


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

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

       Как определить температуру BIOS (процессора, м.платы, винта). И вообще возможно ли это на vb6. Если можно кусок кода.




    Ответы:


    Вопрос:

       Как в VB отсортировать массив чисел?

    Ответ:

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

    Есть такой способ : Метод Пузырька:
    Весь масив перебирается снизу вверх, если елемент больше предыдущего, то они меняются местами. В конце концов у нас получится отсортированый по убыванию массив.


    Вопрос:

       Как на VBA занести определенную информацию в определенные места документа WORD? То есть как бы заполнить шаблон.

    Ответ:

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

    Примерно так:
    1. Сделай выгрузку данных в таблицу или текстовый файл (для устранения
    проблем с кодировкой используй юникод-CP1200).
    2. Создай шаблон Ворда
    3. Используй Слияние (MailMerge) документа с указанием в качестве источника
    данных ранее созданный файл.
    4. Расставь поля данных в шаблоне.
    5. Сохрани шаблон.

    Для получения результата достаточно подменить новыми значениями файл
    данных и выполнить Слияние в новый документ.

    Практически все пункты легко реализовываются в VBA.


    Вопрос:

       Как записать текст в файл *.txt через VB?

    Ответ:

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

    dim a as integer
    dim txt,fil as string
    a=freefile
    fil="Имя.txt"
    open fil for output as a
    txt="Пиши что хочешь"
    print #a,txt
    close a


    Вопрос:

       В папке есть куча рисунков с расширением bmp и jpg, а могут быть и не только рисунки. Рисунки не индексированы. С помощью CommonDialog открываю первый рисунок, который заносится в Picture. Подскажите, пожалуйста, как мне передать в CommonDialog1.FileName следующий рисунок, чтобы отобразить его в Picture. Такая штука есть в ACDTree и в XP-шном просмотрщике.

    Ответ:

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

    Необходимо поставить CD1.filter="*.jpg,*.bmp",тогда будут видны только рисунки. Для перехода к следующему рисунку необходимо выполнить CD1.ListIndex=CD1.ListIndex+1, CD1.Name автоматически примет имя следующего файла. А общее количество файлов находится CD1.ListConter-1


    Вопрос:

       В ообщем мне нужно сканировать процессы (из под Win2_k). И у определенного процеса изнать путь исполняемого файла (приложения).
    Вопрос: Как узнать расположение (полный путь к ) файла, через его процесы

    Ответ:

    Автор ответа: Сан Саныч

    Данный пример учитывает версию ОС

       Код для модуля:
    'declares of the API functions,constants,types and functions

    Public Declare Function Process32First Lib "kernel32" (ByVal hSnapshot As Long, lppe As PROCESSENTRY32) As Long
    Public Declare Function Process32Next Lib "kernel32" (ByVal hSnapshot As Long, lppe As PROCESSENTRY32) As Long
    Public Declare Function CloseHandle Lib "Kernel32.dll" (ByVal Handle As Long) As Long
    Public Declare Function OpenProcess Lib "Kernel32.dll" (ByVal dwDesiredAccessas As Long, ByVal bInheritHandle As Long, ByVal dwProcId As Long) As Long
    Public Declare Function EnumProcesses Lib "psapi.dll" (ByRef lpidProcess As Long, ByVal cb As Long, ByRef cbNeeded As Long) As Long
    Public Declare Function GetModuleFileNameExA Lib "psapi.dll" (ByVal hProcess As Long, ByVal hModule As Long, ByVal ModuleName As String, ByVal nSize As Long) As Long
    Public Declare Function EnumProcessModules Lib "psapi.dll" (ByVal hProcess As Long, ByRef lphModule As Long, ByVal cb As Long, ByRef cbNeeded As Long) As Long
    Public Declare Function CreateToolhelp32Snapshot Lib "kernel32" (ByVal dwFlags As Long, ByVal th32ProcessID As Long) As Long
    Public Declare Function GetVersionExA Lib "kernel32" (lpVersionInformation As OSVERSIONINFO) As Integer

    Public Type PROCESSENTRY32
        dwSize As Long
        cntUsage As Long
        th32ProcessID As Long
        th32DefaultHeapID As Long
        th32ModuleID As Long
        cntThreads As Long
        th32ParentProcessID As Long
        pcPriClassBase As Long
        dwFlags As Long
        szExeFile As String * 260
    End Type

    Public Type OSVERSIONINFO
        dwOSVersionInfoSize As Long
        dwMajorVersion As Long
        dwMinorVersion As Long
        dwBuildNumber As Long
        dwPlatformId As Long
        szCSDVersion As String * 128
    End Type

    Public Const PROCESS_QUERY_INFORMATION = 1024
    Public Const PROCESS_VM_READ = 16
    Public Const MAX_PATH = 260
    Public Const STANDARD_RIGHTS_REQUIRED = &HF0000
    Public Const SYNCHRONIZE = &H100000

    Public Const PROCESS_ALL_ACCESS = &H1F0FFF
    Public Const TH32CS_SNAPPROCESS = &H2&
    Public Const hNull = 0

    Function StrZToStr(s As String) As String
        StrZToStr = Left$(s, Len(s) - 1)
    End Function
    Public Function getVersion() As Long
        Dim osinfo As OSVERSIONINFO
        Dim retvalue As Integer
        osinfo.dwOSVersionInfoSize = 148
        osinfo.szCSDVersion = Space$(128)
        retvalue = GetVersionExA(osinfo)
        getVersion = osinfo.dwPlatformId
    End Function

    Код формы (на ней LstBox)

    Private Sub Form_Load()
         List1.Clear
         Select Case getVersion()
         Case 1
             Dim f As Long
             Dim sname As String
             Dim hSnap As Long
             Dim proc As PROCESSENTRY32
             
             hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)
             If hSnap = hNull Then Exit Sub
             proc.dwSize = Len(proc)
             
             f = Process32First(hSnap, proc)
             Do While f
                 sname = StrZToStr(proc.szExeFile)
                 List1.AddItem sname
                 f = Process32Next(hSnap, proc)
             Loop
         Case 2
             Dim cb As Long
             Dim cbNeeded As Long
             Dim NumElements As Long
             Dim ProcessIDs() As Long
             Dim cbNeeded2 As Long
             Dim NumElements2 As Long
             Dim Modules(1 To 200) As Long
             Dim lRet As Long
             Dim ModuleName As String
             Dim nSize As Long
             Dim hProcess As Long
             Dim i As Long
             
             cb = 8
             cbNeeded = 96
             Do While cb <= cbNeeded
                 cb = cb * 2
                 ReDim ProcessIDs(cb / 4) As Long
                 lRet = EnumProcesses(ProcessIDs(1), cb, cbNeeded)
             Loop
             NumElements = cbNeeded / 4
             
             For i = 1 To NumElements
                 hProcess = OpenProcess(PROCESS_QUERY_INFORMATION Or PROCESS_VM_READ, 0, ProcessIDs(i))
                 If hProcess <> 0 Then
                     lRet = EnumProcessModules(hProcess, Modules(1), 200, cbNeeded2)
                     If lRet <> 0 Then
                         ModuleName = Space(MAX_PATH)
                         nSize = 500
                         lRet = GetModuleFileNameExA(hProcess, Modules(1), ModuleName, nSize)
                         List1.AddItem Left(ModuleName, lRet)
                     End If
                 End If
                 lRet = CloseHandle(hProcess)
             Next
         End Select
    End Sub


    Вопрос:

       Подскажите, пожалуйста, какой самый быстрый (по производительности) способ склеить два,три,.... файла средствами VB.

    Ответ:

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

    Самый быстрый способ (наверное) это загрузить файлы в три массива as binary сделать свое черное дело по обьединению и залить обратно куда хочеш.


    Вопрос:

       Я сделал БД на Visual Basic, но она не работает на других компьютерах. Т.е. БД присоедена у меня по одному адресу, а на другом компьютере по другому.

    Ответ:

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

    Используй относительный адрес (app.path), либо запрашивай путь.


    Вопрос:

       Вышлите пример какой-нибудь маленькой БД (желательно с комментариями). Например, содержащую информацию о студентах, их адреса, телефоны.

    Ответ:

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

    В Аксэсе, компоненте офиса, есть учебные базы.


    Вопрос:

       Есть хороший код:

    Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Long) As Long
    Private Declare Function DefWindowProc Lib "user32" Alias "DefWindowProcA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    Private Const WM_SETHOTKEY = &H32
    Private Const WM_SHOWWINDOW = &H18
    Private Const HK_SHIFTA = &H141 'Shift + A
    Private Const HK_SHIFTB = &H142 'Shift + B
    Private Const HK_CONTROLA = &H241 'Control + A
    Private Const HK_ALTZ = &H45A
    Private Sub Form_Load()
    'Позволить узнать windows какая горячая клавиша в вашем приложении
    erg& = SendMessage(Me.hwnd, WM_SETHOTKEY, HK_ALTZ, 0)
    If erg& <> 1 Then MsgBox "You need another hotkey", vbOKOnly, "Error"
    'Сказать windows что делать при нажатии на hotkey
    'в данном случае - показать окно программы
    erg& = DefWindowProc(Me.hwnd, WM_SHOWWINDOW, 0, 0)
    End Sub

    Как Вы поняли, он позволяет активировать Ваше приложение при нажатии HOTKEY. Но, если я, допустим, хочу не активировать приложение, а выпонить другую процедуру, то где мне эту код этой самой процедуры писать?. И второй вопрос: Какая константа Ctrl+8? (Или по-возможности список всех констант).

    Ответ:

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

    If erg& <> 1 Then MsgBox "You need another hotkey", vbOKOnly, "Error"
    'Сказать windows что делать при нажатии на hotkey
    'в данном случае - показать окно программы
    ''''''''''''''''''''''
    ''Код пишется тут
    ''''''''''''''''''''''
    erg& = DefWindowProc(Me.hwnd, WM_SHOWWINDOW, 0, 0)
    End Sub

    Список всех констант можеш найти в API Text Viewer


    Вопрос:

       Хотел узнать как добавлять музыку или звуки в VB?

    Ответ:

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

    Данный код я взял на какой-то странице в интернете (к сожалению, я не помню автора). Он использует DirectSound (один из компонентов DirectX) для вывода звуков. Этот метод хорош тем, что позволяет создавать несколько звуковых буферов и выводить их одновременно. Но в данном примере используется только один буфер. Если нужно добавить звуковые буферы, просто добавьте переменные dsbuffer2, dsbuffer3, ..., dsbufferX и работайте с ними так же, как и с dsbuffer1.

    Dim dx As New DirectX7
    Dim ds As DirectSound
    Dim dsbuffer1 As DirectSoundBuffer

    Private Sub InitSound(sSound As String)
         On Local Error Resume Next
         
         Set ds = dx.DirectSoundCreate("") ' включаем DirectSound
         If Err.Number <> 0 Then
             MsgBox "Error occured: [" & Err.Number & "]: " & Err.Description
             Exit Sub
         End If
         
         ds.SetCooperativeLevel Me.hWnd, DSSCL_NORMAL
         
         Dim bufferDesc As DSBUFFERDESC 'необходимые переменные для
         Dim waveFormat As WAVEFORMATEX 'организации простого wave-буфера

         bufferDesc.lFlags = DSBCAPS_CTRLPAN 'ставим флажок буферу, что будем _
                             ' баловаться с PAN-звуком, т.е. с плавным звуком.
                             
         Set dsbuffer1 = ds.CreateSoundBufferFromFile(sSound, bufferDesc, waveFormat)
         If Err.Number <> 0 Then
             ' Что делать, если файл не существует или повреждён.
             MsgBox "Ошибка загрузки файла: [" & Err.Number & "]: " & Err.Description
             Exit Sub
         End If
    End Sub

    Private Sub PlayPanned(Buffer As DirectSoundBuffer, Position As Integer, Times As CONST_DSBPLAYFLAGS)
         On Error Resume Next
         Buffer.SetPan Position
         Buffer.Play Times
    End Sub

    Private Sub StopSound(Buffer As DirectSoundBuffer)
         On Error Resume Next
         Buffer.Stop
    End Sub

    Затем в том месте, где нужно проиграть звук (например, при нажатии на кнопку) вставляем следующие строки:

    InitSound SoundName ' SoundName - полный путь к звуковому WAV-файлу
    PlayPanned dsbuffer1, 0, DSBPLAY_DEFAULT

    Для того, чтобы проигрывание файла повторялось непрерывно, нужно вместо DSBPLAY_DEFAULT поставить DSBPLAY_LOOPING.

    Для того, чтобы остановить проигрывание файла, нужно в точке, где необходимо совершить остановку (например, тоже на кнопку), прописать следующее:

    StopSound dsbuffer1


    Вопрос:

       Как добавлять в *.txt строки из VB?

    Ответ:

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

    Open "c:\temp\fillist.in" For Output As #1
    Print #1, путь
    Reset


    Вопрос:

       Как загружать файлы из .txt в VB?

    Ответ:

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

    Open "c:\temp\fillist.in" For Input As #1
    Line Input #1, строка1
    Reset



    Ответ:

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

    В своё время я столкнулся с той же самой проблемой, в связи с чем переворошил кучу литературы, перечитал статьи в MSDN, связанные с этим вопросом, и решил создать собственный класс, который бы облегчил мне жизнь в области загрузки/чтения/записи TXT-файлов.


    '------------------------------------------------------------------
    ' File.cls
    '------------------------------------------------------------------
    ' Модуль класса
    '------------------------------------------------------------------
    ' Автор: Дёнин Никита Сергеевич
    ' Дата создания: 13 октября 2002 года
    ' Файл был взят из проекта SHADOW HTML editor version 1.1.0 RE
    ' Модификация: 16 ноября 2002 года
    '------------------------------------------------------------------
    ' Класс файла
    '------------------------------------------------------------------
    ' Свойства:
    '------------------------------------------------------------------
    ' sFileContent - свойство для чтения/записи; это текст, считанный
    ' из открытого файла
    ' sFileName - свойство только для записи; имя открываемого файла
    '------------------------------------------------------------------
    ' Методы:
    '------------------------------------------------------------------
    ' OpenFile - метод без параметров. Просто открывает файл
    ' и читает данные из него
    ' SaveFile - метод имеет строковый параметр vData;
    ' этот параметр является текстом, который должен быть
    ' записан в редактируемый файл
    '------------------------------------------------------------------
    Option Explicit

    Private sFileContent As String ' внутренняя переменная текста файла
    Private sFileName As String ' внутренняя переменная имени файла

    Public Sub OpenFile() ' метод открытия файла
         Open sFileName For Binary As #1
         sFileContent = Space(LOF(1))
         Get #1, , sFileContent
         Close #1 ' закрытие файла
    End Sub

    Property Get FileContent() As String ' свойство для чтения
         FileContent = sFileContent ' передача текста файла за пределы класса во внешнюю программу
    End Property

    Property Let FileContent(vData As String) ' свойство для записи
         sFileContent = vData ' запись текста файла в локальную переменную
    End Property

    Public Sub SaveFile() ' метод для сохранения файла
         Open sFileName For Binary As #1
         Put #1, , sFileContent
         Close #1
    End Sub

    Property Let FileName(vData As String) ' свойство только для записи (параметр - имя файла)
         sFileName = vData ' запись имени файла в локальную переменную класса
    End Property

    Private Sub Class_Terminate()
         sFileContent = ""
         sFileName = ""
    End Sub



    Ответ:

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

    Загрузка инфы

    dim str as string
    dim strCMD as string
    dim strValue as string
    open "xxx.xxx" for input as #1
    do EOF(#1) 'точно непомню но вроде пока не достигнут конец файла
    line input #1, str 'читает первую строку файла
    strCMD=left(str,instr(1,str,"=")) 'считываем имя команды
    strValue=trim(right(str,len(str)-instr(1,str,"="))) 'значение
    select case strCMD
    case "Money":
    case "Life":
    end select
    loop


    Вопрос:

       Вобщем, считаю себе достаточно старым программером на VB (когда-то у меня был свой сайт посвященный этому вопросу www.vbland.narod.ru, но я его прикрыл... времени как то не было), начинал еще лет 10 назад на QB.

    Последствия одной проблемы меня выбивает из коллеи... Если и вы не дадите ответ на мой вопрос - пойду за мыло и веревкой :)))

    Реализую систему плугинов для определенной программы. Так как этим уже занимался, был уверен проблем не возникнет. Написал (поддержка OCX, DLL в директории) - все работает более чем прекрасно. Новые плугины - регистрируются - старые работают.

    20:00 по Киевскому времени. Решаю переработать алгоритм. Хочу, чтобы плугины были сбиты не в одной папке, а в Plugins\[Название плугина], т.е. чтобы при загрузке программа пробегала по всем папкам и добавляла плугины.

    20:30 все сделал. Адреса файлов возвращает... но не хочет регистрировать новые плугины. Часа три мучаюсь... не хочет. Лезу в инет за помощью - нифига не нахожу: все используют одну апиху регистрации. У меня ничего не работает (вернее новые подключаемые модули не регистрируются - старые работают).

    Иду в Windows\System запускаю regsvr32.exe и регистрирую по очереди новые плугины. Написало - "зарегистрировано успешно". Запускаю - не работает.

    Утро вечера мудренее - иду спать.

    Утром с чистой головой сажусь писать. Еще часа четыре страдаю - не пашет. Ошибок синтаксических\логических нет. String с путями к плугинами, флаги и все остальное возвращаются в нормальной форме. Два раза переставлял Винду (первоначально Me, потом 98 se2, потом 2000 Server) - не пашет.

    Что делать?!

    Кто ответит: бутылка виртуального пива.

    Ответ:

    Автор ответа: Anatoliy Zhukov

    1-e
    regsvr32.exe WSEGDA daje isli i nichego ne sdelaet, pishet chto wsyo proshlo horosho :) !!!

    2-e
    pishi POLNIY put' k plagini, i w KAWICH'KAH wot tak "...."

    naprimer:
    Shell "regsvr32.exe ""c:\MyPlugIn\Chto to.dll""" (obrati wnimanie na probel ;) )



    Ответ:

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

    А ты попробуй их разрегистрировать, а потом опять зарегистрировать. Если поможет, сообщи - приятно удивлюсь.



    Ответ:

    Автор ответа: Сан Саныч

       Плагины как я понял пишешь тоже на ВБ?
       Ну тогда лови код который работает в моей проге давно и успешно.
       Плагины храняться в папке Plugins
       Исходники плагинов можешь поглядеть на моем сайте:
       http://apexsun.narod.ru/progs/noterepad/plugins/

       Dim arrPlugins() As Object
       Dim mm() As String, Jk3 As Long
       
         If DirFiles(mm, MePath & "Plugins\", "*.npg") Then
             ReDim arrPlugins(UBound(mm)) As Object
             For I = 0 To UBound(mm)
                 On Error GoTo Handler
                 TMP1 = LCase(mm(I))
                 TMP1 = Left$(TMP1, Len(TMP1) - 4) & ".Data"
                 Set arrPlugins(I) = CreateObject(TMP1)
                 TMP1 = arrPlugins(I).InitPlugin(hwnd)
                     ....
    NextPlug:
                 Jk3 = 0
             Next
             
             Exit Sub
    Handler:
             'Если плагин не зарегистрирован - зарегистрируем!
             Reg MePath & "Plugins\" & mm(I), True
             DoEvents
             Jk3 = Jk3 + 1
             If Jk3 < 10 Then 'чтоб не парить прогу если плагин не регистрируется
                 Resume
             Else
                 GoTo NextPlug
             End If
         End If

         Код для модуля:

    Private Declare Function CreateThread Lib "kernel32" (anyThread As Any, ByVal lngSize As Long, ByVal lngStart As Long, ByVal lngValue As Long, ByVal lngFlags As Long, lngThread As Long) As Long
    Private Declare Function GetProcAddress Lib "kernel32" (ByVal lngModule As Long, ByVal strName As String) As Long
    Private Declare Function FreeLibrary Lib "kernel32" (ByVal lngModule As Long) As Long
    Private Declare Function CloseHandle Lib "kernel32" (ByVal lngHandle As Long) As Long
    Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal lngHandle As Long, ByVal lngTime As Long) As Long
    Public Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
    Public Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long
    Public Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
    Public Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long
    Public Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long
    Public Type FILETIME
        dwLowDateTime As Long
        dwHighDateTime As Long
    End Type
    Public Type WIN32_FIND_DATA
        dwFileAttributes As Long
        ftCreationTime As FILETIME
        ftLastAccessTime As FILETIME
        ftLastWriteTime As FILETIME
        nFileSizeHigh As Long
        nFileSizeLow As Long
        dwReserved0 As Long
        dwReserved1 As Long
        cFileName As String * 260
        cAlternate As String * 14
    End Type

    Public Sub Reg(ByVal DLLforRegistre As String, Optional ByVal RegorUnreg As Boolean = True)
    Dim Hnd As Long, HnnD As Long
         HnnD = LoadLibrary(DLLforRegistre)
         Hnd = CreateThread(ByVal 0, 0, ByVal GetProcAddress(HnnD, IIf(RegorUnreg, "DllRegisterServer", "DllUnregisterServer")), ByVal 0, 0, 0)
         WaitForSingleObject Hnd, 10000
         CloseHandle Hnd
         FreeLibrary HnnD
    End Sub
    Public Function DirFiles(Files() As String, Optional ByRef Path As String, Optional ByRef Pattern As String = "") As Boolean
         If Len(Pattern) = 0 Then Pattern = "*.*"
         If Len(Path) = 0 Then Path = MePath
         If Right$(Path, 1) <> "\" Then Path = Path & "\"
         
         Dim wfd As WIN32_FIND_DATA, H As Long, I As Long, k As Long
         
         On Error Resume Next
         H = FindFirstFile(Path & Pattern, wfd)
         If H > 0 Then
             ReDim Files(0) As String
             Files(0) = TrimNulls(wfd.cFileName)
             I = IIf(Len(Files(0)) > 0, 1, 0)
             Do
                 wfd.cFileName = String(260, 0)
                 k = FindNextFile(H, wfd)
                 If k = 0 Then Exit Do
                 ReDim Preserve Files(I) As String
                 Files(I) = TrimNulls(wfd.cFileName)
                 I = I + 1
             Loop
         End If
         
         FindClose H
         DirFiles = IIf(I > 0, True, False)
    End Function




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

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

    наверх


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

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