Ir para conteúdo

Featured Replies

Postado

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: 33fdlkj.png
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 por Robson Venturin (veja o histórico de edições)

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.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo