![ActiveDelphi - Índice do Fórum](templates/subSilver/images/logo_phpBB.gif) |
ActiveDelphi .: O site do programador Delphi! :.
|
Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
veHagah Novato
![Novato Novato](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/star1.gif)
Registrado: Quinta-Feira, 28 de Outubro de 2010 Mensagens: 5
|
Enviada: Qui Out 28, 2010 9:08 pm Assunto: Qual melhor maneira? |
|
|
Olá.
Gostaria de saber qual a melhor maneira de resolver isso:
Tenho um jogo que roda em 800x600 modo janela.
Ao lado dele um simples form rodando com 10 botoes..
Ao clicar no botao, ele simula a digitação no jogo..
Exemplo, tem o botao chamado "Finalizar"..
Ao clicar, ele faz algo do tipo, setar á tela do jogo, dar um enter automático (para abrir o campo de digitacao do jogo) e digita /finalizar automaticamente...
Existe algum exemplo que poderia me basear?
Ou alguma ideia que poderiam me dar..
Agradeço desde ja. |
|
Voltar ao Topo |
|
![](templates/subSilver/images/spacer.gif) |
fhcesar Aprendiz
![Aprendiz Aprendiz](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/star2.gif)
Registrado: Segunda-Feira, 25 de Outubro de 2010 Mensagens: 112
|
Enviada: Sex Out 29, 2010 1:57 pm Assunto: Re: Qual melhor maneira? |
|
|
veHagah escreveu: | Olá.
Gostaria de saber qual a melhor maneira de resolver isso:
Tenho um jogo que roda em 800x600 modo janela.
Ao lado dele um simples form rodando com 10 botoes..
Ao clicar no botao, ele simula a digitação no jogo..
Exemplo, tem o botao chamado "Finalizar"..
Ao clicar, ele faz algo do tipo, setar á tela do jogo, dar um enter automático (para abrir o campo de digitacao do jogo) e digita /finalizar automaticamente...
Existe algum exemplo que poderia me basear?
Ou alguma ideia que poderiam me dar..
Agradeço desde ja. |
O jogo é em Delphi ????
Tem um banco de dados.
Passa mais informação senão fica dificil ajudar. |
|
Voltar ao Topo |
|
![](templates/subSilver/images/spacer.gif) |
veHagah Novato
![Novato Novato](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/star1.gif)
Registrado: Quinta-Feira, 28 de Outubro de 2010 Mensagens: 5
|
Enviada: Sex Out 29, 2010 7:15 pm Assunto: |
|
|
Obrigado pela resposta..
Não, o jogo não tem nada haver com o Delphi..
É um executável que a empresa disponibiliza..
Dai no jogo existem varios comandos.. Como qualquer um..
No caso eu queria criar uma telinha a parte que tivesse 10 botoes, que ao clicar, ele fizesse por mim o seguinte procedimento:
Setar o focu ao jogo, apertar enter (abrir tela de chat) e digitar algo que ficaria engessado no delphi e apertar enter novamente para enviar..
Seria um tipo de macro.. |
|
Voltar ao Topo |
|
![](templates/subSilver/images/spacer.gif) |
Devwave Aprendiz
![Aprendiz Aprendiz](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/star2.gif)
Registrado: Segunda-Feira, 31 de Mai de 2010 Mensagens: 146
|
Enviada: Sex Out 29, 2010 10:24 pm Assunto: |
|
|
Entendi
Eu quis aprender Delphi para fazer isso hehe...
Ta um exemplo (com o jogo Tibia):
Código: | var
h: HWND;
l: Integer;
msg: String;
a: Byte;
begin
h := FindWindow(nil, 'Tibia'); //Acha a janela do Tibia
msg := 'Sell Plate Armor (500 gps)';
for l := 1 to Length(msg) do
begin
a := Byte(msg[l]);
SendMessage(h, WM_CHAR, a, 0);
end;
SendMessage(h, WM_CHAR, 13, 0);
end; |
Nesse código não foi preciso dar foco no jogo
Teh + ![Very Happy](images/smiles/icon_biggrin.gif) |
|
Voltar ao Topo |
|
![](templates/subSilver/images/spacer.gif) |
veHagah Novato
![Novato Novato](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/star1.gif)
Registrado: Quinta-Feira, 28 de Outubro de 2010 Mensagens: 5
|
Enviada: Sex Out 29, 2010 10:30 pm Assunto: |
|
|
Opaaaa, obrigadaaao ehm *-*
Vou dar uma testada, qualquer coisa posto aqui em caso de erro/duvida (:
Muiito obrigado meesmo Devwave! |
|
Voltar ao Topo |
|
![](templates/subSilver/images/spacer.gif) |
veHagah Novato
![Novato Novato](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/star1.gif)
Registrado: Quinta-Feira, 28 de Outubro de 2010 Mensagens: 5
|
Enviada: Sex Out 29, 2010 10:40 pm Assunto: |
|
|
Uma dúvida..
SendMessage(h, WM_CHAR, a, 0);
0 = Simula tecla enter, correto?
Porque não posso utilizar assim:
SendMessage(0, h, WM_CHAR, a, 0);
pois preciso que ele de um ENTER antes de digitar, e um ENTER final para enviar.. |
|
Voltar ao Topo |
|
![](templates/subSilver/images/spacer.gif) |
Devwave Aprendiz
![Aprendiz Aprendiz](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/star2.gif)
Registrado: Segunda-Feira, 31 de Mai de 2010 Mensagens: 146
|
Enviada: Sex Out 29, 2010 10:53 pm Assunto: |
|
|
Citação: | Uma dúvida..
SendMessage(h, WM_CHAR, a, 0);
0 = Simula tecla enter, correto?
Porque não posso utilizar assim:
SendMessage(0, h, WM_CHAR, a, 0);
pois preciso que ele de um ENTER antes de digitar, e um ENTER final para enviar.. |
O 0 na verdade não é nada.
O a é a tecla que você vai digitar (Enter = 13, A = 65, B = 66...).
Fazendo "a := Byte(msg[l]);" você atribui ao "a" o valor da letra a ser digitada. |
|
Voltar ao Topo |
|
![](templates/subSilver/images/spacer.gif) |
veHagah Novato
![Novato Novato](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/star1.gif)
Registrado: Quinta-Feira, 28 de Outubro de 2010 Mensagens: 5
|
Enviada: Sex Out 29, 2010 11:15 pm Assunto: |
|
|
Humm, obrigado..
Então não estaria correto fazer da seguinte forma:
Código: | var
h: HWND;
l: Integer;
msg: String;
a: Byte;
begin
h := FindWindow(nil, 'Tibia'); //Acha a janela do Tibia
msg := 'Sell Plate Armor (500 gps)';
for l := 1 to Length(msg) do
begin
a := Byte(msg[l]);
SendMessage(h, a, WM_CHAR, a, 0);
end;
SendMessage(h, 13, WM_CHAR, 13, 0);
end; |
Ou seja..
Procura a janela "Tibia", dá o enter, digita a mensagem, da outro enter..
Isso que deveria de acontecer..
Mas tá dando um erro não identificado :S
O que poderia fazer?
Obrigadao pela força até agora (; |
|
Voltar ao Topo |
|
![](templates/subSilver/images/spacer.gif) |
Devwave Aprendiz
![Aprendiz Aprendiz](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/star2.gif)
Registrado: Segunda-Feira, 31 de Mai de 2010 Mensagens: 146
|
Enviada: Sáb Out 30, 2010 7:23 am Assunto: |
|
|
Ok, vou tentar explicar melhor:
Código: | var
h: HWND;
l: Integer;
msg: String;
begin
h := FindWindow(nil, ''); //Coloque o Caption da janela do seu jogo aqui
SendMessage(h, WM_CHAR, 13, 0); //Dá um enter
msg := ''; //Coloque a mensagem a ser digitada no jogo aqui
for l := 1 to Length(msg) do
begin
SendMessage(h, WM_CHAR, Byte(msg[l]), 0); //Digita a mensagem no jogo (letra por letra)
end;
SendMessage(h, WM_CHAR, 13, 0); //Dá outro enter
end; |
Espero que entenda agora ![Very Happy](images/smiles/icon_biggrin.gif) |
|
Voltar ao Topo |
|
![](templates/subSilver/images/spacer.gif) |
gilsonnrodrigues Moderador
![Moderador Moderador](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/moderador.gif)
Registrado: Quinta-Feira, 14 de Abril de 2005 Mensagens: 9009 Localização: Governador Valadares-MG
|
Enviada: Sáb Out 30, 2010 7:40 am Assunto: |
|
|
procure tb na net sobre a API keybd_event |
|
Voltar ao Topo |
|
![](templates/subSilver/images/spacer.gif) |
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|