Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: Вопросик по GetAsyncKeyState Добавлено: 11.10.05 13:04  

Автор вопроса:  «UL.eXe» | ICQ: 197.895.916.247 
Люди, меня вопрос, помогите плиз:

Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Public macro As String

Private Sub MyTimer_Timer()
If (GetAsyncKeyState(KEY_CODE_КЛАВИШИ) = -32768) Then
...
End If
End Sub


В строке: If (GetAsyncKeyState(KEY_CODE_КЛАВИШИ) = -32768) - KEY_CODE_КЛАВИШИ = сам могу вводит, а вот если попробовать так:

If (GetAsyncKeyState(UserButtons.Text) = -32768)

Ничего не получается.. Как сделать, чтобы юзвер сам выберал себе клавиши быстрого запуска??

==
Заранее благодарен!

Ответить

  Ответы Всего ответов: 19  

Номер ответа: 1
Автор ответа:
 Morpheus



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #1
Добавлено: 11.10.05 15:41
получи код клавиши вот так:

MsgBox Str$(vbKeyEscape)

вот для Esc у меня выдало 27, значит юзер должен ввеси "27" а тебе надо это из строки в число переделать. аналогично делаются другие клавиши. Но это будет сложно для юзера - откуда ему знать коды? так что лучше делай меню и в зависимости от выбора горячей клавиши выбирай её код сам.

P.S.: Чё это зы = -32768 , когда в данном случае можно вообще ничё не писать?

Ответить

Номер ответа: 2
Автор ответа:
 «UL.eXe»



ICQ: 197.895.916.247 

Вопросов: 72
Ответов: 540
 Профиль | | #2 Добавлено: 11.10.05 20:02
Так это понятно!
Кейкоды клавишь я сам знаю почти на память :)
Мне надо, чтобы в текстполе юзвер вводил любую букву, которая прийдет ему в голову.. а программа выполняла действие при нажатии именно этой клавиши!

Ответить

Номер ответа: 3
Автор ответа:
 «UL.eXe»



ICQ: 197.895.916.247 

Вопросов: 72
Ответов: 540
 Профиль | | #3 Добавлено: 11.10.05 20:03
P.S.: Чё это зы = -32768 , когда в данном случае можно вообще ничё не писать?


Гы) -32768 > KeyDown

Ответить

Номер ответа: 4
Автор ответа:
 Victor



ICQ: 345743490 

Вопросов: 42
Ответов: 385
 Web-сайт: vt-dbnz.narod.ru
 Профиль | | #4
Добавлено: 11.10.05 20:55

Че вы пытаетесь запомнить коды клавиш?
http://vt-dbnz.narod.ru/vb/keycodes/keycodes.rar
Засуньте ярлык на QuickLaunch. И ничего запоминать не надо.

Ответить

Номер ответа: 5
Автор ответа:
 Morpheus



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #5
Добавлено: 11.10.05 21:15
Чё вы забиваете QuickLaunch прогами для кодов клавишь?
Наберитье vbKey[x] и всё

2 «Unknown Lamer»:
ну дык и пиши что :

option compare text
Seleck case TextBox.Text
Case "a"
   activ=vbKeyA ' bla-bla-bla
case "b"
...........'bla-bla
end select

Ответить

Номер ответа: 6
Автор ответа:
 «UL.eXe»



ICQ: 197.895.916.247 

Вопросов: 72
Ответов: 540
 Профиль | | #6 Добавлено: 11.10.05 22:37
2Morpheus:
 Секс вери мач :)
2Victor:
 Сенкс (за сайт)

Ответить

Номер ответа: 7
Автор ответа:
 Victor



ICQ: 345743490 

Вопросов: 42
Ответов: 385
 Web-сайт: vt-dbnz.narod.ru
 Профиль | | #7
Добавлено: 12.10.05 00:24

Сенкс (за сайт)

А что ты там нашел?? мне интересно. Что народ интересует, чего туда насовать?

Ответить

Номер ответа: 8
Автор ответа:
 «UL.eXe»



ICQ: 197.895.916.247 

Вопросов: 72
Ответов: 540
 Профиль | | #8 Добавлено: 12.10.05 11:38
2Victor:

Побольше исходников утилит для VB,
... там достаточго оригинайльный KeyCoder :)
Например никогда не знал, как сэмитировать нажатие клавиши мышки.. узнпл ;)

Ответить

Номер ответа: 9
Автор ответа:
 «UL.eXe»



ICQ: 197.895.916.247 

Вопросов: 72
Ответов: 540
 Профиль | | #9 Добавлено: 12.10.05 20:02
Всем спасибо за ответы, я допер сам до того что искал :))

Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Public macro As String

Private Sub MyTimer_Timer()
If (GetAsyncKeyState(KEY_CODE_КЛАВИШИ) = -32768) Then
...
End If
End Sub


После THEN необходимо просто вставить:

SendKeys (Text1.Text)


Все :)

Ответить

Номер ответа: 10
Автор ответа:
 Neco



ICQ: 247906854 

Вопросов: 133
Ответов: 882
 Web-сайт: neco.pisem.net
 Профиль | | #10
Добавлено: 13.10.05 04:46
Честна говоря, давно не уважаю функции Васи типа SendKeys и AppActivate - не лучше ли их заменить чем-нить апишным?

Ответить

Номер ответа: 11
Автор ответа:
 «UL.eXe»



ICQ: 197.895.916.247 

Вопросов: 72
Ответов: 540
 Профиль | | #11 Добавлено: 13.10.05 11:53
2Neco:

Можно, конечно и заменить..
Но я ведь VB учу, а не Api :)

Ответить

Номер ответа: 12
Автор ответа:
 Александр



Разработчик Offline Client

ICQ: 204034 

Вопросов: 106
Ответов: 1919
 Профиль | | #12 Добавлено: 13.10.05 13:10
<Unknown Lamer>, а ты как собрался учить VB без API? Как выучишь - позови :))

Ответить

Номер ответа: 13
Автор ответа:
 «UL.eXe»



ICQ: 197.895.916.247 

Вопросов: 72
Ответов: 540
 Профиль | | #13 Добавлено: 13.10.05 13:57
<Unknown Lamer>, а ты как собрался учить VB без API? Как выучишь - позови :))


Ты слегка не понял... :0 апи я знаю (чуть-чуть:)) меня интересуют исключительно возможности VB...

Ответить

Номер ответа: 14
Автор ответа:
 Страшный Сон



Вопросов: 46
Ответов: 848
 Профиль | | #14 Добавлено: 13.10.05 16:57
If (GetAsyncKeyState(KEY_CODE_КЛАВИШИ) = -32768) Then


А я всегда GetKeyState использую. Вызываю каждый кадр 256 раз:

      For I = 0 To 255
        KSt(I, 1) = KSt(I, 0)
        KSt(I, 0) = GetKeyState(I)
        KCE(I) = 0
          KCDelay(I) = Ticks
          If KSt(I, 1) >= 0 Then KCE(I) = 1: KCTime(I) = Ticks
          If KCDelay(I) - KCTime(I) >= 200 Then KCE(I) = 1: KCTime(I) = Ticks - 180: KCCounter(I) = KCCounter(I) + 1
        Else
          KCDelay(I) = 0
          KCCounter(I) = 0
        End If
    Next I

Если KSt(x, 0) меньше нуля, значит клавиша в данный момент нажата.

Ответить

Номер ответа: 15
Автор ответа:
 Страшный Сон



Вопросов: 46
Ответов: 848
 Профиль | | #15 Добавлено: 13.10.05 16:59
Ну то есть так:

    For I = 0 To 255
        KSt(I, 1) = KSt(I, 0)
        KSt(I, 0) = GetKeyState(I)
        KCE(I) = 0
        If KSt(I, 0) < 0 Then
          KCDelay(I) = Ticks
          If KSt(I, 1) >= 0 Then KCE(I) = 1: KCTime(I) = Ticks
          If KCDelay(I) - KCTime(I) >= 200 Then KCE(I) = 1: KCTime(I) = Ticks - 180: KCCounter(I) = KCCounter(I) + 1
        Else
          KCDelay(I) = 0
          KCCounter(I) = 0
        End If
    Next I

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам