Вернуть VbKeyConstants в обратную сторону ?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Вернуть VbKeyConstants в обратную сторону ?

Сообщение ALX_2002 » 26.04.2005 (Вт) 14:06

Челы, можно как нибудь без тупого Select Case реализовать возврат кода клавиш по текстовым константам ?

типа

Код: Выделить всё
K=RetKey("vbKeyLeft")

Function RetKey(K as string)

RetKey=...

End Function


alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 26.04.2005 (Вт) 14:09

K=vbKeyLeft ?
Lasciate ogni speranza, voi ch'entrate.

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 26.04.2005 (Вт) 14:15

2 alibek: Ну да, только мне нужно не константу подсовывать, а текстовое имя кнопки типа - "Enter"

xolod
Гуру
Гуру
 
Сообщения: 1162
Зарегистрирован: 15.01.2004 (Чт) 0:42
Откуда: Moscow

Сообщение xolod » 26.04.2005 (Вт) 14:23

Не, без блока условий никак, IMHO.
Ну если только в .Tag поле кнопки будет цифрового значения vbKeyLeft и подсовывать ты будешь его.

Constant ERROR_SUCCESS deprecated. I'm so happy.
Программирование и дизайн – http://www.macrointellect.ru

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 26.04.2005 (Вт) 14:25

2 xolod : Эм.... А объясни ламеру - эт как, плыыз ? :shock:

xolod
Гуру
Гуру
 
Сообщения: 1162
Зарегистрирован: 15.01.2004 (Чт) 0:42
Откуда: Moscow

Сообщение xolod » 26.04.2005 (Вт) 14:39

В ObjectBrowser VB (F2) смотри значения констант. Например vbKeyLeft=37.
Потом пропиши либо ручками в дизайнере форм, либо кодом.
Код: Выделить всё

Sub prepareButton()
  Me.Command1.Tag = 37
  Me.Command2.Tag = 38
  Me.Command3.Tag = 39
  '...
  Me.CommandN.Tag = X
End Sub


Теперь чтобы получить K, достаточно
Код: Выделить всё

Function GetK(byref objCommand as CommandButton) as KeyCodeConstants
  GetK = objCommand.Tag
End Sub

Constant ERROR_SUCCESS deprecated. I'm so happy.
Программирование и дизайн – http://www.macrointellect.ru

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 26.04.2005 (Вт) 14:54

ууу нее... Пасиб :shock: . Я лучше Select case :D

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 26.04.2005 (Вт) 14:56

В принципе моя задача сводится к тому, что нужно запомнить набор клавиш, записать в лог а потом воспроизводить нажатия по логу.

типа прога "нажималка"

Хотел для удобности в лог писать нечто подобное

----------
нажать 1
нажать A
нажать CAPS LOCK
нажать SHIFT
нажать ALT

ну и т.п


Всё думаю как удобнее интерфейс сделать... Ничё не получается :D

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 26.04.2005 (Вт) 15:48

Зафигачить в коллекцию.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

xolod
Гуру
Гуру
 
Сообщения: 1162
Зарегистрирован: 15.01.2004 (Чт) 0:42
Откуда: Moscow

Сообщение xolod » 26.04.2005 (Вт) 16:25

У тебя программа только кнопки нажимать умеет?
Или ты написал что-то вроде поддержки макросов вдобавок к основной деятельности программы?

Constant ERROR_SUCCESS deprecated. I'm so happy.
Программирование и дизайн – http://www.macrointellect.ru

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 26.04.2005 (Вт) 16:28

Гы гы гы :)

Вариант для самых ленивых :)
Код: Выделить всё
Option Explicit

Private Sub Form_Load()
  GenerateCollectionCode "myCol", Text1
End Sub

Private Sub GenerateCollectionCode(ByVal CollectionName As String, ByVal DumpTo As TextBox)
  Dim t As New TLI.TLIApplication
  Dim i As Long, s As String
 
  With t.TypeLibInfoFromFile("MSVBVM60.DLL\3").Constants.NamedItem("KeyCodeConstants")
    For i = 1 To .Members.Count
      s = s & CollectionName & ".add " & .Members(i).Name & ", """ & .Members(i).Name & """" & vbNewLine
    Next
  End With
 
  DumpTo.Text = s
 
  Set t = Nothing
End Sub


В принципе, если для конечного проекта допустимо сохранить ссылку на TLI, то можно коллекцию не юзать, а тырить имена в процессе прямо из TLB :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 26.04.2005 (Вт) 18:27

2 GSerg: О ! Пасиб - ща буду тестить ! :roll:

2 xolod: Ну я нашёл как генерить события клавы и мыши

Задача проста - нужно сделать эмулятор тупых действий человека

( нужно знакомому для прокачки бота из какой то онлайн игры )

Короче прога содержит 4 типа возможных действий

1) передвинуть курсор в X,Y

2) Сделать паузу на опред. кол-во секунд

3) Нажать кнопку (3-типа нажатия : Нажать, отпустить, кликнуть)

4)Ввести текст


Вот собсено и всё. :)

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 26.04.2005 (Вт) 18:29

2 GSerg: А у меня никакого TLI нету :( . Какую DLL ку подрубить ?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 26.04.2005 (Вт) 23:04

Люди, я всё никак в тему не въеду - вы часом не про GetKeyNameText?
Изображение

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 26.04.2005 (Вт) 23:35

Неа. Наоборот всё...

по KeyName нужно возвращать KeyCode для всех клавиш

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 27.04.2005 (Ср) 5:01

Мож тебе просто заполнять структуру данных SendInput и сохранять её в двоичном формате? :)
А библиотека называется TypeLib Information.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот, SemrushBot, Yandex-бот и гости: 183

    TopList