VBNet
VBMania
Голосование: Ваш голос отсылается по E-mail владельцу сайта, после чего голоса анализируются и на отдельной странице выводятся результаты. Нет тем. Доска почёта: Sergey Y. Tkachev Кононенко Роман Kirill Ссылки: |
Господа!!! читайте MSDN!!! Несколько слов от автора:
Новый выпуск!
Читайте! Содержание выпуска
Книги
Остальные книги о VB можно найти здесь. наверх Как сэмулировать блокировку клавиатуры Данный пример не блокирует клавиатуру, а всего лишь не разрешает печатать в текстовых полях, возвращая при нажатии на любую клавишу нулевой символ. Добавьте на форму CommandButton и TextBox.
При однократном нажатии на кнопку, попытайтесь
набрать какой-либо текст. Нажмите второй раз,
попробуйте…
Как определить, какая клавиша нажата? 'Вариант 1 'Добавьте 1 Label Option Explicit Dim iKeyCode As Integer 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 Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) iKeyCode = KeyCode Label1.Caption = "Код нажатой клавиши: " & iKeyCode If iKeyCode = 112 Then 'нажата клавиша F1 'Здесь вы можете вставить любую процедуру End If End Sub 'Вариант 2 'Достаточно простой проект, который покажет вам, какие клавиши вы нажимаете Dim temp As String Private Sub Form_KeyPress(KeyAscii As Integer) Dim kascci kascci = Chr(KeyAscii) temp = "Key Ascii = " + Str(KeyAscii) + " = " + " Char = " + kascci If KeyAscii = 13 Then 'нажимая <Enter>, вы очистите форму Form1.Cls Else Print temp 'печать KeyAscii и саму букву на форме End If End Sub Private Sub Form_Load() Form1.FontSize = 12 End Sub наверх Как сэмулировать нажатия определенных клавиш Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long) 'bVk - Виртуальный код клавиши для имитации нажатия и отпускания клавиши. 'bScan - Зарезервировано -- установлено в 0. 'dwFlags - Комбинация следующих флагов определяет различные способы имитации: 'KEYEVENTF_EXTENDEDKEY - Префикс скэн-кода с префиксным байтом, имеющим значение &HE0. 'KEYEVENTF_KEYUP - Клавиша, указанная в bVk будет отпущена. Если этот флажок не определен, клавиша будет нажата. 'dwExtraInfo - Дополнительное 32-разрядное значение, связанное с событием клавиатуры. Const KEYEVENTF_KEYUP = &H2 'событие отпускания клавиши Const VK_ADD = &H6B 'клавиша + Const VK_CONTROL = &H11 'клавиша Ctrl Const VK_TAB = &H9 'клавиша Tab Const VK_MENU = &H12 'клавиша Alt Const VK_ESCAPE = &H1B 'клавиша Escape Const VK_LWIN = &H5B 'левая клавиша, эмулирующая нажатие кнопки ПУСК Private Sub ShowStartMenu() 'Функция эмулирует нажатие Ctrl + Esc Call keybd_event(VK_CONTROL, 0, 0, 0) 'Hажимаем Ctrl Call keybd_event(VK_ESCAPE, 0, 0, 0) 'Hажимаем Esc Call keybd_event(VK_ESCAPE, 0, KEYEVENTF_KEYUP, 0) 'Отпускаем Esc Call keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0) 'Отпускаем Ctrl End Sub Private Sub Command1_Click() ShowStartMenu End Sub 'эмуляция нажатия клавиши Alt Private Const VK_ADD = &H6B Одновременное нажатие нескольких клавиш Данный пример позволяет определить, какие клавиши пользователь нажал одновременно. Данный пример идеально применим при создании игрушек, когда необходимо пользоваться клавишами управления (4 серые клавиши со стрелками). Добавьте на форму 5 элементов Label
Получить скорость повтора ввода символов Данную опцию вы можете настроить непосредственно в ПанелиУправления/Клавиатура. Установите бегунок "Скорость повтора" в нужное положение. Следующий пример покажет, как определить числовое значение установленной опции: 31 соответствует наибольшему значению скорости повтора, 0 - наименьшему. Const SPI_GETKEYBOARDSPEED = 10 Private Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" _ (ByVal uAction As Long, ByVal uParam As Long, lpvParam As Any, ByVal fuWinIni As Long) As Long Private Sub Form_Load() Dim r As Long q = SystemParametersInfo(SPI_GETKEYBOARDSPEED, 0, r, 0) MsgBox "Скорость повтора = " & r & " символ в секунду" End Sub наверх Требовать подтверждения при выходе из программы Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) Dim Answer As Integer Answer = MsgBox("Действительно хотите выйти ?", vbQuestion + vbYesNo, "Confirmation") If Answer = vbNo Then Cancel = -1 End Sub наверх Мои программы BalloonMessage for MS Agent BalloonMessage for Microsoft Agent реализует диалог программы с
пользователем, используя при этом технологию Microsoft Agent. OCX реализует три
типа диалоговых окон: InputBox, MsgBox и MsgLabels. Автор: Шатрыкин Иван. Соавтор: Павел Сурменок. наверх Вопрос/Ответ Здесь Вы можете задать вопрос, или ответить на уже имеющиеся вопросы. Вопросы:Автор вопроса: afb Ответ ожидается по этому адресу Подскажите кто-нибудь как сделать программу покаяывающую время пребывания в Inet, скорость качания. Автор вопроса: Александр Зуев Ответ ожидается по этому адресу Кто нибудь работал из VB6 с API функциями ActiveSynca, или писал прогу для работы с КПК "Кассиопея"? Автор вопроса: Щербаков Владимир Ответ ожидается по этому адресу Как обрабатывать (находить слово,читать,удалять,добавлять итд) содержимое текстового окна текстовой программы, например WordPad с помощью API в Visual Basic. У меня есть текст в WordPad. Надо: 1. Беру первое слово в тексте 2. Копирую в буфер обмена 3. Жду появления окна другой(не важно какой) проги. 4. Как только появилось ввожу слово из буфера ОБРАТНО в тоже место в WordPad. 5. Беру следующее слово ... и так весть текст надо мне обработать. Как выполнить первый пункт с помощью API функций? Автор вопроса: Дмитрий Слащёв Ответ ожидается по этому адресу Как польяоватся UDP протоколом (Winsock) при сабклассировании ? Автор вопроса: ]CBK[CRaSH Ответ ожидается по этому адресу Люди кто знает как юзать GLXCTL.OCX буду рад любой инве Автор вопроса: Vladimir Ответ ожидается по этому адресу На форме имеется картинка PictureBox-большой во весь экран, а на этой картинке находятся другие (маленького раямера) PictureBox, Label. На экране монитора видно PictureBox-большой а, поверх PictureBox-маленькие и Label. При переходе на принтер PictureBox-маленькие и Label не печатаетcz поверх основной картинки. Как исправить положение? Автор вопроса: Сергей Гаан Ответ ожидается по этому адресу Подскажите, кто знает, как можно на VB вывести звук в телефонную линию через модем, например какой-нибудь wav. Модем не голосовой, USB. Автор вопроса: Silonov Ответ ожидается по этому адресу У меня несколько вопросов :) 1)Kak проиграть MP3 фаил из файла рксурсов? 2)Можно ли в VB6 создать фаил с разрешением VXD, если да то как? 3)У кого-нибудь есть конвектатор из WAV в MID или из MP3 в MID, если есть, то скинте этот фаил на e-mail(если он не больше 2MB)? 4)Как можно дописать пару строк в фаил Msdos.sys из VB? :) Автор вопроса: shadow Ответ ожидается по этому адресу 1 как организовать сокет с помощью АПИ - мне требуется только прием-передача текстовых строк в сеть (локальная сеть)? 2 можно ли сделать в комбобоксе горизонтальный скролбар? 3 как при отсылке сообщения в сеть подменить свой IP на любой другой Автор вопроса: Костик Ответ ожидается по этому адресу Как сохранить List-ы ия 9 Listbox-ов в один файл (например в Aaa.zzz) и яатем ия этого же файла их яагруяить в те же Listbox-ы? Автор вопроса: Виктор Ответ ожидается по этому адресу Перенеся макросы с англ версии Excel (4.0) в русскую (2002) получил, что не распознаются функции if,and,or,sum и т.п. Нигде не нашел другого способа как только программный поиск и замена. Причем если делать ручками (через F3) функции меняются корректно, а если программно (Ctlls.Replace...), то №получаем #Имя, и лечиться опять же или ручками (надо войти в ячекц по F2, и просто выйти Enter'ом) или программно (Cells(i,j).FormatLocal=Cells(i,j).FormatLocal). Файлов очень много и они достаточно большие (обработка 16 файлов заняло ночь (PIV,384M). Осталдось еще пара сотен файлов, поэтому вопрос: КАК заставить Excel корректно преобразовать его англоязычные макрокоманды в рускоязычные? КАК можно оптимизировать прогу, чтобы она обрабатывала за ночь хотя бы 100 файлов? Тест проги:Dim i As Integer ' Dim k As Integer Dim w As Workbooks i = 1 For k = 1 To Workbooks.Count Debug.Print Workbooks(k).Name If Workbooks(k).Name = "Книга1.xls" Then GoTo ppp Workbooks(k).Activate With Workbooks("Книга1.xls").Sheets("Лист1") For i = 1 To 12 Cells.Replace What:=.Range("A" & i).Value, Replacement:=.Range("B" & i).Value, LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False Y: Next i End With Dim j As Integer:Dim P As Integer For j = 1 To 100 For i = 1 To 700 If Cells(i, j).FormulaLocal = "" Then P = P + 1 Else P = 0 If P >= 30 Then GoTo qw 'если 30 подряд пустых записей то считаем что записи в колонке кончились и идем к другой On Error Resume Next Cells(i, j).FormulaLocal = Cells(i, j).FormulaLocal Next i qw: P = 0 Next j Workbooks(k).Close SaveChanges:=True ppp: Next k Автор вопроса: Vitaly Ответ ожидается по этому адресу Где можно в интернете найти более менее полную документацию по VBScript и Windows Scripting Host ? Автор вопроса: Павел Ответ ожидается по этому адресу У меня есть три вопроса: первый, как можно определить, когда крутят колесико мышки, желательно для WinXP; второй, можно ли избавиться от файла MSVBVM60.DLL и последнее кто-нибудь скажите, чем отличается VisualBASIC 7.0 NET от других версий. Автор вопроса: Paul Ответ ожидается по этому адресу Как "прописать" программу в автозагрузку, а затем удалить её( нужно запустить программу один раз при запуске)? Ответы: Вопрос: Компиляцию проекта делал прогр. Packege_&_Deployment_Wizard. При инсталяции выдаются ошибки. 1. Section: Setyp 1 Files @ name.exe/ $(ProgramFile) ...и т.д. 2. Section: Bootstrap Files @ VB6STKIT.DLL. $(WinSysPathSysFile) ...и т.д. Что делать как этого иябежать. Ответ: Автор ответа: Андрей Проблема скорре всего в некорректном формате даты в записях файла setup.lst Например: Неправильный формат: File1=@VB6STKIT.DLL,$(WinSysPathSysFile),,,10.31.00 12:57:42 PM,102912,6/0/81/69 Правильный: File1=@VB6STKIT.DLL,$(WinSysPathSysFile),,,10/31/00 12:57:42 PM,102912,6/0/81/69 Зависит от региональных установок символа разделителя в дате. В крайнем случае можно корректировать сам файл setup.lst после генерации дистрибутива. Вопрос: Сделал на VB6 active-x dll которая публикует в системе свой объект для доступа к базам данных из ASP-страниц. На Win98 всё было нормально. При попытке использовать эту dll на Win2000-машине происходит полный облом. (при вызове <% Set s = CreateObject("AUDBC.dbConnection") %>). Хотя инсталяшка сделанная в VB6 на моей Win98 весит довольно много и включает практически всё что нужно. Может VB6 и NT малосовместимы. Что делать? Ответ: Автор ответа: Шатрыкин Иван Могу предположить, что дело в правах на доступ к некоторым объектам. У меня, обычно, в NT работают DLL. Вообще же, больших проблемм с работой в NT быть не должно. Хотя некоторые функции API в NT и 9x действительно сильно различаются. Может быть, если ты используешь API, то неправильно вызываешь нужные функции. В любом случае на 90% это твоя проблема, а не VB. Вопрос: Как создать ярлык на рабочем столе? В 74 выпуске был пример кода, но у меня он не нработает. VB пишет: Ошибка во время выполнения программы '424': Требуемый объект а потом показывает на строку: Set WSHShell = WScript.CreateObject("WScript.Shell") Ответ: Автор ответа: Nechaev Sergey Private Declare Function OSfCreateShellLink Lib "vb6stkit.dll" Alias "fCreateShellLink" (ByVal lpstrFolderName As String, ByVal lpstrLinkName As String, ByVal lpstrLinkPath As String, ByVal lpstrLinkArguments As String, ByVal fPrivate As Long, ByVal sParent As String) As Long Private Sub Form_Load() OSfCreateShellLink "C:\Win\Рабочий стол" & vbNullChar, "Блокнот", "C:\Win\Notepad.exe", "", True, "" End Sub Вопрос: В библиотеке кодов я вяял код программы для открытия\яакрытия CD-Rom . Но она почему-то не работает. Ответ: Автор ответа: sv Я делаю так: Private Declare Function mciSendString Lib "winmm.dll" Alias _ "mciSendStringA" (ByVal lpstrCommand As String, _ ByVal lpstrReturnString As String, ByVal uReturnLength As Long, _ ByVal hwndCallback As Long) As Long Открыть CD: mciSendString "Set CDAudio Door Open Wait", 0, 0, 0 Закрыть CD: mciSendString "Set CDAudio Door Close Wait", 0, 0, 0 Вопрос: В библиотеке кодов я вяял код программы для открытия\яакрытия CD-Rom . Но она почему-то не работает. Ответ: Автор ответа: Nechaev Sergey А если так? Option Explicit Private Declare Function mciExecute Lib "winmm.dll" (ByVal lpstrCommand As String) As Long Private Sub Form_Load() mciExecute "set cdaudio door open" mciExecute "set cdaudio door closed" End Sub Вопрос: VB6. Пишу защиту от копирования, хочу привязать к определенному компу. Или есть какая защита от тиражирования CD? Сомневаюсь раз мы их клепаем. Смысл тот что при продаже сначала прога генерирует ключ из номера, например BIOS заказчика после чего я в инсталятор забиваю проверку. Фиксирую на сидюк и продаю. Пусть пробуют тиражировать. Ответ: Автор ответа: Admin VBNet Хочу тебя немного огорчить. Если ты в программе используешь проверку правильности ключа, то это все можно посмотреть в отладчике. Теперь представь себе, что я списал с CD-ROM твою программу и запустил инсталятор с винчестера. Что будет? В отладчике я увижу ассемблерный код твоей проверки. Если она не очень запутана, то я просто поменяю в exe пару байтов и программа вместо того, чтобы проверять условие на истину, станет работать когда условие ложно. Дальше я пихну твою прогу на CD-ROM и все... фенита ля комедия. Т.е. иными словами, создать защиту от тиражирования на CD-ROM невозможно! Я в свое время хоте забить прямо в программу проверку налогового номера фирмы, купившей программу, и создавать для каждого клиента индивидуальный дистрибутив. Но... меня сразу же поспешили огорчить и подсказали, что данный номер под дизасемблеров виден, как собственное отражение в зеркале ;-) и изменить его - раз плюнуть. Вывод. В мире не существует защиты от копирования, которую невозможно было бы сломать. Другой вопрос в том, действительно ли твоя программа заслуживает тех усилий, которые крэкеры на нее потратят? Вопрос: VB6. Пишу защиту от копирования, хочу привязать к определенному компу. Или есть какая защита от тиражирования CD? Сомневаюсь раз мы их клепаем. Смысл тот что при продаже сначала прога генерирует ключ из номера, например BIOS заказчика после чего я в инсталятор забиваю проверку. Фиксирую на сидюк и продаю. Пусть пробуют тиражировать. Ответ: Автор ответа: Сергей а интересно как ты на сидюк снова запишешь сгенерированный ключ придется прописывать где то или в реестре или в файле. если сидюк скопируют и твою прогу инстальнут на другой комп она так же сгенерит новый ключ и будет работатать или я что то не понимаю Вопрос: Как с помощью ВБ текст ия ЮНИКОДа перевести в обычный, например на русский. Ответ: Автор ответа: P@Ssword Dim Str As String Str = "Проюникоденая строка" Str = StrConv(Str, vbFromUnicode) А обратно - Str = StrConv(Str, vbUnicode) Вопрос: При создании текстового редактора с использованием RichTextBox необходимо сделать 4 кнопки. 1. По левому краю 2. По центру 3. По правому краю 4. По ширине Первые три я делаю без проблем. Не подскажите как сделать четвертую. Ответ: Автор ответа: P@Ssword Ан никак! Это только W0rd так умеет, а посмотри на WordPad, думаешь, если б можно было, там не сделали бы? Можете заполнить эту форму, либо отослать вопрос СЮДА Форма для добавления нового вопроса в этот раздел. Информация отсылается по E-mail владельцу сайта. |
|||||||||||||||
Выпуск подготовили: |
Сурменок Павел |