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


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

Ваш голос отсылается по E-mail владельцу сайта, после чего голоса анализируются и на отдельной странице выводятся результаты.

Нет тем.

Рассылки Subscribe.Ru
Мир программирования на Visual BASIC 5.0 и HTML.
Новости сайта IgorykSoft и советы по программированию


Рассылки Subscribe.Ru
Старые игры

Доска почёта:

Sergey Y. Tkachev
Кононенко Роман
Kirill

Ссылки:

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

    наверх


    "Заморозить" Windows

    Положите на форму элемент CommandButton

    Необходимое предупреждение: после выполнения данного кода компьютер полностью блокируется, и перезагрузить его можно только кнопкой Restart на вашем компьютере.

    Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
    Private Sub Command1_Click()
    Dim freez
    freez = SetParent(Me.hWnd, Me.hWnd)
    End Sub

    наверх


    Добавить ссылку или удалить все ссылки в меню Пуск|Документы

    Private Declare Sub SHAddToRecentDocs Lib "shell32.dll" (ByVal uFlags As Long, ByVal pv As String)

    Private Sub Form_Load()
    'замените путь "c:\win\win.ini" на ваш файл
    Call SHAddToRecentDocs(2, "c:\win\win.ini")
    'удаление всех ссылок на документы
    SHAddToRecentDocs 2, vbNullString
    End Sub

    наверх


    Местоположение системных папок

    Данный пример покажет в какие директории проинсталированы Windows, а также папка расположения системных файлов и папка временных файлов.

    'Вариант 1

    Private Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
    Private Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
    Private Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
    Private Sub Form_Resize()
    Dim sDir As String, sTemp As String * 256
    nSize = GetWindowsDirectory(sTemp, 255): pWindows = Left(sTemp, nSize)
    Print "Windows = " & pWindows
    nSize = GetSystemDirectory(sTemp, 255): pSystem = Left(sTemp, nSize)
    Print "System = " & pSystem
    nSize = GetTempPath(255, sTemp): pTemp = Left(sTemp, nSize)
    Print "Temp = " & pTemp
    End Sub


    'Вариант 2

    'Расположение папки System (в виде функции)
    'Расположение папки Windows (в виде функции)
    Private Declare Function GetSystemDirectoryA Lib "kernel32" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
    Private Declare Function GetWindowsDirectoryA Lib "kernel32" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
    Public Function GetSystemDirectory() As String
    Dim s As String
    Dim i As Integer
    i = GetSystemDirectoryA("", 0)
    s = Space(i)
    Call GetSystemDirectoryA(s, i)
    s = Left$(s, i - 1)
    GetSystemDirectory = s
    Dim s As String
    Dim i As Integer
    End Function
    Public Function GetWindowsDirectory() As String
    Dim s As String
    Dim i As Integer
    i = GetWindowsDirectoryA("", 0)
    s = Space(i)
    Call GetWindowsDirectoryA(s, i)
    s = Left$(s, i - 1)
    GetWindowsDirectory = s
    End Function

    Private Sub Form_Load()
    MsgBox GetSystemDirectory
    MsgBox GetWindowsDirectory
    End Sub


    'Вариант 3

    Private Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
    Private Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" (ByVal nSize As Long, ByVal lpBuffer As String) As Long
    Private Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
    Public Enum SystemDirs
    dirWindows = 0
    dirSystem = 1
    dirTemp = 2
    End Enum
    Function GetSystemFolders(func As SystemDirs)
    Dim r, nSize As Long, tmp As String
    tmp = Space$(256): nSize = Len(tmp)
    Select Case func
    Case 0
    r = GetWindowsDirectory(tmp, nSize): GetSystemFolders = TrimNull(tmp)
    Case 1
    r = GetSystemDirectory(tmp, nSize): GetSystemFolders = TrimNull(tmp)
    Case 2
    r = GetTempPath(nSize, tmp): GetSystemFolders = TrimNull(tmp)
    End Select
    End Function
    Private Function TrimNull(Item As String)
    Dim pos As Integer: pos = InStr(Item, Chr$(0))
    If pos Then
    TrimNull = Left$(Item, pos - 1)
    Else: TrimNull = Item
    End If
    End Function

    Private Sub Command1_Click()
    For i = 0 To 2
    MsgBox GetSystemFolders(Str(i))
    Next
    End Sub

    наверх


    Возвращение путей различных каталогов

    (рабочий стол, папка шрифтов, меню кнопки ПУСК и т.д)

    Добавьте на форму элемент CommandButton. Необходимое пояснение: изменяя значение аргумента speFolder функции GetSpecFolder() на любой аргумент инструкции Enum SpecialFolderIDs вы получите путь к папке, заданной аргументом speFolder. В событии Command1_Click() показана пара примеров с различным аргументом speFolder.

    Private Enum SpecialFolderIDs
    sfidDESKTOP = &H0 'рабочий стол
    sfidPROGRAMS = &H2
    sfidPERSONAL = &H5
    sfidFAVORITES = &H6
    sfidSTARTUP = &H7
    sfidRECENT = &H8
    sfidSENDTO = &H9
    sfidSTARTMENU = &HB
    sfidDESKTOPDIRECTORY = &H10
    sfidNETHOOD = &H13
    sfidFONTS = &H14
    sfidTEMPLATES = &H15
    sfidCOMMON_STARTMENU = &H16
    sfidCOMMON_PROGRAMS = &H17
    sfidCOMMON_STARTUP = &H18
    sfidCOMMON_DESKTOPDIRECTORY = &H19
    sfidAPPDATA = &H1A
    sfidPRINTHOOD = &H1B
    sfidProgramFiles = &H10000
    sfidCommonFiles = &H10001
    End Enum
    Private Declare Function SHGetSpecialFolderLocation Lib "shell32" (ByVal hwndOwner As Long, ByVal nFolder As SpecialFolderIDs, ByRef pIdl As Long) As Long
    Private Declare Function SHGetPathFromIDListA Lib "shell32" (ByVal pIdl As Long, ByVal pszPath As String) As Long
    Const NOERROR = 0
    Dim sPath As String
    Dim IDL As Long
    Dim strPath As String
    Dim lngPos As Long

    Private Function GetSpecFolder(speFolder As SpecialFolderIDs)
    If SHGetSpecialFolderLocation(0, speFolder, IDL) = NOERROR Then
    sPath = String$(255, 0)
    SHGetPathFromIDListA IDL, sPath
    lngPos = InStr(sPath, Chr(0))
    If lngPos > 0 Then
    GetSpecFolder = Left$(sPath, lngPos - 1)
    End If
    End If
    End Function

    Private Sub Command1_Click()
    MsgBox GetSpecFolder(sfidFAVORITES)
    MsgBox GetSpecFolder(sfidPROGRAMS)
    End Sub

    наверх


    Получить имя компьютера и имя текущего пользователя

    Обращение к функциям простое - a = GetComputerName или a = GetUserName

    Private Declare Function GetComputerNameA Lib "kernel32" (ByVal lpBuffer As String, nSize As Long) As Long
    Private Declare Function WNetGetUserA Lib "mpr.dll" (ByVal lpName As String, ByVal lpUserName As String, lpnLength As Long) As Long
    Function GetComputerName() As String
    Dim sBuffer As String * 255
    If GetComputerNameA(sBuffer, 255&) <> 0 Then
    GetComputerName = Left$(sBuffer, InStr(sBuffer, vbNullChar) - 1)
    End If
    End Function
    Function GetUserName() As String
    Dim sUserNameBuff As String * 255
    sUserNameBuff = Space(255)
    Call WNetGetUserA(vbNullString, sUserNameBuff, 255&)
    GetUserName = Left$(sUserNameBuff, InStr(sUserNameBuff, vbNullChar) - 1)
    End Function

    наверх


    Запуск сервисов Панели Управления

    Если вы хотите запустить любую задачу из Панели Управления, вам достаточно использовать функцию SHELL: Shell "rundll32.exe shell32.dll,Control_RunDLL " & FileName, vbNormalFocus,

    где FileName - имя файла с расширением ".CPL", которые расположены в директории %windir/system%

    Данный пример покажет все файлы с расширением ".CPL".

    Первая кнопка запускает проводник со всеми расширениями, вторая - запускает конкретный сервис.

    Добавьте 2 CommandButton и 1 FileListBox на форму. Вставьте следующий код в события формы.

    Public Sub RunControlPanelExtension(FileName As String)
    Shell "rundll32.exe shell32.dll,Control_RunDLL " & FileName, vbNormalFocus
    End Sub
    Private Sub Command2_Click()
    RunControlPanelExtension File1.FileName
    End Sub
    Private Sub Command1_Click()
    Shell "rundll32.exe shell32.dll,Control_RunDLL", vbNormalFocus
    End Sub
    Private Sub Form_Load()
    File1.Pattern = "*.CPL"
    'В Windows NT замените 'C:\Windows\SYSTEM' на 'C:\WINNT\SYSTEM32'
    File1.FileName = "C:\Windows\SYSTEM"
    End Sub

    Примеры использования:

    'Установка оборудования
    'Call Shell("rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl @1", 5)
    'Установка и удаление программ
    'Call Shell("rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,1", 5)
    'Свойства экрана
    'Call Shell("rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,0", 5)
    'Настройки Интернета
    'Call Shell("rundll32.exe shell32.dll,Control_RunDLL inetcpl.cpl,,0", 5)
    'Клавиатура
    'Call Shell("rundll32.exe shell32.dll,Control_RunDLL main.cpl @1", 5)
    'Мастер установки принтера
    'Call Shell("rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL AddPrinter", vbNormalFocus)
    'Свойства модема
    'Call Shell("rundll32.exe shell32.dll,Control_RunDLL modem.cpl", 5)
    'Свойства мыши
    'Call Shell("rundll32.exe shell32.dll,Control_RunDLL main.cpl @0", 5)
    'Настройки сети
    'Call Shell("rundll32.exe shell32.dll,Control_RunDLL netcpl.cpl", 5)
    'Окно "Пароли"
    'Call Shell("rundll32.exe shell32.dll,Control_RunDLL password.cpl", 5)
    'Окно "Язык и стандарты"
    'Shell("rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,0", 5)
    'Окно "Звук"
    'Call Shell("rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl @1", 5)
    'Настройки системы
    'Call Shell("rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,0", 5)
    'Настройка даты и времени
    'Call Shell("rundll32.exe shell32.dll,Control_RunDLL timedate.cpl", 5)

    'ВАРИАНТ 2
    'С использованием ShellExecute.
    Private Declare Function GetDesktopWindow Lib "user32.dll" () As Long
    Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
    Const SW_SHOWNORMAL = 1
    Function StartCPLApp(AppName As String) As Long
    Dim Scr_hDC As Long
    Scr_hDC = GetDesktopWindow()
    MsgBox Scr_hDC
    StartCPLApp = ShellExecute(Scr_hDC, "Open", "Control", AppName, "C:\", SW_SHOWNORMAL)
    End Function

    Private Sub Command1_Click()
    StartCPLApp "DESK.CPL"
    End Sub

    наверх


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

    BalloonMessage for MS Agent

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

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

    наверх


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

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

    Вопросы:


    Автор вопроса:
    Mike.C

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

          У кого-нибудь есть документация о том как написать 3D движок на VB или исходники с подробным описанием? Я пока не собираюсь писать альтернативу DOOMIII, мне бы просто понять принципы создания 3D.
       Шлите на личный (mailto:fma_asb@uraltc.ru). Если размер до 100Kb, то можно без предупреждения (WinRAR3 имеется). Так же буду благодарен за прямые ссылки на что-нибудь по этой теме.


    Автор вопроса: Rusty Angles

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

       В VB6 пользовался во время оперцаии Loop, коммандой DoEvents, в результате программка не висела на паузе целиком, в VB.NET эта комманда не актуальна, как с этой проблемой бороться? Может есть альтернатива?


    Автор вопроса: Rusty Angles

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

       У меня вот такой вопросец (по VB.NET), создал я проект, он полностью работает, теперь решил иконку с названием программки установить, но чтобы они чередовались, добавил я несколько jpg файлов в ресурсы, не в RES файл а так, как есть.. в окошечко, что с права.. Так а как мне к этим файлам обращаться? К обычным то просто 1.****=fromfile("filename"), а тут уже не из файла вроде как, как такими ресурсами пользоваться?




    Ответы:


    Вопрос:

       Программа должна открыть файл A.TXT в своем каталоге. Как это осуществить, если путь к программе меняется?

    Ответ:

    Автор ответа: Andrey V. Shestakov

    Для определения пути к запущенному приложению есть функция App.Path, к ней необходимо добавить имя файла, начинающееся со слеша. Таким образом, переменная, в которой записывается название файла с путем будет определяться следующим образом:
    Dim sFile As String
    sFile = App.Path & "\a.txt"


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

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

    наверх


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

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