leinad Posted June 29, 2006 at 09:08 AM Report #35406 Posted June 29, 2006 at 09:08 AM bom dia colegas, Pretendo que quando a combo1 receber o focus, o rato se mova, por exemplo para cima... obrigado, abraço.
NuGuN Posted June 29, 2006 at 01:40 PM Report #35464 Posted June 29, 2006 at 01:40 PM Podes utilizar a API SetCursorPos Private Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long alguma duvida ja sabes 🙂 cumps
leinad Posted June 30, 2006 at 02:08 PM Author Report #35642 Posted June 30, 2006 at 02:08 PM 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.
Guest id194 Posted June 30, 2006 at 03:57 PM Report #35667 Posted June 30, 2006 at 03:57 PM 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.
leinad Posted June 30, 2006 at 04:51 PM Author Report #35675 Posted June 30, 2006 at 04:51 PM 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.
NuGuN Posted June 30, 2006 at 07:02 PM Report #35711 Posted June 30, 2006 at 07:02 PM 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
leinad Posted July 4, 2006 at 08:43 AM Author Report #36078 Posted July 4, 2006 at 08:43 AM 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.
NuGuN Posted July 4, 2006 at 06:03 PM Report #36201 Posted July 4, 2006 at 06:03 PM Assim não sei :S é que ele aqui trabalha bem! cumps
jorruivo Posted July 5, 2006 at 01:06 AM Report #36279 Posted July 5, 2006 at 01:06 AM 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?
jorruivo Posted July 7, 2006 at 03:35 AM Report #36726 Posted July 7, 2006 at 03:35 AM ninguem tem soluçao pa esta situação?
NuGuN Posted July 7, 2006 at 01:37 PM Report #36817 Posted July 7, 2006 at 01:37 PM Para essa questão do prograva minimizado podes sp meter a Form invisivel.. ou entao se quiseres algo mais elaborado podes meter um iconzinho no systray cumps
jorruivo Posted July 7, 2006 at 04:33 PM Report #36858 Posted July 7, 2006 at 04:33 PM 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
jorruivo Posted July 7, 2006 at 05:48 PM Report #36870 Posted July 7, 2006 at 05:48 PM ja tentei por a form invisivel e assim é q nao da mesmo...tens outra ideia?
NuGuN Posted July 7, 2006 at 07:03 PM Report #36878 Posted July 7, 2006 at 07:03 PM 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
jorruivo Posted July 8, 2006 at 02:23 AM Report #37004 Posted July 8, 2006 at 02:23 AM 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
jorruivo Posted July 8, 2006 at 02:29 AM Report #37005 Posted July 8, 2006 at 02:29 AM 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
NuGuN Posted July 8, 2006 at 09:33 AM Report #37013 Posted July 8, 2006 at 09:33 AM É 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
jorruivo Posted July 8, 2006 at 12:30 PM Report #37051 Posted July 8, 2006 at 12:30 PM fixe ja deu, mas existe alguma tabela com os endereços de todas as teclas?? é q eu queria usar outras, tipo as setas e outras...
NuGuN Posted July 8, 2006 at 01:56 PM Report #37064 Posted July 8, 2006 at 01:56 PM 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
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now