quarta-feira, 25 de janeiro de 2012

Quase pronto!

Rá! Lembram do probleminha lá da conexão remota do PC ao notebook? Pois trago boas notícias: Aquele probleminha do mouse foi resolvido!

Então, como eu ia dizendo, a solução foi a seguinte: Criar um programa cujo foco NÃO É obter total acesso ao computador remoto, e sim, apenas enviar as instruções de MOUSE para ele! Confesso pra vocês que não foi tarefa fácil, principalmente pelos vários empecilhos encontrados no meio do caminho. Vamos lá…

Primeiramente, fiz um layoutzinho tosco, mas funcional:

screen1

Em seguida, fiz com que o pontinho vermelho acima detectasse apenas a movimentação do mouse, não a posição dele. Até aí tá moleza. Depois, é claro que o mouse nosso, visando que o programa irá enviar apenas a movimentação do mouse e não coordenadas x e y exatas do cursor, então o mouse na origem tem que estar “travado” no centro da tela, e a partir dessa travada que o ponto vermelho obtém a movimentação. Até aí susse no musse, principalmente a questão de uma combinação de teclas para “destravar” o cursor, caso haja alguma emergência.

Mas aí que veio o primeiro problema: A conexão TCP/IP com o outro computador.

Após uma lida rápida no help do Game Maker, deu pra relembrar como se faz os procedimentos de conexão usando os recursos nativos do Game Maker. (Calma, programadores, eu sei que vocês estão dizendo agora nas suas mentes para que eu use a 39dll ao invés da nativa. Bem, isto está nos meus planos, assim que eu aprender a mexer com ela!) O único detalhe é que, adivinha se deu certo? Bem, acertou quem disse NÃO!

Eu já tava arrancando os cabelos, executando o projeto várias vezes em modo debug tentando entender o que houve, mas aí que percebi que o computador remoto não consegue se conectar no host se ele não BUSCAR os hosts disponíveis. Resumindo: Era uma única linhazinha de código. Problema 1 resolvido!

Eu queria ter tirado uma foto quando vi que o cursor no meu PC já estava se movimentando de acordo com os meus comandos de movimentação no notebook, até que eu tentei fechar uma janela no PC… E, pra minha surpresa, nada aconteceu. Mas, por quê? Porque o GM não tem suporte à simulação de cliques do mouse nativamente. Isto é, tive que correr atrás de DLLs pra isso!

Uma vez eu havia baixado uma tal de MouseSolution, mas como não achei tutoriais para ela, deixei ela de lado.

E dê-lhe ver como um louco uma outra dll e, para isso, recorri ao meu bom e velho amigo www.gmtoolbox.com!

Primeiramente, tentei usar a MouseController. Péssima idéia, porque a dll está desatualizada (Game Maker versão SEIS!!) e, ao dar o primeiro clique, simplesmente o mouse “entra em curto” e fica clicando sem parar, numa velocidade absurda.

Segundamente, fui ver a Mouse Simulation DLL, mas o arquivo de download expirou. Mediafire maldito!

Terceiramente, achei a MouseSolution. Mas, como não encontrei tutoriais para ela, fiquei com medo de usá-la e deixei ela de lado.

E por fim, mas não por último, achei a MouseControl DLL, mas para a minha sorte, o link de download dela havia expirado também. Mas, para o meu azar, no tópico da dll, o criador dela postou uma “versão corrigida às pressas” dela num site muito bacana chamado UpUrLoad. Baixei a bendita, e fiquei surpreso com o  tanto de ações que haviam!

Apenas as funções de pressionar e soltar botão esquerdo e direito já eram suficientes! Tava bão demais! Só depois que notei que o mesmo não possui essas funções para o botão do meio, mas o clique do botão do meio já está muito bom! É uma pena que também não tenha reconhecimento da roda do mouse… Em vários FPS, é muito útil.

Em seguida, dê-lhe reformular o código novamente com essa nova DLL mas, para minha surpresa, não calculei a lógica da rebimboca da parafuseta corretamente e, sendo assim, a DLL deixava o mouse louco, clicando com todos os botões ao clicar com um botão só. Locãodasidéia, né?

Um pequeno remendo aqui e outro ali e PRONTO! O mouse agora se mexe remotamente E CLICA remotamente! E eu posso clicar e arrastar qualquer coisa com ambos os botões! Ficou lindo, lindo, lindo. (como diria meu irmão!)

Aí você pensa: Problema da conexão do notebook ao PC RESOLVIDO? Pois é aí que você se engana.

Bom, como sabe, o Ultr@ VNC controla MOUSE também, além do teclado. E o controle de MOUSE dele é de coordenadas, não de movimento. Sendo assim, usar o meu programa em conjunto com o Ultr@ VNC está totalmente fora de cogitação, nenhum dos dois vai funcionar. OU SEJA, eu vou ter que achar agora uma DLL ou alguma macumba que faça com que consiga ler quais teclas estão sendo pressionadas e, enviá-las ao computador remoto.

O meu programa vai ficar igual um programa de acesso remoto, com a desvantagem de poder VER o que está acontecendo no outro computador, mas é bem essa a idéia! São 00:03 agora, termino essa postagem morrendo de sono, com 3 monitores na minha frente, com uma p*t* vontade de jogar alguma coisa, mas não posso porque tenho que me empenhar nesse programinha!

Amanhã eu posto o que que deu de resultado dessa muvuca! Até lá! <ô/

Um comentário: