VBNet
VBMania
Голосование: Ваш голос отсылается по E-mail владельцу сайта, после чего голоса анализируются и на отдельной странице выводятся результаты. Нет тем. Доска почёта: Sergey Y. Tkachev Кононенко Роман Kirill Sergey Sapozhnikov Sobic Ссылки: |
Господа!!! читайте MSDN!!! Несколько слов от автора:
По-прежнему "висит" раздел Книги. Больше ничего нового не произошло.
Читайте! Содержание выпуска
Книги
Остальные книги о VB можно найти здесь. наверх Изменить дату последней модификации файла Расположите на форме элемент CommandButton. Замените путь к файлу "C:\1.txt" на путь к вашему файлу. В Проводнике нажмите правой клавишей мыши на вашем файле и посмотрите дату, когда файл был "Изменен:". Запустие нижеприведенный код на выполнение и снова посмотрите на дату изменения файла. Option Explicit Private Type FILETIME dwLowDate As Long dwHighDate As Long End Type Private Type SYSTEMTIME wYear As Integer wMonth As Integer wDayOfWeek As Integer wDay As Integer wHour As Integer wMinute As Integer wSecond As Integer wMillisecs As Integer End Type Private Const OPEN_EXISTING = 3 Private Const FILE_SHARE_READ = &H1 Private Const FILE_SHARE_WRITE = &H2 Private Const GENERIC_WRITE = &H40000000 Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, _ ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, ByVal lpSecurityAttributes As Long, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long Private Declare Function LocalFileTimeToFileTime Lib "kernel32" (lpLocalFileTime As FILETIME, lpFileTime As FILETIME) As Long Private Declare Function SetFileTime Lib "kernel32" (ByVal hFile As Long, ByVal MullP As Long, ByVal NullP2 As Long, lpLastWriteTime As FILETIME) As Long Private Declare Function SystemTimeToFileTime Lib "kernel32" (lpSystemTime As SYSTEMTIME, lpFileTime As FILETIME) As Long Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long Public Function SetFileDateTime(ByVal FileName As String, ByVal TheDate As String) As Boolean 'параметры: TheDate - дата последней модификации файла 'FileName - имя файла 'функция возвращает: True в случае успеха, False - в обратном случае If Dir(FileName) = "" Then Exit Function If Not IsDate(TheDate) Then Exit Function Dim lFileHnd As Long Dim lRet As Long Dim typFileTime As FILETIME Dim typLocalTime As FILETIME Dim typSystemTime As SYSTEMTIME With typSystemTime .wYear = Year(TheDate) .wMonth = Month(TheDate) .wDay = Day(TheDate) .wDayOfWeek = Weekday(TheDate) - 1 .wHour = Hour(TheDate) .wMinute = Minute(TheDate) .wSecond = Second(TheDate) End With lRet = SystemTimeToFileTime(typSystemTime, typLocalTime) lRet = LocalFileTimeToFileTime(typLocalTime, typFileTime) lFileHnd = CreateFile(FileName, GENERIC_WRITE, FILE_SHARE_READ Or FILE_SHARE_WRITE, ByVal 0&, OPEN_EXISTING, 0, 0) lRet = SetFileTime(lFileHnd, ByVal 0&, ByVal 0&, typFileTime) CloseHandle lFileHnd SetFileDateTime = lRet > 0 End Function Private Sub Command1_Click() Dim a As Boolean a = SetFileDateTime("c:\1.txt", Now) 'или: Call SetFileDateTime("c:\1.txt", "21/01/1998") End Sub наверх Изменение расширений всех файлов в папке Прежде всего установите ссылку на Microsoft Scripting Runtime через меню Project | References. Вызов функции прост: ChangeExtension "путь к папке", "новое_расширение_файла", "" Пример: ChangeExtension "D:\1\2", "htm", "" В данном примере используются функции определения имени файла с расширением и без. Public Function ChangeExtension(ByVal FolderName As String, ByVal NewExtension As String, OldExtension As String) As Boolean Dim oFso As New FileSystemObject Dim oFolder As Folder Dim oFile As File Dim sOldName As String Dim sNewName As String Dim iCtr As Long Dim iDotPosition As Integer Dim sWithoutExt As String Dim sFolderName As String sFolderName = FolderName If Right(sFolderName, 1) <> "\" Then sFolderName = sFolderName & "\" Set oFolder = oFso.GetFolder(FolderName) 'перебор каждого файла в указанной папке For Each oFile In oFolder.Files sOldName = sFolderName & oFile.Name 'старый путь/имя файла sNewName = sFolderName & Spliting1(Spliting(oFile.Name, "\"), ".") & "." & NewExtension 'новое имя файла 'файл с новым именем уже может существовать On Error Resume Next Name sOldName As sNewName Err.Clear On Error GoTo ErrorHandler Next ChangeExtension = True ErrorHandler: Set oFile = Nothing Set oFolder = Nothing Set oFso = Nothing End Function 'функция Spliting определяет
полное имя файла Private Sub Command1_Click() Получить DOS-имя файла Функция GetShortName в качестве входного параметра принимает длинное имя файла и возвращает DOS-имя файла Private Declare Function GetShortPathName Lib "kernel32.dll" Alias "GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long Private Function GetShortName(lName As String) As String Dim DosName As String Dim LenOfDosName As Long DosName = Space(256) LenOfDosName = GetShortPathName(lName, DosName, 256) GetShortName = Left$(DosName, LenOfDosName) End Function Private Sub Form_Load() Dim LongName As String LongName = "C:\Program Files\Internet Explorer\Iexplore.exe" MsgBox GetShortName(LongName) End Sub наверх Конвертация размера файла (байты в кило-, мегабайты) Очень хороший пример при работе с текстовыми файлами. При загрузке файла вы передаете в функцию полное имя файла и получаете "удобоваримое" обозначение размера файла. В данном примере ссылка на файл уже расположена в функции. Dim FileSize1 As String Dim FileSize2 As String Private Function FileSize() Static xx FileSize1 = FileLen("C:\Мои документы\courier.txt") xx = FileSize1 / 1024 If Len(FileSize1) >= 7 Then FileSize2 = Format((xx / 1024), "0.00") FileSize2 = FileSize2 & " MB" ElseIf Len(FileSize1) >= 4 Then xx = Format((FileSize1 / 1024), "0.00") FileSize2 = xx & " K" Else FileSize2 = FileSize1 & " Bytes" End If Print "File: " & "C:\Мои документы\courier.txt " & vbCrLf & "Old Size: "; FileSize1 & vbCrLf & "New Size: " & FileSize2 Me.Caption = "C:\Мои документы\courier.txt " & " - Size: " & FileSize2 End Function Private Sub Command1_Click() Call FileSize End Sub наверх Создание индекса htm-файлов Данный пример позволяет создать в одном htm-файле ссылки на все htm-файлы, находящиеся в одной директории Расположите на форме элемент CommandButton и
элемент FileListBox Получить атрибуты файла (GetFileAttributes) Получение атрибутов файла с помощью API-функции GetFileAttributes Const READONLY = &H1 Const HIDDEN = &H2 Const SYSTEM = &H4 Const DIRECTORY = &H10 Const ARCHIVE = &H20 Const NORMAL = &H80 Const COMPRESSED = &H800 Private Declare Function GetFileAttributes Lib "kernel32.dll" Alias "GetFileAttributesA" (ByVal lpFileName As String) As Long Private Sub Command1_Click() Dim val As String Dim attr As Long attr = GetFileAttributes("C:\MSDOS.SYS") If (attr And &H1) = &H1 Then val = " 'Только для чтения'," End If If (attr And &H2) = &H2 Then val = val & " 'Скрытый'," End If If (attr And &H4) = &H4 Then val = val & " 'Системный'," End If If (attr And &H20) = &H20 Then val = val & " 'Архивный'," End If If (attr And &H80) = &H80 Then val = val & " 'Нормальный'," End If If (attr And &H800) = &H800 Then val = val & " 'Компрессированный'," End If val = Left(val, Len(val) - 1) If (attr And &H10) = &H10 Then MsgBox "Данная папка имеет атрибуты " & val Else MsgBox "Данный файл имеет атрибуты " & val End If End End Sub наверх Мои программы BalloonMessage for MS Agent BalloonMessage for Microsoft Agent реализует диалог программы с
пользователем, используя при этом технологию Microsoft Agent. OCX реализует три
типа диалоговых окон: InputBox, MsgBox и MsgLabels. Автор: Шатрыкин Иван. Соавтор: Павел Сурменок. наверх Вопрос/Ответ Здесь Вы можете задать вопрос, или ответить на уже имеющиеся вопросы. Вопросы:Автор вопроса: Владимир Капустин Ответ ожидается по этому адресу Раз уж в прошлом номере вообще не было вопросов, то рискну задать несколько вопросов по VB3. 1. Как различить и закрыть приложение MS DOS в Win 3. 2. Как найти путь(приложения) или значок окна, зная его ручку (hWnd). Автор вопроса: Игорь Куз Ответ ожидается по этому адресу Как на форме VB6 создать подчинённую форму для отображения данных из таблицы связанной с главной отношением "один-ко-многим"? (Наподобие подчинённой формы в ACCESS) Автор вопроса: Саша Ответ ожидается по этому адресу Что бы послать почту с моей Form пишу: 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=" + "'Здесь описана тема...'" + "?body=" + "'Сдесь нужно написать сообщение'", "", "", SW_SHOWNORMAL) End Sub Но в почтовой программе текст 'Сдесь нужно написать сообщение' выводится там где вводится тема. Помогите сделать так чтобы в текстовом поле ияображалать текст Автор вопроса: Саша Ответ ожидается по этому адресу Как уянать какая клавеша нажата если forma не активна. Например: в каком либо редакторе нажимается какая либо кнопка а Forma обрабатывает это нажатие Автор вопроса: Сергей Кузичев Ответ ожидается по этому адресу Есть форма с MSHFlexGrid к которой подсоединен рекордсет с иерархическим рекордсетом. Как сделать так, чтобы при открытии формы FlexGrid покаяывал подчиненный рекордсет в свернутом виде. Автор вопроса: Мунгалов АВ Ответ ожидается по этому адресу Если на VB написать прогу и записать на болванку, чтобы она запускалась при запуске сидюка. Понятно в основном. так а если на машине не библиотек VB она же не запуститься? проверку можно сделать и если нет библиотек, то их копирнуть тут же. во как завернул? Автор вопроса: Сергей Копистинский Ответ ожидается по этому адресу Как, например, по нажатии кнопки, запускался файл .mp3 Автор вопроса: Николай Ответ ожидается по этому адресу Как на VB программно соединиться с базой ORACLE? Я попытался это сделать, но в DataGrid отображаются только заголовки полей... Автор вопроса: DarXeth Ответ ожидается по этому адресу Как сохранить картинку в JPG или GIF ? Автор вопроса: Сергей Ответ ожидается по этому адресу Подскажите пожалуйста как использовать ресурсы (диалоги, строки, графику и т.д.) DLL файлов. И где можно найти статью как писать DLL'ы на VB. Автор вопроса: Koksu RUT Ответ ожидается по этому адресу Как зделать так, что бы при клике по записи во флексгриде запись отображалась в тектовом поле? Ответы: Вопрос: У меня 2 вопроса: 1.Подскажите, как на VB определить папку(путь), где стоит система? 2.Можно ли на VB отключать яаставку Windows в свойствах экрана? Ответ: Автор ответа: K. Igor Пример показывает как при помощи использования функции API GetSystemDirectory получить имя системного каталога Windows. Текст: Private Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long Function GetSysDir() As String Dim strBuffer As String Dim ret As Long strBuffer = Space$(1024) ret = GetSystemDirectory(strBuffer, 1024) GetSysDir = Trim$(Left$(strBuffer, ret)) End Function Вопрос: У меня 2 вопроса: 1.Подскажите, как на VB определить папку(путь), где стоит система? 2.Можно ли на VB отключать яаставку Windows в свойствах экрана? Ответ: Автор ответа: SC 1. 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 2. Можно, в файле 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 Вопрос: Подскажите, как засунуть картинки в DLL и как с ними потом работать (т.е.выдёргивать из этой же DLL-ки). Ответ: Автор ответа: SC В начале заходим в меню 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 Можете заполнить эту форму, либо отослать вопрос СЮДА Форма для добавления нового вопроса в этот раздел. Информация отсылается по E-mail владельцу сайта. |
||||||||||
Выпуск подготовили: |
Сурменок Павел |