VBNet
VBMania
Голосование: Ваш голос отсылается по E-mail владельцу сайта, после чего голоса анализируются и на отдельной странице выводятся результаты. Нет тем. Доска почёта: Sergey Y. Tkachev Кононенко Роман Kirill Sergey Sapozhnikov Sobic Ссылки: |
Господа!!! читайте MSDN!!! Несколько слов от автора:
Поздравляю всех с официальным наступлением весны!
Читайте! Содержание выпуска
Книги
Остальные книги о VB можно найти здесь. наверх Дополнение: Открытие стандартного окна выбора папок/файлов Данный пример является дополнением к "Открытие стандартного окна выбора папок/файлов", но обеспечивает дополнительную возможность выбора только "Сетевого Окружения", а также папок ПРОГРАММЫ и ГЛАВНОЕ МЕНЮ Вам понадобится элемент CommandButton Private Type BrowseInfo hWndOwner As Long pIDLRoot As Long pszDisplayName As Long lpszTitle As Long ulFlags As Long lpfnCallback As Long lParam As Long iImage As Long End Type Public Enum BrowseType BrowseForFolders = &H1 BrowseForComputers = &H1000 BrowseForPrinters = &H2000 BrowseForEverything = &H4000 End Enum Public Enum FolderType CSIDL_BITBUCKET = 10 CSIDL_CONTROLS = 3 CSIDL_DESKTOP = 0 CSIDL_DRIVES = 17 CSIDL_FONTS = 20 CSIDL_NETHOOD = 18 CSIDL_NETWORK = 19 CSIDL_PERSONAL = 5 CSIDL_PRINTERS = 4 CSIDL_PROGRAMS = 2 CSIDL_RECENT = 8 CSIDL_SENDTO = 9 CSIDL_STARTMENU = 11 End Enum Private Const MAX_PATH = 260 Private Declare Sub CoTaskMemFree Lib "ole32.dll" (ByVal hMem As Long) Private Declare Function lstrcat Lib "kernel32.dll" Alias "lstrcatA" (ByVal lpString1 As String, ByVal lpString2 As String) As Long Private Declare Function SHBrowseForFolder Lib "shell32.dll" (lpbi As BrowseInfo) As Long Private Declare Function SHGetPathFromIDList Lib "shell32.dll" (ByVal pidList As Long, ByVal lpBuffer As String) As Long Private Declare Function SHGetSpecialFolderLocation Lib "shell32.dll" (ByVal hWndOwner As Long, ByVal nFolder As Long, ListId As Long) As Long Public Function BrowseFolders(hWndOwner As Long, sMessage As String, Browse As BrowseType, ByVal RootFolder As FolderType) As String Dim Nullpos As Integer Dim lpIDList As Long Dim res As Long Dim sPath As String Dim BInfo As BrowseInfo Dim RootID As Long SHGetSpecialFolderLocation hWndOwner, RootFolder, RootID BInfo.hWndOwner = hWndOwner BInfo.lpszTitle = lstrcat(sMessage, "") BInfo.ulFlags = Browse If RootID <> 0 Then BInfo.pIDLRoot = RootID lpIDList = SHBrowseForFolder(BInfo) If lpIDList <> 0 Then sPath = String(MAX_PATH, 0) res = SHGetPathFromIDList(lpIDList, sPath) Call CoTaskMemFree(lpIDList) Nullpos = InStr(sPath, vbNullChar) If Nullpos <> 0 Then sPath = Left(sPath, Nullpos - 1) End If End If BrowseFolders = sPath End Function Private Sub Command1_Click() 'следующие вызовы функции сработали нормально MsgBox BrowseFolders(hWnd, "Select a Folder", BrowseForFolders, CSIDL_DESKTOP) '+весь компьютер 'MsgBox BrowseFolders(hWnd, "Select a Folder", BrowseForFolders, CSIDL_DRIVES) '+только устройства 'MsgBox BrowseFolders(hWnd, "Select a Folder", BrowseForFolders, CSIDL_NETHOOD) '+только сеть 'MsgBox BrowseFolders(hWnd, "Select a Folder", BrowseForFolders, CSIDL_PROGRAMS) '+папка Программы 'MsgBox BrowseFolders(hWnd, "Select a Folder", BrowseForFolders, CSIDL_STARTMENU) '+Главное меню 'результат действия следующих кодов вызвал недоумение... 'MsgBox BrowseFolders(hWnd, "Select a Folder", BrowseForFolders, CSIDL_BITBUCKET) '-корзина 'MsgBox BrowseFolders(hWnd, "Select a Folder", BrowseForFolders, CSIDL_CONTROLS) '-панель управления 'MsgBox BrowseFolders(hWnd, "Select a Folder", BrowseForFolders, CSIDL_FONTS) '-папка со шрифтами 'MsgBox BrowseFolders(hWnd, "Select a Folder", BrowseForFolders, CSIDL_NETWORK) '-NetHood 'MsgBox BrowseFolders(hWnd, "Select a Folder", BrowseForFolders, CSIDL_PERSONAL) '-Мои документы 'MsgBox BrowseFolders(hWnd, "Select a Folder", BrowseForFolders, CSIDL_PRINTERS) '-Принтеры 'MsgBox BrowseFolders(hWnd, "Select a Folder", BrowseForFolders, CSIDL_RECENT) '-RECENT 'MsgBox BrowseFolders(hWnd, "Select a Folder", BrowseForFolders, CSIDL_SENDTO) '-SENDTO End Sub наверх Получение сведений о папке (с использованием FileSystemObject) В данном примере вы можете узнать о том, как можно получить сведения о папке с использованием FileSystemObject. Для использования этого примера установите ссылку на Microsoft Scripting Runtime через меню Project | References. И не забудьте расположить на форме элемент ListBox В этом примере вы можете узнать: Имя папки, Полный путь, Дата создания, Размер папки Dim FSys As New FileSystemObject Private Sub Form_Load() Set qn = FSys.GetFolder("D:\2\attribute\") List1.AddItem "Имя папки " & qn.Name List1.AddItem "Полный путь " & qn.Path List1.AddItem "Дата создания " & qn.DateCreated List1.AddItem "Размер папки " & qn.Size End Sub наверх Открытие стандартного окна выбора папок/файлов Расположите на форме TextBox и CommandButton. При нажатии на кнопку вы получите доступ ко всем папкам и файлам компьютера. Вы можете ограничить возможность выбирать только папки. Наличие BIF-констант в вызываемой функции и определяет такие возможности по выбору. Option Explicit Private Type BrowseInfo hWndOwner As Long pIDLRoot As Long pszDisplayName As Long lpszTitle As Long ulFlags As Long lpfnCallback As Long lParam As Long iImage As Long End Type Private Enum WhatBrowse BIF_RETURNONLYFSDIRS = &H1 BIF_BROWSEINCLUDEFILES = &H1 Or &H4000 BIF_BROWSEFORCOMPUTER = &H1000 BIF_BROWSEFORPRINTER = &H2000 End Enum Private Const MAX_PATH = 260 Private Declare Sub CoTaskMemFree Lib "ole32.dll" (ByVal hMem As Long) Private Declare Function lstrcat Lib "kernel32" Alias "lstrcatA" (ByVal lpString1 As String, ByVal lpString2 As String) As Long Private Declare Function SHBrowseForFolder Lib "shell32" (lpbi As BrowseInfo) As Long Private Declare Function SHGetPathFromIDList Lib "shell32" (ByVal pidList As Long, ByVal lpBuffer As String) As Long Public Function fBrowseForFolder(hWndOwner As Long, sPrompt As String, WhatBr) As String Dim iNull As Integer Dim lpIDList As Long Dim lResult As Long Dim sPath As String Dim udtBI As BrowseInfo With udtBI .hWndOwner = hWndOwner .lpszTitle = lstrcat(sPrompt, "") .ulFlags = WhatBr End With lpIDList = SHBrowseForFolder(udtBI) If lpIDList Then sPath = String$(MAX_PATH, 0) lResult = SHGetPathFromIDList(lpIDList, sPath) Call CoTaskMemFree(lpIDList) iNull = InStr(sPath, vbNullChar) If iNull Then sPath = Left$(sPath, iNull - 1) End If fBrowseForFolder = sPath End Function Private Sub Command1_Click() Dim sStr As String 'вместо входящего параметра BIF_BROWSEINCLUDEFILES вы можете использовать одну из 'BIF-констант, описанных строчкой Private Enum WhatBrowse (смотри в разделе General_Declarations) sStr = fBrowseForFolder(hWnd, "Выберите папку, файл, принтер или компьютер", BIF_BROWSEINCLUDEFILES) Text1.Text = sStr End Sub наверх Как программно вызвать окно свойств (Properties) файла Private Declare Function ShellExecuteEX Lib "shell32.dll" Alias "ShellExecuteEx" (SEI As SHELLEXECUTEINFO) As Long Const SEE_MASK_INVOKEIDLIST = &HC Const SEE_MASK_NOCLOSEPROCESS = &H40 Const SEE_MASK_FLAG_NO_UI = &H400 Private Type SHELLEXECUTEINFO cbSize As Long fMask As Long hwnd As Long lpVerb As String lpFile As String lpParameters As String lpDirectory As String nShow As Long hInstApp As Long lpIDList As Long lpClass As String hkeyClass As Long dwHotKey As Long hIcon As Long hProcess As Long End Type Public Sub ShowProps(FileName As String, OwnerhWnd As Long) Dim SEI As SHELLEXECUTEINFO Dim r As Long With SEI .cbSize = Len(SEI) .fMask = SEE_MASK_NOCLOSEPROCESS Or _ SEE_MASK_INVOKEIDLIST Or SEE_MASK_FLAG_NO_UI .hwnd = OwnerhWnd .lpVerb = "properties" .lpFile = FileName .lpParameters = vbNullChar .lpDirectory = vbNullChar .nShow = 0 .hInstApp = 0 .lpIDList = 0 End With r = ShellExecuteEX(SEI) End Sub Private Sub Form_Load() Call ShowProps("C:\AUTOEXEC.BAT", Me.hwnd) End Sub наверх Получение даты последней коррекции файла Для работы иногда полезно получить данные о дате создания или последней коррекции файла. Для этого можно использовать функцию FileDateTime(ИмяФайла), например: Dim MyDateTime
As Date С помощью этой же функции можно определить время создания каталога, но следует иметь в виду, что имя каталога в данном случае не должно заканчиваться на обратную косую черту: MyDateTime = FileDateTime("D:\TMP\") ' имя
каталога задано неверно Но получить дату создания корневого каталога
(то есть диска) с использование FileDateTime нельзя. Существует ли файл? 1. Возвращает 1(файл существует) или 0 (файла нет) Private Declare Function PathFileExists Lib
"shlwapi.dll" Alias "PathFileExistsA" (ByVal pszPath As String) As
Long 2. Возвращает True(файл существует) или False(файла нет) Private Declare Function PathFileExists Lib
"shlwapi.dll" Alias "PathFileExistsA" (ByVal pszPath As String) As
Long Мои программы BalloonMessage for MS Agent BalloonMessage for Microsoft Agent реализует диалог программы с
пользователем, используя при этом технологию Microsoft Agent. OCX реализует три
типа диалоговых окон: InputBox, MsgBox и MsgLabels. Автор: Шатрыкин Иван. Соавтор: Павел Сурменок. наверх Вопрос/Ответ Здесь Вы можете задать вопрос, или ответить на уже имеющиеся вопросы. Вопросы:Автор вопроса: Георгий Ответ ожидается по этому адресу Кто янает, ДЛЯ КАКОЙ цели в CommonDialog есть вояможность яадавать .Action = 1, 2, 3 ? Свойство .Action = 2 не работает, а только соядает ВИДИМОСТЬ Save As. Вопрос: А ЗАЧЕМ КОЗЕ БАЯН!? Или я не прав? Автор вопроса: Александр Ответ ожидается по этому адресу Подскажите пожалуйста как в Excel создать свою форму для ввода данных, подобной той которая имется в Excel? А то создал лист с формулами и для заполнения нужно всего 3-4 ячейки в строке,а строк очень много. стандартная встроенная форма не работает ,так как очень много ячеек в строке да и они ненужны для ввода данных и если есть такая возвожность то пришлите пож. исходники. Автор вопроса: Журавлев Д.В. Ответ ожидается по этому адресу Реально ли вообще для команды print задать место вывода текста? Тесть сделать эффект печатающей машинки, или "текущее значение= Х" где Х меняется. Ну и естественно чтоб это было в одной строчке. Применение Label нежелательно. Ответы: Вопрос: Хочу, чтобы из моей программы можно было послать электронное письмо (пользователь задает адрес, текст и т.д.) Как это сделать? Ответ: Автор ответа: Сергей Гуров Для отправки письма, кликаешь по кнопке или метке (вообще по чему хочешь (и лучше над этим объектом менять курсор)) и запускается почтовик установленный по умолчанию с указанными параметрами через API, остается только отправить мыло. Параметры можешь определить чем хочешь: списком, текстовым полем и т.д. помогаю. ----------------- 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) Private Declare Function GetDesktopWindow Lib "user32" () As Long Private Sub Label1_Click() 'Вызываем маил с адресом Call ShellExecute(0&, "Open", "mailto:" + "ЛОГИН@СЕРВЕР.ru" + "?Subject=" + "'Здесь описана тема...'", "", "", SW_SHOWNORMAL) End Sub ------------------ Вот и все. Вопрос: Народ, а где можно достать инфу по работе с DirectX в VB? Ответ: Автор ответа: Кривокрисенко Артём Инфу эту можно достать на 4-х дисковом MSDN(Январь, 2001). Весь четвёртый компакт полностью посвящён DirextX. Купил я этот компакт в Киеве на книжном рынке возле метро Петровка. Если живёшь далеко от Киева (как и я), то полазь по www.msdn.microsoft.com. Думаю, там что-нибудь найдёшь. Вопрос: Лююди! Как проигрывать MP3 файлы на VB? Использовать MCI или можно через WinAPI??? Ответ: Автор ответа: Кривокрисенко Артём ожно проигрывать эти файлы, подключив к проекту библиотеку Windows Media Player Можете заполнить эту форму, либо отослать вопрос СЮДА Форма для добавления нового вопроса в этот раздел. Информация отсылается по E-mail владельцу сайта. |
||||||||||
Выпуск подготовили: |
Сурменок Павел |