Visual Basic: новости сайтов, советы, примеры кодов.
Выпуск 85.


VBNet VBMania
Голосование:

Ваш голос отсылается по E-mail владельцу сайта, после чего голоса анализируются и на отдельной странице выводятся результаты.

Нет тем.

Рассылки Subscribe.Ru
Мир программирования на Visual BASIC 5.0 и HTML.
Новости сайта IgorykSoft и советы по программированию
Visual Basic.NET Уроки.

Доска почёта:

Sergey Y. Tkachev
Кононенко Роман
Kirill

Ссылки:

  • Улицы VB
  • Использование VB
  • Азбука VB
  • VB на русском
  • Улицы VB
  • Кирпичики VB
  • CообЧа VB
  • Snoozex Design
  • IgorykSoft
  • Господа!!! читайте MSDN!!!

    Несколько слов от автора:

       Новый выпуск!
    Читайте!


    Содержание выпуска




    Книги

    Переход на VB .NET. Стратегии, концепции, код (цена ~ 158 руб.)

    Эта книга была задумана как одна из первых книг о .NET, которая ознакомит читателя с основными идеями новой архитектуры и подготовит его к знакомству с более детальной литературой, например документацией Microsoft и ее толкованиями, которая неизбежно появится на рынке. Она поможет вам взглянуть на эту технологию с позиций ваших собственных рабочих планов и быстро освоить те концепции, которые покажутся необычными для большинства прогр...

    Автор(ы): Дан Эпплман, Издательство: Питер, 2002 г.


    Программирование на VB.NET. Учебный курс (цена ~ 119 руб.)

    Эта книга является вводным курсом по изучению языка программирования Visual Basic .NET. Даны основные принципы объектно-ориентированного программирования в контексте языка VB .NET, поскольку без хорошей подготовки в этой области невозможно в полной мере пользоваться всеми преимуществами VB .NET.
    Изложены азы всех аспектов языка, которыми должен владеть любой профессиональный разработчик VB .NET

    Автор(ы): Г. Корнелл, Дж. Моррисон, Издательство: Питер, 2002 г.


    VB.NET для разработчиков (цена ~ 125 руб.)

    Основная задача книги - быстро ознакомить разработчиков Visual Basic с изменениями в .NET Framework. Программисты, использующие Java, C++, Delphi или другие инструменты разработки приложений и интересующиеся Visual Basic или технологией .NET Framework, также найдут эту книгу полезной. Хотя книга посвящена Visual Basic.NET, ее основная цель - продемонстрировать взаимодействие Visual Basic и ...

    Автор(ы): Кит Франклин, Издательство: Вильямс, 2002 г.




    Остальные книги о VB можно найти
    здесь.

    наверх


    Как сэмулировать блокировку клавиатуры

    Данный пример не блокирует клавиатуру, а всего лишь не разрешает печатать в текстовых полях, возвращая при нажатии на любую клавишу нулевой символ.

    Добавьте на форму CommandButton и TextBox. При однократном нажатии на кнопку, попытайтесь набрать какой-либо текст. Нажмите второй раз, попробуйте…

    Dim FlagKeyb As Boolean

    Private Sub Command1_Click()
    FlagKeyb = Not FlagKeyb
    If FlagKeyb Then
    Command1.Caption = "Отключить"
    Else
    Command1.Caption = "Включить"
    End If
    Text1.SetFocus
    End Sub

    Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    If FlagKeyb Then
    Else
    KeyCode = 0
    End If
    End Sub
    Private Sub Form_KeyPress(KeyAscii As Integer)
    If FlagKeyb Then
    Else
    KeyAscii = 0
    End If
    End Sub
    Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
    If FlagKeyb Then
    Else
    KeyCode = 0
    End If
    End Sub

    Private Sub Form_Load()
    FlagKeyb = True
    Command1.Caption = "Отключить"
    End Sub

    наверх


    Как определить, какая клавиша нажата?

    'Вариант 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
    Call keybd_event(VK_ADD, 0, 0, 0)
    Call keybd_event(VK_ADD, 0, KEYEVENTF_KEYUP, 0)
    'эмуляция нажатия левой кнопки с логотипом Windows
    Call keybd_event(VK_LWIN, 0, 0, 0)
    Call keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP, 0)
    'Запустить проводник
    Call keybd_event(VK_LWIN, 0, 0, 0)
    Call keybd_event(69, 0, 0, 0)
    Call keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP, 0)
    'поиск файла
    'Call keybd_event(VK_LWIN, 0, 0, 0)
    'Call keybd_event(70, 0, 0, 0)
    'Call keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP, 0)


    Private Const VK_ADD = &H6B
    Private Const VK_ATTN = &HF6
    Private Const VK_BACK = &H8
    Private Const VK_CANCEL = &H3
    Private Const VK_CAPITAL = &H14
    Private Const VK_CLEAR = &HC
    Private Const VK_CONTROL = &H11
    Private Const VK_CRSEL = &HF7
    Private Const VK_DECIMAL = &H6E
    Private Const VK_DELETE = &H2E
    Private Const VK_DIVIDE = &H6F
    Private Const VK_DOWN = &H28
    Private Const VK_END = &H23
    Private Const VK_EREOF = &HF9
    Private Const VK_ESCAPE = &H1B
    Private Const VK_EXECUTE = &H2B
    Private Const VK_EXSEL = &HF8
    Private Const VK_F1 = &H70
    Private Const VK_F10 = &H79
    Private Const VK_F11 = &H7A
    Private Const VK_F12 = &H7B
    Private Const VK_F13 = &H7C
    Private Const VK_F14 = &H7D
    Private Const VK_F15 = &H7E
    Private Const VK_F16 = &H7F
    Private Const VK_F17 = &H80
    Private Const VK_F18 = &H81
    Private Const VK_F19 = &H82
    Private Const VK_F2 = &H71
    Private Const VK_F20 = &H83
    Private Const VK_F21 = &H84
    Private Const VK_F22 = &H85
    Private Const VK_F23 = &H86
    Private Const VK_F24 = &H87
    Private Const VK_F3 = &H72
    Private Const VK_F4 = &H73
    Private Const VK_F5 = &H74
    Private Const VK_F6 = &H75
    Private Const VK_F7 = &H76
    Private Const VK_F8 = &H77
    Private Const VK_F9 = &H78
    Private Const VK_HELP = &H2F
    Private Const VK_HOME = &H24
    Private Const VK_INSERT = &H2D
    Private Const VK_LBUTTON = &H1
    Private Const VK_LCONTROL = &HA2
    Private Const VK_LEFT = &H25
    Private Const VK_LMENU = &HA4
    Private Const VK_LSHIFT = &HA0
    Private Const VK_MBUTTON = &H4 ' NOT contiguous with L RBUTTON
    Private Const VK_MENU = &H12
    Private Const VK_MULTIPLY = &H6A
    Private Const VK_NEXT = &H22
    Private Const VK_NONAME = &HFC
    Private Const VK_NUMLOCK = &H90
    Private Const VK_NUMPAD0 = &H60
    Private Const VK_NUMPAD1 = &H61
    Private Const VK_NUMPAD2 = &H62
    Private Const VK_NUMPAD3 = &H63
    Private Const VK_NUMPAD4 = &H64
    Private Const VK_NUMPAD5 = &H65
    Private Const VK_NUMPAD6 = &H66
    Private Const VK_NUMPAD7 = &H67
    Private Const VK_NUMPAD8 = &H68
    Private Const VK_NUMPAD9 = &H69
    Private Const VK_OEM_CLEAR = &HFE
    Private Const VK_PA1 = &HFD
    Private Const VK_PAUSE = &H13
    Private Const VK_PLAY = &HFA
    Private Const VK_PRINT = &H2A
    Private Const VK_PRIOR = &H21
    Private Const VK_PROCESSKEY = &HE5
    Private Const VK_RBUTTON = &H2
    Private Const VK_RCONTROL = &HA3
    Private Const VK_RETURN = &HD
    Private Const VK_RIGHT = &H27
    Private Const VK_RMENU = &HA5
    Private Const VK_RSHIFT = &HA1
    Private Const VK_SCROLL = &H91
    Private Const VK_SELECT = &H29
    Private Const VK_SEPARATOR = &H6C
    Private Const VK_SHIFT = &H10
    Private Const VK_SNAPSHOT = &H2C
    Private Const VK_SPACE = &H20
    Private Const VK_SUBTRACT = &H6D
    Private Const VK_TAB = &H9
    Private Const VK_UP = &H26
    Private Const VK_ZOOM = &HFB

    наверх


    Одновременное нажатие нескольких клавиш

    Данный пример позволяет определить, какие клавиши пользователь нажал одновременно. Данный пример идеально применим при создании игрушек, когда необходимо пользоваться клавишами управления (4 серые клавиши со стрелками).

    Добавьте на форму 5 элементов Label

    'Массив currectKeys содержит в себе все нажатые клавиши
    'Для примера, если нажата клавиша ПРОБЕЛ, элемент массива currentKeys(32) = True
    '(потому что keyCode клавиши равен 32), а все остальные клавиши = False.
    Dim currentKeys(0 To 250) As Boolean
    Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    'При нажатии на клавишу запускается событие KeyDown снова и снова.
    'Идет проверка: нажата клавиша только что клавиша уже нажата
    If currentKeys(KeyCode) = False Then
    'Обновить массив, если клавиша нажата
    currentKeys(KeyCode) = True
    If KeyCode = vbKeyLeft Then Label1 = "Left"
    If KeyCode = vbKeyRight Then Label2 = "Right"
    If KeyCode = vbKeyUp Then Label3 = "Up"
    If KeyCode = vbKeyDown Then Label4 = "Down"
    If KeyCode = vbKeySpace Then Label5 = "Fire"
    End If
    End Sub
    Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
    'Обновить массив, когда клавиша отжата
    currentKeys(KeyCode) = False
    If KeyCode = vbKeyLeft Then Label1 = ""
    If KeyCode = vbKeyRight Then Label2 = ""
    If KeyCode = vbKeyUp Then Label3 = ""
    If KeyCode = vbKeyDown Then Label4 = ""
    If KeyCode = vbKeySpace Then Label5 = ""
    End Sub
    Private Sub Form_Load()
    'Обнулить значения элементов Label
    Label1 = ""
    Label2 = ""
    Label3 = ""
    Label4 = ""
    Label5 = ""
    End Sub

    наверх


    Получить скорость повтора ввода символов

    Данную опцию вы можете настроить непосредственно в ПанелиУправления/Клавиатура. Установите бегунок "Скорость повтора" в нужное положение. Следующий пример покажет, как определить числовое значение установленной опции: 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 владельцу сайта.
    Текст сообщения:
    Ваше имя
    E-mail для ответа

    наверх


    Выпуск подготовили:

    Сурменок Павел