Ir para conteúdo
  • Cadastre-se

Função de Hotkey (Simula pressionamento de hotkeys no tibia)


Posts Recomendados

Falaaaa galeraa...

Dando continuidade aos meus tutoriais de programação SEM TIBIAAPI, vou postar agora mais uma função que pode ser util a vocês x.x

Ela trabalha de uma forma simples, só ve qual o texto que foi inserido na função, e trabalha a partir disso (se digitei F1 ele vai usar F1 na janela do tibia)...

Um exemplo de utilização é pra healer... por exemplo (em pseucodes ):

se player.vida <= vida.paraHealar então

Hotkey('F1');

Vamos la:

A função é a seguinte:

 

function hotkey(x :string): string;

     var

  h: HWND;

  i : integer;

begin


  if x ='F1' then

  i := 112;

   if x ='F2' then

  i := 113;

   if x ='F3' then

  i := 114;

   if x ='F4' then

  i := 115;

   if x ='F5' then

  i := 116;

   if x ='F6' then

  i := 117;

   if x ='F7' then

  i := 118;

   if x ='F8' then

  i := 119;

   if x ='F9' then

  i := 120;

   if x ='F10' then

  i := 121;

   if x ='F11' then

  i := 122;

   if x ='F12' then

  i := 123;


  h := FindWindow(nil, 'Tibia');  // acha a janela do tibia 

  SendMessage(h, WM_KEYdown, i, 0);   //pressiona a tecla

  SendMessage(h, WM_KEYUP, i, 0);  //solta tecla

  end;


Obs: coloque a função abaixo do Implementation, e você pode usa-la no decorrer do programa. Analisando a função ( como sempre x.X ):
function hotkey(x :string): string;
Ou seja, vamos usar ela assim:
hotkey(tecla);
Lembrando que o code é bem simples, e só funciona com hotkeys do F1 ao F12 (é só ver o code...mas é fácil adaptar para usar ctrl + F's ) Você pode usar também a função com um edit ou outra coisa do tipo (que seja string)... ou seja:
hotkey(edit1.text);
Se no edit1.text tiver escrito F1, ele pressiona essa hotkey no tibia. =] Um code simples, mas, espero que seja util, e que dê ideias de como vocês podem fazer outros sistemas "indetectáveis" pro tibia. flw, abraços galera #Edit Seguindo a sugestão do Flamer para um menor consumo de processamento, fiz uma versão com else if... a função não altera muito (acredito que só seu consumo de processador), ou seja, a utilização fica da mesma forma, se alguém quiser testar a nova função para ver se há mudanças... é a seguinte (só troque a função por essa) :
 


function hotkey(x :string): string;

     var

  h: HWND;

  i : integer;

begin

 if x ='F1' then

  i := 112

  else if x ='F2' then

  i := 113

  else if x ='F3' then

  i := 114

  else if x ='F4' then

  i := 115

  else if x ='F5' then

  i := 116

  else if x ='F6' then

  i := 117

  else if x ='F7' then

  i := 118

  else if x ='F8' then

  i := 119

  else if x ='F9' then

  i := 120

  else if x ='F10' then

  i := 121

  else if x ='F11' then

  i := 122

  else if x ='F12' then

  i := 123;


  h := FindWindow(nil, 'Tibia');  // acha a janela do tibia

  SendMessage(h, WM_KEYdown, i, 0);   //pressiona a tecla

  SendMessage(h, WM_KEYUP, i, 0);  //solta tecla

  end;


Flw², Abraços²

Link para o post
Compartilhar em outros sites

Os valores de WM_KEYDOWN / WM_KEYUP (...) já são definidos por alguma biblioteca no Delphi? Se não é necessário informar os valores.

O consumo de processamento pode ficar alto por vários timers com tantos "IFs" para a mesma expressão. Seria bom colocar um "CASE" ou "ELSE / ELSEIF" (experiência própria)

Link para o post
Compartilhar em outros sites

@EdsonJunior

Vlw pelo comentario ae parceiro xD

@Flamer

Os valores de WM_KEYDOWN / WM_KEYUP (...) já são definidos por alguma biblioteca no Delphi? Se não é necessário informar os valores.

Sim, já são definidos =X...

Sempre que eu escrevo um tutorial, sigo ele a risca num projeto em branco, pra ter certeza que se uma pessoa fizer o mesmo, chegará ao mesmo resultado. Ou seja, a função funcionará normalmente seguindo as minhas explicações, sem ter que definir mais nada x.X

O consumo de processamento pode ficar alto por vários timers com tantos "IFs" para a mesma expressão. Seria bom colocar um "CASE" ou "ELSE / ELSEIF" (experiência própria)

to ligado parceiro o0

É que fiz um code de base, ae meu bot usa pouco a função de hotkey, entao acabou ficando esse mesmo x.X

Mas, vo postar uma versão com else if... vo fazer aqui e ja edito o topico...

vlw pelo comentario aew

flw

Link para o post
Compartilhar em outros sites
  • 6 months later...
procedure TfrmPrincipal.hotkey(hot: integer);

begin



ApplyHandle:=FindWindow(nil,'Tibia');//Pega o handle da janela que tem o titulo Tibia


case hot of

   1  : SendMessage(ApplyHandle,WM_KEYDOWN,VK_F1,1);

   2  : SendMessage(ApplyHandle,WM_KEYDOWN,VK_F2,1);

   3  : SendMessage(ApplyHandle,WM_KEYDOWN,VK_F3,1);

   4  : SendMessage(ApplyHandle,WM_KEYDOWN,VK_F4,1);

   5  : SendMessage(ApplyHandle,WM_KEYDOWN,VK_F5,1);

   6  : SendMessage(ApplyHandle,WM_KEYDOWN,VK_F6,1);

   7  : SendMessage(ApplyHandle,WM_KEYDOWN,VK_F7,1);

   8  : SendMessage(ApplyHandle,WM_KEYDOWN,VK_F8,1);

   9  : SendMessage(ApplyHandle,WM_KEYDOWN,VK_F9,1);

   10 : SendMessage(ApplyHandle,WM_KEYDOWN,VK_F10,1);

   11 : SendMessage(ApplyHandle,WM_KEYDOWN,VK_F11,1);

   12 : SendMessage(ApplyHandle,WM_KEYDOWN,VK_F12,1);

   13 : SendMessage(ApplyHandle,WM_KEYDOWN,VK_RETURN,1);//Uso tambem o enter para Relogar no server save, se for configurado o tempo correto ele reloga o char e continua runando


end;

Editado por hellshadow (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

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

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo