VB-Forever #3
Вступление
Статьи

WinApi
 Окна и манипуляторы ver 3.0 Теория
 Окна и манипуляторы ver 3.0 Практика

Реестр
 Работа с реестром средствами VB
 Работа с реестром средствами WinAPI
 Извлекаем пользу из реестра

Примеры
Примеры к статьям
 Hack - вскрытие звёздочек
 Undo - кнопка отмена в TextBox-е
 FileType - ассоциация файла с приложением
 Autostart - программа в Автозагрузке
Другие примеры
 MouseMeter - пробег мыши
 ImgViewer - просмотр графических файлов
Для VB-Кодера
Ё-mail
 FAQ
Юмор
 Месть (сказка народов тундры)
 Хроники лаборатории: дератизация
Стань автором
 Как стать автором
Информация
 Условия использования и распротранения
 
Окна и манипуляторы ver. 3.0 Практика

Автор: Хованский Ян
Источник: http://yansoft.nm.ru

Вы уже прочитали теоретическую часть, а сейчас перейдём к конкретным примерам:

Пример №1: Отмена последнего действия в тестовом поле

Для начала рассмотрим простейший пример, сделаем отмену (Undo) последнего действия в текстовом поле:

1. Создайте новый проект
2. На созданную вместе с проектом форму добавьте Кнопку (cmdUndo) и Текстовое Поле (txtUndo)
3. После перечисленных выше действий форма должна выглядеть примерно так:


4. Добавьте в модуль формы следующий код:


'Функция посылает окну сообщение
Private Declare Function SendMessage Lib "user32" _
Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, _
ByVal wParam As Long, lParam As Any) As Long
'Идентификатор сообщения, отменяющего последнюю операцию редактирования
Private Const EM_UNDO = &HC7


Private Sub cmdUndo_Click()
     'Посылаем сообщение текстовому полю, чтобы отменить последнее действие
     SendMessage txtUndo.hwnd, EM_UNDO, 0, 0
End Sub

Теперь нажимая кнопку, вы можете отменить последнюю операцию редактирования текстового поля.
Пример можно скачать здесь

Пример №2: Что скрывается под звёздочками?

Этот пример будет посложнее. Мы создадим программу, которая будет раскрывать звёздочки в паролях:

1. Создайте новый проект
2. На созданную вместе с проектом форму добавьте 5 меток (lblHelp, lblCursor, lblXY, lblWindow, lblHwnd), 1 таймер (tmrCrack), 1 кнопку (cmdExit), а также можете добавить одну картинку, для красоты:)
3. Элементы управления должны иметь следующие свойства:

Имя: Свойство: Значение:
lblHelp Caption Наведите курсор мыши на скрытую надпись, щёлкните по ней и надпись раскроется!!!
lblCursor Caption Текущие координаты мыши:
lblXY BorderStyle 1
lblWindow Caption Манипулятор окна:
lblHwnd BorderStyle 1
tmrCrack Interval 1
cmdExit Caption &Закрыть

4. После перечисленных выше действий форма должна выглядеть примерно так:

5. Добавьте в модуль формы следующий код:

'Функция определяет манипулятор окна по его координатам
Private Declare Function WindowFromPoint Lib "user32" (ByVal xPoint As Long, ByVal yPoint As Long) As Long

'Посылает окну сообщение
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

'Определяет текущую позицию курсора
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long

'Структура POINTAPI
Private Type POINTAPI
    x As Long
    y As Long
End Type


'Идентификатор сообщения, задаёт символ, используемый для ввода пароля
Private Const EM_SETPASSWORDCHAR = &HCC

Private Sub cmdExit_Click()
    Unload Me
End Sub

Private Sub Timer1_Timer()
    
    Dim hwnd As Long
    Dim Curs As POINTAPI
    'Определяем координаты курсора
    GetCursorPos Curs
    'Определяем манипулятор окна
    hwnd = WindowFromPoint(Curs.x, Curs.y)
    'Отображаем полученные значения
    lblHwnd.Caption = hwnd
    lblXY.Caption = " X: " & Curs.x & " Y: " & Curs.y

    'Посылаем окну сообщение, чтобы звёздочек не было
    SendMessage hwnd, EM_SETPASSWORDCHAR, 0, 0

End Sub

Теперь с помощью этой программы вы можете раскрывать звёздочки в паролях, для этого вам нужно навести курсор на скрытый пароль и кликнуть по нему:



Пример можно скачать здесь

На этом наше знакомство с сообщениями окон подходит к концу. Если остались вопросы, пишите


 

Copyright © Hovanskiy Yan