VBNet
VBMania
Голосование: Голосования сайта VBNet.Ru. Результаты голосований передаются на сайт. Проследите, что есть соединение с интернетом. Доска почёта: Sergey Y. Tkachev Кононенко Роман Kirill Ссылки: |
Господа!!! читайте MSDN!!! Несколько слов от автора:
Новый выпуск рассылки. Раздел Вопрос/Ответ заработал.
Читайте! Содержание выпуска
Книги
Остальные книги о VB можно найти здесь. наверх Форматирование числа при выводе (заполнение до определенной длины) Пример применения функции String Иногда бывает полезно выводить числовую информацию с фиксированным числом знаков, заполняя левые позиции нулями. Для этого можно воспользоваться следующей функцией: Function PadToString(myValue, Digits) As String Сделав, например, такое обращение NewStr = PadToString(1978, 8) вы получите строковую переменную 00001978.
Обратите внимание, что Digits и myValue
— переменные типа Variant.
Захват текста из любого текстового поля Хотелось ли вам захватить текст из текстового поля любого приложения? Данный код поможет вам в решении этой проблемы. Вам необходимо разместить на форме элемент Timer.
Послать строковое сообщение в другую программу Откройте заранее стандартное приложение "Блокнот". В VB-проекте расположите на форме 1 CommandButton. Добавьте следующий код, запустите проект и нажмите на кнопку... Private Sub Command1_Click() AppActivate ("Безымянный") SendKeys ("Привет из VB!!!") End Sub "{Up}" "{TAB}" "{ENTER}" "{End}" "+{Home}" "{Left}" наверх Как определить серийный номер для диска Расположите на форме элемент CommandButton 'ВАРИАНТ 1 Private Declare Function GetVolumeSerialNumber Lib "kernel32" Alias "GetVolumeInformationA" (ByVal lpRootPathName As String, ByVal lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long) As Long Private Function VolumeSerialNumber(ByVal RootPath As String) As String Dim VolLabel As String Dim VolSize As Long Dim Serial As Long Dim MaxLen As Long Dim Flags As Long Dim Name As String Dim NameSize As Long Dim s As String Dim ret as Boolean ret=GetVolumeSerialNumber(RootPath, VolLabel, VolSize, _ Serial, MaxLen, Flags, Name, NameSize) If ret Then 'Create an 8 character string s = Format(Hex(Serial), "00000000") 'Adds the '-' between the first 4 characters and the last 4 characters VolumeSerialNumber = Left(s, 4) + "-" + Right(s, 4) Else 'If the call to API function fails the function returns a zero serial number VolumeSerialNumber = "0000-0000" End If End Function Private Sub Command1_Click() MsgBox VolumeSerialNumber("C:\") 'Shows the serial number of your Hard Disk End Sub 'ВАРИАНТ 2 Private Declare Function GetVolumeInformation Lib "kernel32.dll" Alias "GetVolumeInformationA" (ByVal lpRootPathName As String, ByVal lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Integer, lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long) As Long Function GetSerialNumber(DriveLetter As String) As String Dim SerialNum As Long Dim VolNameBuf As String Dim FileSysNameBuf As String Select Case Len(DriveLetter) Case 1 If LCase(DriveLetter) Like "[a-z]" Then DriveLetter = Left(DriveLetter, 1) & ":\" Else GetSerialNumber = "Error - Bad drive designation" End If Case 2 If LCase(DriveLetter) Like "[a-z]:" Then DriveLetter = DriveLetter & "\" Else GetSerialNumber = "Error - Bad drive designation" End If Case 3 If LCase(DriveLetter) Like "[!a-z]:\" Then GetSerialNumber = "Error - Bad drive designation" End If Case Else GetSerialNumber = "Error - Bad drive designation" End Select If Len(GetSerialNumber) = 0 Then VolNameBuf = String(255, Chr(0)) FileSysNameBuf = String(255, Chr$(0)) GetVolumeInformation DriveLetter, VolNameBuf, Len(VolNameBuf), SerialNum, 0, 0, FileSysNameBuf, Len(FileSysNameBuf) GetSerialNumber = Right("00000000" & Hex(SerialNum), 8) End If End Function Private Sub Command1_Click() MsgBox GetSerialNumber("C:") End Sub наверх Определить количество процессоров в компьютере Option Explicit Private Declare Sub GetSystemInfo Lib "kernel32" (lpSystemInfo As SYSTEM_INFO) Private Type SYSTEM_INFO dwOemID As Long dwPageSize As Long lpMinimumApplicationAddress As Long lpMaximumApplicationAddress As Long dwActiveProcessorMask As Long dwNumberOfProcessors As Long dwProcessorType As Long dwAllocationGranularity As Long dwReserved As Long End Type Private m_typSystemInfo As SYSTEM_INFO Public Function NumberOfProcessors() As Long GetSystemInfo m_typSystemInfo NumberOfProcessors = m_typSystemInfo.dwNumberOfProcessors End Function Private Sub Form_Load() MsgBox NumberOfProcessors End Sub наверх Получить сведений о любом диске: Floppy Disk/CD/Hard Drive Данный пример позволяет определить серийный номер диска, метку диска и тип файловой системы Добавьте CommandButton на форму
Мои программы BalloonMessage for MS Agent BalloonMessage for Microsoft Agent реализует диалог программы с
пользователем, используя при этом технологию Microsoft Agent. OCX реализует три
типа диалоговых окон: InputBox, MsgBox и MsgLabels. Автора: Шатрыкин Иван и Павел Сурменок. наверх Вопрос/Ответ Здесь Вы можете задать вопрос, или ответить на уже имеющиеся вопросы. Вопросы:Автор вопроса: Саша Ответ ожидается по этому адресу Как exe программе под дос можно снять и установить флажок "Завершать окно по яавершению работы" Автор вопроса: Саша Ответ ожидается по этому адресу вопрос по RichTextBox Как яделать так, что бы когда нажимали на Shift+Insert вставка была неформатированная т.е. просто текст Автор вопроса: Саша Ответ ожидается по этому адресу Как уянать реальную скорость яакачки файлов. Автор вопроса: Саша Ответ ожидается по этому адресу Как текст набранный, на пример, в RichTextBox сохранить в фомате *.doc (имеется в виду Microsoft Word) Автор вопроса: kav Ответ ожидается по этому адресу Каким образом можно из VB получать и обрабатывать системные события Windows ! Например, читать клавиатуру. Автор вопроса: karty Ответ ожидается по этому адресу Как при перетаскивании объекта в TREEVIEW, главная ветка раскрывалась бы автоматически. Автор вопроса: karty Ответ ожидается по этому адресу Как при работе с DAO новую запись в таблицу добавить не в конец таблицы, а в нужное мне место. Автор вопроса: Роман Ответ ожидается по этому адресу Как можно с помощью VB наложить пароль на папку? Автор вопроса: Алексей Ответ ожидается по этому адресу Как в VB яавершить работу приложения Windows? Ответы: Вопрос: Подскажите пожалуйсто как сделать так что при наведении курсора на кнопку, она убегала в абсолютное безразличное место? Ответ: Автор ответа: Murat Shonov Событием Mouse_Move Создаешь форму и пихаешь на нее кнопку затем пишешь следующий код Private Sub Command1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Randomize Timer 'это функция псевдослучайных чисел для того чтоб кнопка прыгала каждый раз куда попало Command1.Top = Rnd(1) * 1000 'эту тысячу меняешь на свои значения в зависимости от размера формы (желательно ставить не больше значений Form.Widht и Form.Height не то она убежит за форму) Command1.Left = Rnd(1) * 1000 'эту тоже (rnd - псевдослучайный генератор чисел) End Sub Вопрос: Подскажите пожалуйсто как сделать так что при наведении курсора на кнопку, она убегала в абсолютное безразличное место? Ответ: Автор ответа: mikl Попробуй написать такую процедуру при наведении на кнопку указателя мыши(Command2_MouseMove) Вместо 4000 и 5700 подбирай исходя из рамеров формы. Эти для формы размером Top = 7290, а Left = 4935. Private Sub Form_Load() Randomize End Sub Private Sub Command2_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Command2.Top = Int(Rnd * 4000) 'делаем чтобы кнопка убегала от мышки Command2.Left = Int(Rnd * 5700) End Sub Вопрос: Подскажите пожалуйсто как сделать так что при наведении курсора на кнопку, она убегала в абсолютное безразличное место? Ответ: Автор ответа: RaZoom Private Sub btn1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) 'Form1 - форма на которой находится кнопка 'btn1 - "бегающая" кнопка With btn1 'Если не в курсе, будет подставлять btn1 там, где объект не указан явно maxX& = Form1.Width - .Width maxy& = Form1.Height - .Width .Left = Rnd * maxX .Top = Rnd * maxy End With End Sub Вопрос: Подскажите пожалуйсто как сделать так что при наведении курсора на кнопку, она убегала в абсолютное безразличное место? Ответ: Автор ответа: Tibor примерно ето будет выглядеть так: Private Sub Command1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Command1.Move Rnd((Form1.Width - Command1.Width)), _ Rnd((Form1.Height - Command1.Height)) 'размеры кнопки вычитаем, чтоб за края не забигала End Sub вот собственно и всё. Вопрос: Подскажите пожалуйсто как сделать так что при наведении курсора на кнопку, она убегала в абсолютное безразличное место? Ответ: Автор ответа: Артём Кривокрисенко Очень просто: Sub CommandButton1_mouseover(тут аргументы) CommandButton1.move Int(RND*1000)-500, Int(RND*1000)-500 End Sub Если хочешь, после CommandButton1.move пиши конкретные значения (у меня просто генерируется произвольное число) Вопрос: Подскажите пожалуйста как сделать так: когда нажимаешь на .exe файл он сам определял полный адрес папки, в которой он находится. Ответ: Автор ответа: Rutshtein Akex Используй App.Path Вопрос: Подскажите пожалуйста как сделать так: когда нажимаешь на .exe файл он сам определял полный адрес папки, в которой он находится. Ответ: Автор ответа: Tibor Ещо раз повтаряю для всех! Будте внимательны и тыркайте везде. Не ленитесь! В VB5-6 (про NET не знаю) есть библиотека, в которой хоть и кратко но описываются все её функции. Также описание функций и событий подключеных к проекту объектов. Тыркаеш F2 и оно выскакивает. А на вопрос отвечу: App.Path Вопрос: Подскажите пожалуйста как сделать так: когда нажимаешь на .exe файл он сам определял полный адрес папки, в которой он находится. Ответ: Автор ответа: RaZoom 'Все объявления могут быть Public, но тогда их надо поместить в модуль Private Declare Function GetModuleHandle Lib "kernel32" Alias "GetModuleHandleA" _ (ByVal lpModuleName As String) As Long Private Declare Function GetModuleFileName Lib "kernel32" Alias "GetModuleFileNameA" _ (ByVal hModule As Long, ByVal lpFileName As String, ByVal nSize As Long) As Long Private hModule As Long, strBuff$ Private Sub Form_Load() 'определяем дескриптор нашего приложения hModule& = GetModuleHandle(App.EXEName) 'Создаем буфер длиной = (предполагаемое число символов)+1 strBuff$ = Space(101) 'Функция GetModuleFileName возвращает полный путь к исполняемому файлу в strBuff 'и количество считанных символов, но, так как требуется только путь, мы обрезаем '"лишние символы". "-4" во втором параметре функции Left$ необходимо, так как 'App.EXEName возвращает имя модуля без точки и расширения. Вообще более корректно 'было бы определить положение последнего слеша в строке и обрезать все, что после 'него, но так как расширений исполняемых файлов длиной более 3 символов я не видел, 'то и поступил по-простому. strBuff$ = Left$(strBuff$, GetModuleFileName(hModule&, strBuff, 100) - Len(App.EXEName) - 4) 'В strBuff$ путь к нашему файлу с завершающим слешем End Sub Вопрос: Подскажите пожалуйста как сделать так: когда нажимаешь на .exe файл он сам определял полный адрес папки, в которой он находится. Ответ: Автор ответа: Mind Engine Хиииии, app.path тебя спасет! :) Вопрос: Подскажите пожалуйста как сделать так: когда нажимаешь на .exe файл он сам определял полный адрес папки, в которой он находится. Ответ: Автор ответа: Артём Кривокрисенко Если я правильно понял, нужно определить, в какой папке находится исполняемый файл: Path=App.Path NB! путь возвращается без имени файла и без последнего слэша (Например, "C:\Projects\Soft"). Чтоб добавить слеш, пиши: Path=App.Path & "\" Вопрос: Подскажите пожалуйста как сделать так: когда нажимаешь на .exe файл он сам определял полный адрес папки, в которой он находится. Ответ: Автор ответа: ViTal Используй App.Path Вопрос: Как сделать автозапуск с 3.5 диска (дискеты)? Ответ: Автор ответа: Артём Кривокрисенко Насколько мне известно, это сделать никак невозможно (дисковод не определяет дискеты автоматически). Вопрос: Работаю в VBA, как полученные данные сунуть в ячейки Excel 2002, а потом вынуть. Пришлите пример на мылои плия. Желательно в коде VBA. Ответ: Автор ответа: Zoubar Serguey Запись числа 100 в 1-ю ячейку 1-го рабочего листа: worksheets(1).cells(1,1).value = 100 Или, используя объект Range: worksheets("Лист1").range("D1").value = 100 (для текущего листа worksheets можно пропустить) Можно также использовать поименованный диапазон ячеек: range("ИмяДиапазона").cells(5).value = 100 Аналогично производится считывание данных из ячеек Excel: Try = worksheets(1).cells(1,1).value и т. п. Вопрос: Прочитал, как можно заставить модем перезванивать при низкой скорости. У меня же все полностью противоположно. Мне надо, чтобы модем коннектился только на 31200. Если больше, то связь очень плохая (такая, что за 10мин можно не получить не байта), а меньше смысла нет. Ответ: Автор ответа: -=CBK=-CRaSH Добавь в строку инициализации модема Её можешь найти в свойсвах модема AT+MS=v34,0,75,33600,75,33600 Всё Вопрос: Как сделать всплывающую подсказку (ToolTipText)в 2 и более строк? Ответ: Автор ответа: Mind Engine Ха, а вроде никак... vbCrLf и прочее на нем не срабатывает, да и вообще, где ты видел двухэтажный ToolTipText? Вопрос: Как скопировать из папки все файлы одного расширения? Ответ: Автор ответа: Nechaev Sergey Кинь на форму FileListBox имя стандартное. Копирует все sys файлы (кроме системных и скрытытх) из корня в C:\Check. Если Check не создана - ошибка. Private Sub Form_Load() With File1 .Pattern = "*.sys" .Path = "C:\" For q = 0 To .ListCount - 1 FileCopy .Path & .List(q), "C:\Check\" & .List(q) Next q End With End Sub Вопрос: Есть такая проблема. Работаю с DirectX весь код пишу сам, никакими контролами не пользуюсь. Ставлю простой кубик и двигаю его программно, если он подвигается очень близко к позиции камеры, тоесть к экрану, начинает жутко тормозить 1fps. В играх же целый уровень нетормозит. Подскажите что делать. И если кто нибудь знает где взять описание этих функций, желательно с примерами. Ответ: Автор ответа: Dr.Max Может тебе нужно оптимизтировать код? Исползуй переменные по-быстрей - старайся не использовать Variant, если ты объявляешь переменные так: Dim A,B,C as integer , то знай: A и B - это variant, И только С integer!! И проверь, может в коде много циклов. Вопрос: Есть такая проблема. Работаю с DirectX весь код пишу сам, никакими контролами не пользуюсь. Ставлю простой кубик и двигаю его программно, если он подвигается очень близко к позиции камеры, тоесть к экрану, начинает жутко тормозить 1fps. В играх же целый уровень нетормозит. Подскажите что делать. И если кто нибудь знает где взять описание этих функций, желательно с примерами. Ответ: Автор ответа: -=CBK=-CRaSH Блин у меня такое же горе. А все из-за тупого компилятора ВБ. Если дядюшка Си работает сам по себе и в десять раз быстрее, то VB постоянно опирается на свои подпорки - Runtime-библиотеки, с помощью которых он, собственно говоря и работает. Поможет тебе только переход на Си. Вопрос: При записи информации в файл (методом Put) выводится сообщение "Неправильная длина строки" (если объём информации большой). Что делать? (И кто виноват? :) Ответ: Автор ответа: VADIM SHER Option Explicit Public NameUser As String #If Win32 Then Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long Declare Function GetComputerName Lib "kernel32.dll" Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long Declare Function GetLastError Lib "kernel32.lib" () As Long Public Const UNLEN = 256 ' as defined in LMCONS.H Public Const MAX_COMPUTERNAME_LENGTH = 31 ' as defined in WINBASE.H #Else #End If Function UserName() Dim intPos As Integer Dim un As String, lpBuffer As String, nSize As Long lpBuffer = "..............................." nSize = 30 un = GetUserName(lpBuffer, nSize) un = lpBuffer intPos = InStr(un, ".") NameUser = Left(un, intPos - 1) End Function Можете заполнить эту форму, либо отослать вопрос СЮДА Форма для добавления нового вопроса в этот раздел. Информация отсылается по E-mail владельцу сайта. |
|||||||||||||||
Выпуск подготовили: |
Сурменок Павел |