Jump to content

Recommended Posts

Posted

ohh, sorry.....

eu expliquei-me mal, o que pretendo mesmo é por exemplo quando pressionar a tecla a, o rato se mova 50pixeis à esquerda, apartir do ponto onde se encontra,

quando pressionar a tecla d, o rato se mova 50pixeis à direita, apartir do ponto onde se encontra,

quando pressionar a tecla s, o rato se mova 50pixeis para baixo, apartir do ponto onde se encontra,

quando pressionar a tecla w, o rato se mova 50pixeis para cima, apartir do ponto onde se encontra...

desde já agradeço

abraço.

Posted

explicaste-te bem e a resposta também foi bem dada, mas para quem percebe pouco se calhar foi insuficiente.

o que o  NuGuN te deu, foi a declaração da função da API do windows que te permite mover o cursor para a posião que queres. para moveres o rato, apenas tens de chamar a função SetCursorPos(x,y) quando achares necessario, fazendo os calculos para as coordenadas.

Posted

Sim, isso eu sei...

Escrevi este código na segunda-feira, só que ao precionares a tecla 4 o cursor move-se no eixo do x e do y (esquerda, cima), e quando pressiono a tecla 6 o cursor move-se no eixo do x e do y (direita, cima).

Não sei porquê... talvêz seja uma coisinha de nada, mas prós meus olhos aquilo está correcto....

Private Sub Form_KeyPress(KeyAscii As Integer)

If KeyAscii = vbKey8 Then

Yy = Yy - 50

  SetCursorPos Xx, Yy

 

ElseIf KeyAscii = vbKey6 Then

Xx = Xx + 50

  SetCursorPos Xx, Yy

                   

ElseIf KeyAscii = vbKey2 Then

Yy = Yy + 50

  SetCursorPos Xx, Yy

ElseIf KeyAscii = vbKey4 Then

Xx = Xx - 50

  SetCursorPos Xx, Yy

End If

End Sub

experimentem... e digam alguma coisa

abraço.

Posted

Penso que o teu erro foi não declarar as variaveis... Quando fazias istu -> yY = yY + 50 a variavel yY tomava o valor 50 mas como não esta declarada quando acaba a função o seu valor volta a zero...

Option Explicit

Private Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long

Dim xX As Single
Dim yY As Single

Private Sub Form_KeyPress(KeyAscii As Integer)

If KeyAscii = 119 Then
yY = yY - 50
  SetCursorPos xX, yY

ElseIf KeyAscii = 100 Then
xX = xX + 50
  SetCursorPos xX, yY
                     
ElseIf KeyAscii = 115 Then
yY = yY + 50
  SetCursorPos xX, yY

ElseIf KeyAscii = 97 Then
xX = xX - 50
  SetCursorPos xX, yY

End If
Me.Caption = KeyAscii
End Sub

Os valores 100, 115, 119 e 97 é o código ascii das teclas com a linha "Me.Caption = KeyAscii" podes ver os códigos das outras teclas excepto teclas de sistema e mais algumas 👍

cumps

Posted

desde já agradeço a colaboração...  😛

pois... Testei o o código que envias-te, tá escrito de outra forma, mas continua com o mesmo problema...

que é em vez de semover para a esquerda ou para a direita, move-se nas diagonais...

abraço.

Posted

por acaso a umas horas a traz tive a cria um codigo perecido com este mas com a opçao de clicks e tudo, so tive um problema o programa nao funciona minimizado e para o meu objectivo tinha q dar, porque queria fazer uma espécie de rato no teclado para mexer no pc todo como um rato mesmo, por isso o programa estaria sempre minimizado

há solução?

Posted

ok...voutentar, ainda nao puder ver isso, mas vou ver ja digo qq coisa.

obrigado mais uma vez, tu em vb das-lhe bem, é bem é isso q é perciso. eu vb so vou ter po ano no 11º mas é a linguagem q mais gosto e é facil.

Mr_Jorge

Posted
obrigado mais uma vez, tu em vb das-lhe bem, é bem é isso q é perciso. eu vb so vou ter po ano no 11º mas é a linguagem q mais gosto e é facil.

Se queres que te diga.. estou bastante desiludido com VB6, pensava de ser melhor. Estou agora a mudarme para C++ que me dá bastante mais geito  🙂

Pá... eu esquecime como se esta a fazer issu das teclas não se pode perder o focus da form  ?

Eu só conheço 2 maneira de fazer issu.

Uma delas é com a API "GetAsyncKeyState"

Private Declare Function GetAsyncKeyState Lib "user32" Alias "GetAsyncKeyState" (ByVal vKey As Long) As Integer

A outra é fazendo um hook ao teclado. Este metodo é mais complicado mas da pra fazer.

Alguma duvida ja sabes 🙂

cumps

Posted

eu poracaso gosto de vb6, vbnet nao gosta nada, alem do programa ser kmuito pesado, tou muito bem no vb6

eu com programação nao é o que eu gosto mesmo, so faço uma coisas as vezes, coisas q me fazem falta, jeito ou por piada por isso o vb6 serve-me perfeitamente

a funçao vou esperimentar e digo depois alguma coisa...

cumps.

Mr_Jorge

Posted
Private Sub Timer1_Timer()
Dim keyy As Integer
    Call GetAsyncKeyState(keyy)
    Label2.Caption = keyy
End Sub

por acaso esperimentei ja...meti o codigo assim como está em cima é me devolvido simplesmente 0 na label1....

Mr_Jorge

Posted

É normal 😉

Para trabalhares com essa API podes fazer istu

Crias um Timer e daslhe um intervalo de... uns 50 depois no timer metes :

If GetAsyncKeyState(&H57) Or GetAsyncKeyState(&H41) Or GetAsyncKeyState(&H44) Or GetAsyncKeyState(&H53) Then
    Me.Caption = "Sim"
    Else
        Me.Caption = "Não"
End If

E vais ver que quando carregares nas teclas W, A, S ou D mesmo que nao tenhas a form selecionada ela vai detectar que estas a carregar nestas teclas, agora.. apartir daki penso que ja te safas 😛

cumps

Posted

Para veres os valores das outras teclas pode fazer istu

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Me.Caption = KeyCode
End Sub

O numero que te aparecer na barra da janela é o numero correspondente á tecla. Teclas do sistema penso que não funcionam com este metodo

cumps

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.