Postado Novembro 26, 2011 13 anos Vamos desenferrujar a parte de programação em C# no fórum... - Quando nós programadores tentamos enviar as teclas Ctrl+Q para o cliente do Tibia, é um grande problema pois clientes do tipo Tibia (jogos), usam algumas condições especiais... c.Input.SendKeyDown(Keys.Control); c.Input.SendKeyChar(Keys.Q); c.Input.SendKeyUp(Keys.Control); Esse é um exemplo do que não irá funcionar no cliente do Tibia, mas e agora, 'comofaz'? é simples, enviem a 'key especial', segue abaixo o código: c.Input.SendMessage(c.hWnd, Hooks.WM_KEYDOWN, 0x11, 0x10001); // control key c.Input.SendMessage(c.hWnd, Hooks.WM_KEYDOWN, Keys.Q, 0x100001) // 'q' key c.Input.SendMessage(c.hWnd, Hooks.WM_KEYCHAR, 0x11, 0x100001) // ESPECIAL CHAR CODE c.Input.SendMessage(c.hWnd, Hooks.WM_KEYUP, 0x11, 0x10001); // control key c.Input.SendMessage(c.hWnd, Hooks.WM_KEYUP, Keys.Q, 0x100001) // 'q' key Explicar um código é um tanto quanto simples, porém, você entender depende (e muito) de sua habilidade com a linguagem e/ou programação em geral. Vamos lá, agora vocês me perguntam:Como você descobriu que precisa de uma 'key especial'? Explicar isso é muito fácil, segue abaixo um pequeno tutorial: O próprio Visual Studio já vem com um programa, no qual você pode ver quais teclas foram digitadas em X janela, para ver isso é simples, apenas procure por Spy++ ("C:\Program Files\Microsoft Visual Studio 10.0\Common7\Tools\spyxx.exe"); Abra ele e procure pelo Tibia; Clique na primeira Thread que aparecer; Clique com o direito em Windows 'NUMEROS' "Tibia" TibiaClient; Clique em Messages; Clique dentro da caixa que apareceu e vai em Logging Options; Na aba MESSAGES, desmarque TUDO, isso mesmo, TUDO e deixe apenas Keyboard; Clique em OK; Clique com o direito na mesma caixa de antes, e clique em Clear Message Log; Vá no seu Tibia e pressione Ctrl+Q; Repare que no Spy++ apareceu alguns Logs, é isso mesmo que queremos! Reparem: Pronto, agora você já sabe como enviar a tecla Ctrl+Q para o Tibia =) Outros exemplos Úteis: Ctrl+G: c.Input.SendMessage(c.hWnd, Hooks.WM_KEYDOWN, 0x11, 0x10001); // control key c.Input.SendMessage(c.hWnd, Hooks.WM_KEYDOWN, Keys.G, 0x100001) // 'g' key c.Input.SendMessage(c.hWnd, Hooks.WM_KEYCHAR, 0x11, 0x22001) // ESPECIAL CHAR CODE c.Input.SendMessage(c.hWnd, Hooks.WM_KEYUP, 0x11, 0x10001); // control key c.Input.SendMessage(c.hWnd, Hooks.WM_KEYUP, Keys.G, 0x220001) // 'g' key Function logout: public void Logout() { c.Input.SendMessage(c.hWnd, Hooks.WM_KEYDOWN, 0x11, 0x10001); // control key c.Input.SendMessage(c.hWnd, Hooks.WM_KEYDOWN, Keys.Q, 0x100001) // 'q' key c.Input.SendMessage(c.hWnd, Hooks.WM_KEYCHAR, 0x11, 0x100001) // ESPECIAL CHAR CODE c.Input.SendMessage(c.hWnd, Hooks.WM_KEYUP, 0x11, 0x10001); // control key c.Input.SendMessage(c.hWnd, Hooks.WM_KEYUP, Keys.Q, 0x100001) // 'q' key } Editado Novembro 26, 2011 13 anos por Robson Venturin (veja o histórico de edições)
Postado Novembro 26, 2011 13 anos Muito fera...faiz muito tempo que não faço nada no C#, mais peguei essa pra da uma desenferrujada e funfo que era uma beleza! Abraço! # Regras Gerais - TibiaKing.com # Contato: [email protected]Não respondo dúvidas via MP.
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.