VB Студия
Голосование: Ваш голос отсылается по E-mail владельцу сайта, после чего голоса анализируются и на отдельной странице выводятся результаты. Каким браузером Вы пользуетесь? Результаты голосования |
Несколько слов от автора:
Наверстал новый выпуск. Он как всегда вовремя. Сегодня в разделе Вопрос/Ответ очень много вопросов. Обязательно загляните туда. Может быть Вы кому-нибудь поможете.
Присылайте информацию и читайте рассылку! Содержание выпуска
Новости сайта VB Студия Сабклассинг Автор Алексей Вишневский Оптимизация кода в Visual Basic Автор Шатрыкин Иван Опыт создания массива пользовательского типа в ActiveX Control'е Автор М. Эскин Создание подсказки для меню в Visual Basic Автор Deborah L. Cooper Добавил ответы на несколько вопросов в FAQ наверх Новости сайта VB Line 02 сентября 2001 г. Сегодня небольшое обновление сайта. В разделе ActiveX несколько новых контролов: для модификации стандартного MsgBox, для работы с системным треем и контрол TipOfDay для вывода "советов дня". В .Статьи добавлена моя новая работа "Оптимизация кода в Visual Basic", а в раздел Примеры добавлены три новые работы: как считать атрибуты безопасности файла в Windows NT, создание в меню списка последних загруженных файлов и как сменить курсор в текстовом окне. И ещё в разделе Shareware, наконец, доступна моя первая работа BalloonMessage for Microsoft Agent. OCX предназначен для организации диалога программы с пользователем с помощью Microsoft Agent.. Внимание! Сайт VBline ищет новый хостинг. Требования простые: ASP, Ms Access, не менее 30 Mb, пока желательна оплата баннерами. Свои предложения и, особенно, советы, на тему хостинга, присылайте мне. наверх PassHash функция (выдаёт число, соответствующее паролю). Option Explicit Public Function PassHash(Pass As String) As Long Dim I As Long Dim L As Long Dim S As Double Dim K As Double L = Len(Pass) For I = 1 To L K = 1 + 1 * (I / L) S = S + Asc(Mid$(Pass, I, 1)) * K Next I S = S / L PassHash = Int(S) * 1000000 + (S - Int(S)) * 1000000000 End Function наверх Как узнать переменные окружения операционной системы Совет прислал Дёмин Антон [http://demin.narod.ru]. В Бэйсике есть одна ОЧЕНЬ полезная, но многими забытая функция Environ! Она возвращает имена и содержание всех переменных среды операционной системы!!! Так, например, чтобы получить директорию Windows, совсем не надо прибегать к API-функции GetWindowsDirectory!!!!!! А получить её можно так: ABC = Environ ("windir") И ВСЁ! Но и это ещё не всё! Также можно получить следующие перменные: ABC = Environ ("TMP") 'директория временных файлов TEMP ABC = Environ ("BLASTER") 'координаты звуковой карты ABC = Environ ("PATH") 'пути, объявленные в autoexec.bat НО И ЭТО ВСЁ ЕЩЁ НЕ ВСЁ!!!! Чтобы получить имя и значение переменной, в скобках вместо строки можно поставить номер переменной (или индекс?). Вставьте следующую процедуру в окно Code, запустите проект, кликните на форме увидите список всех переменных и их значений! Private Sub Form_Click()'берём переменную и присваиваем ей единицу m = 1 'запускаем цикл, который увеличивает переменную m каждый 'раз на единицу и подсовывает её функции Environ Do 'присваиваем переменной EnvString возвращаемую переменную, 'соответствующую номеру m EnvString = Environ(m) 'печатаем перменную, соответсвующую номеру m Print Environ(m) 'перменную m увеличиваем на один m = m + 1 'если перменная EnvString всё ещё не пустая - крутим дальше... Loop Until EnvString = "" End Sub Вот такой совет! От себя добавлю, что если функция не может найти указанную переменную, то она возвращает пустую строку. наверх Как защитить свою программу от взлома "звёздочек" при вводе пароля Ещё один совет от Дёмина Антона [http://demin.narod.ru]. Он посвящен тем, кто хочет избежать лёгкого взлома текстового поля с паролем (он там отображается в виде звёздочек). Я думаю, что ни для кого не является секретом, как можно посмотреть пароль. Теперь, собственно, совет. Для начала в разделе формы General Declarations объявите переменную, которая будет содержать код: Dim pswd As String Затем в свойствах текстового поля установите в PasswordChar звёздочку "*". Теперь выберите событие Text1_KeyPress и впишите туда: Private Sub Text1_KeyPress(KeyAscii As Integer)pswd = pswd + Chr(KeyAscii) KeyAscii = Asc("*") End Sub Теперь нажатия будут отлавливаться, а передаваться будут текстовому полю только звёздочки! И программа-взломщик пароль уже не достанет!!! Если кто-то хочет сделать так, как в Linux'e, т.е. никаких звёздочек нет вообще, то строку KeyAscii = Asc("*") надо заменить на KeyAscii = 0 и всё! Да, кстати, теперь пароль хранится в переменной pswd!!! Вот так-то, господа программисты! А Вы думали, что на Visual Basic можно только менюшки писать? Нет, можно пароли ломать или защищаться от их взлома ;-). наверх Меняем даты создания, модификации и последнего доступа к файлам Совет (или пример) от Дёмина Антона [http://demin.narod.ru]. Он посвящен временам файлов. Итак, у Вас есть файл, как узнать время его создания? Смотрите ниже приведённый код. ' Открывает указанный файл в режиме двоичного доступа. ' Эта функция необходима нам для получения доступа к датам файла и изменения их. Declare Function lopen& Lib "kernel32" Alias "_lopen" (ByVal lpPathName As String, ByVal iReadWrite As Long) ' Закрывает указанный файл. Declare Function lclose& Lib "kernel32" Alias "_lclose" (ByVal hFile As Long) Public Const READAPI = 0 Public Const WRITEAPI = 1 Public Const READ_WRITE = 2 ' Получает информацию из указанного файла о дате времени. ' Аргументы lpCreationTime, lpLastAcccessTime и lpLastWriteTime могут быть ' установлены в ноль (тогда передайте эти аргументы ByVal As Long), если ' вам они не нужны. Дата возвращается этой функцией в формате UTC. Declare Function GetFileTime& Lib "kernel32" (ByVal hFile As Long, lpCreationTime As FILETIME, lpLastAccessTime As FILETIME, lpLastWriteTime As FILETIME) ' Устанавливает время создания, изменения и последнего доступа к файлу. Declare Function SetFileTime& Lib "kernel32" (ByVal hFile As Long, lpCreationTime As FILETIME, lpLastAccessTime As FILETIME, lpLastWriteTime As FILETIME) ' 64-битное число, указывающее на прошедшее время ' с 1 января 1601 г. с единицей измерения 100 наносекунд. Type FILETIME ' 8 бит dwLowDateTime As Long dwHighDateTime As Long End Type ' Записывает аргумент со структурой FILETIME ' во второй аргумент со структурой SYSTEMTIME. Declare Function FileTimeToSystemTime& Lib "kernel32" (lpFileTime As FILETIME, lpSystemTime As SYSTEMTIME) ' Записывает аргумент со структурой SYSTEMTIME ' во второй аргумент со структурой FILETIME. Declare Function SystemTimeToFileTime& Lib "kernel32" (lpSystemTime As SYSTEMTIME, lpFileTime As FILETIME) ' Эта структура содержит информацию о времени и дате. Type SYSTEMTIME ' 16 бит wYear As Integer wMonth As Integer wDayOfWeek As Integer wDay As Integer wHour As Integer wMinute As Integer wSecond As Integer wMilliseconds As Integer End Type А затем для работы всего этого нужно сделать следующие: Sub Main()Dim lFileHwnd As Long Dim lDummy As Long Dim ftModified As FILETIME Dim ftCreated As FILETIME Dim ftAccessed As FILETIME Dim stCreated As SYSTEMTIME ' Поменяйте C:\AUTOEXEC.BAT на любой другой файл lFileHwnd = lopen("C:\AUTOEXEC.BAT", READ_WRITE) GetFileTime lFileHwnd, ftCreated, ftAccessed, ftModified FileTimeToSystemTime ftCreated, stCreated With stCreated Debug.Print .wDay & "." & .wMonth & "." & .wYear & ", " & .wHour & ":" & .wMinute & ":" & .wSecond & ":" & .wMilliseconds End With ' Увеличивает год создания файла на 5 stCreated.wYear = stCreated.wYear + 5 SystemTimeToFileTime stCreated, ftCreated SetFileTime lFileHwnd, ftCreated, ftAccessed, ftModified ' Проверка GetFileTime lFileHwnd, ftCreated, ftAccessed, ftModified FileTimeToSystemTime ftCreated, stCreated With stCreated Debug.Print .wDay & "." & .wMonth & "." & .wYear End With lDummy = lclose(lFileHwnd) End Sub наверх Вопрос/Ответ Здесь Вы можете задать вопрос, или ответить на уже имеющиеся вопросы. Вопросы:Автор вопроса: Александр Ответ ожидается по этому адресу Как прочитать в реестре, все параметры данного раздела, с помощью API ? Автор вопроса: Svetlana Ответ ожидается по этому адресу Как можно записать значения серого цвета изображения 30x30 в виде текстового файла? Автор вопроса: Vasiliy Ответ ожидается по этому адресу Как соединиться с другим компом через winsock control? Автор вопроса: Yakobs Ответ ожидается по этому адресу Создал OCX, в который входит ComboBox. Список ComboBox-а заполняется из текстового файла (кодировка ANSI). Компонент предназначен для работы в системе визуализации WinCC (вряд ли это что-то кому-то скажет, но чего в жизни не бывает...). Под NT всё работает корректно. Под Windows_98 при вместо кирилицы отображаются иероглифы (буквы латинского алфавита с надбуквенными символами). При работе с кодировкой OEM наблюдалась аналогичная картина. Вставлял компонент в Internet Explorer - всё нормально отЗаранее спасибо всем принявшим участе в решении проблемы. Автор вопроса: Сергей Ответ ожидается по этому адресу Как написать код преобразования числа в текст типа: 23 456,23 руб. преобразуется в "Двадцать три тысячи четыреста пятьдесят шесть рублей, 23 коп. Автор вопроса: Валерий Ответ ожидается по этому адресу Вопрос по VBA. Как вставить кодом (MS Access 2000) OLE-объект (f.e., jpg) в Recordset ? Автор вопроса: Тимур Ответ ожидается по этому адресу Возможно ли с Помощью VB соядать программу дозвона по ppp-протоколу? Хотелось видеть исходный код, если это возможно. Автор вопроса: Павел Ответ ожидается по этому адресу Когда пользователь нажимает кнопку дверцы CD-ROM, нужно перехватить команду, выполнить заданные операции и только тогда открыть дверцу. Кто подскажет, как это сделать? Автор вопроса: Vasiliy Ответ ожидается по этому адресу Люди!!! Кто знает как сделать графическое сопровождение музыкального файла как в Win. Media Player. Автор вопроса: Oleg Lekuchev Ответ ожидается по этому адресу Я написал ActiveX DLL на VB 6 в одной из функций есть вызов внешнего exe файла (простая программа не выводит никаких формб просто принимает пути к 2 файлам и пишет на диск третий) Так вот, пока я работал в Debug моде все нормально, а в откомпилированном виде внешняя программа не отрабатывает, ошибок не появляется, программа запускается, но видимо что-то не находит.... я пользуюсь функцией Shell("путь_к_программе") Не могли бы вы пояснить в чем может быть проблема Автор вопроса: Sonata Ответ ожидается по этому адресу Есть необходимость ия клиента на VB соядать сообщение Outlook Express (важно!), яаполнив все атрибуты письма. Стандартная операция, бея проблем проходящая на Outlook'е, но выяывающая трудности с Express'ом (приложение есть, а объекта типа "сообщение" нет!). Автор вопроса: Sobic Ответ ожидается по этому адресу Нужно вывести картинку запиханную в массив pic(width,height) as byte на экран, используя палитру Pal(255,2). Причем с максимальной скоростью. Пробовал преобразовывать в RGB картинку и выводить с помощью SetDIBitsToDevice, но получается медленно. Преобразования тормозят вывод. Может кто поможет? Автор вопроса: Alex Tychinin Ответ ожидается по этому адресу Несколько раз спрашивал в ФИДО, но из ответов так и не понял, можно ли в форме VB сделать выделение меток перед полями ввода пунктирными линиями как в большинстве программ Windows (по клавише TAB). Можно ли это сделать в VB? Автор вопроса: Olya Ответ ожидается по этому адресу Внедряю .xls в Access (использую OLE). Сразу открывается этот файл. Каким образом заставить минимизироваться приложение Excel и как мне закрыть файл .xls или Excel. Перепробовала все команды из help'а, но они игнорируются. Помогите!!! Автор вопроса: Артём Ответ ожидается по этому адресу Как сделать панель как в MS Office или вроде виндоусной панели задач(той что с ПУСКом), чтобы за неё не прятались значки с рабочего стола, а отодвигались(как если переместить панель задач к другому краю). Автор вопроса: руслан Ответ ожидается по этому адресу Можно ли создать программу в VB такого рода: переводчик промт переводит word(овский) файл с русского на французский например,и копирует его обратно в word. Автор вопроса: Vint Ответ ожидается по этому адресу Хочу ия VB связываться с ORACLE. Говорят существует библиотека. Ни у кого нет? Очень нужно! ПЛЗ! Ответы: Нет ответов. Можете заполнить эту форму, либо отослать вопрос СЮДА Форма для добавления нового вопроса в этот раздел. Информация отсылается по E-mail владельцу сайта. наверх |
Выпуск подготовили: | Сурменок Павел и Шатрыкин Иван |