Página 1 de 1
Aplicativo para colocar ENTER no buffer do Windows?
Enviado: 12 Jun 2012 18:49
por ANDRIL
Pessoal estou chamando um EXE de dentro do meu programa. Funciona normalmente. O executavel que é aberto, antes de entrar, me da 2 opções com 2 botoes (é GUI) <Update> <Cancelar>. O foco do botão já fica no <Cancelar> então é necessário teclar ENTER para fechar este dialogo e seguir com a rotina do executavel. O que preciso é um aplicativo para que coloque um ENTER este programa que é aberto ou no keyboard do Windows para simular um acinamento manual do ENTER.
Tentei usar a Wapi via linha de comando com -KILLAPPLICATION: NOMEDOEXECUTAVEL, e fecha nao so a janela ativa mais o executavel que esta atras dela tambem. Se o WAPI tivesse um esquema de usar o HANDLE e ao invez de fechar, ter um parametro de keyboard seria ideal (tipo passar ENTER ou ESC para um sistema pelo HANDLE), so que procurei na documentação e nos fontes da Wapi e não encontrei nada. Será que alguem conhece um aplicativo via linha de comando que aceite isso, não pode ser GUI porque meus sistemas estão em modo texto (Clipper 5.2e)
Abraços.
Aplicativo para colocar ENTER no buffer do Windows?
Enviado: 12 Jun 2012 19:18
por Pablo César
a Wapi via linha de comando com -KILLAPPLICATION: NOMEDOEXECUTAVEL, e fecha nao so a janela ativa mais o executavel que esta atras dela tambem
Mas se você utilizar switch -KILLAPPLICATION você terá que informar o handle desse executável. O handle desse executável você pode indentificá-lo através do switch -GETAPPSINFO:<arquivo> onde listará todos os executáveis que estão sendo executados.
Aplicativo para colocar ENTER no buffer do Windows?
Enviado: 12 Jun 2012 19:31
por ANDRIL
Olá Pablo. Então eu usei o Handle retornado por GETAPPSINFO e funcionou beleza, porem não serviu ao meu propósito porque fecha o aplicativo inteiro, mesmo que na GETAPPSINFO me retorno 2 handles um para o EXE rodando ao fundo e outro para a janela em foco, se mando "matar" a janela fecha tambem o executável acho que deva ser porque é um dialog e filho da janela principal.
Ate+
Aplicativo para colocar ENTER no buffer do Windows?
Enviado: 12 Jun 2012 19:53
por Pablo César
Aqui achei algo interessate, mas não creio que dê pra você usar, mas pelo menos se quiser basear-se na linguagem C e fazer alguns testes, vale a pena conhecer:
http://www.codeproject.com/Articles/6819/SendKeys-in-C
Aplicativo para colocar ENTER no buffer do Windows?
Enviado: 12 Jun 2012 19:54
por Pablo César
acho que deva ser porque é um dialog e filho da janela principal
Não, creio. Vou fazer um teste e retorno.
Aplicativo para colocar ENTER no buffer do Windows?
Enviado: 12 Jun 2012 20:10
por ANDRIL
Pablo, vi o codigo em C++, aqui não tenho esta linguagem, mais tenho C# amanhã vou procurar para ver se acho algo. Agora no texto do site diz keybd_event(VK_TAB, 0, 0, 0) e na HWGUI temos o keyb_event(VK_RETURN,.T.) será que tem como buscar um handle pela HWGUI e nesta funcao, passar o handle junto com o evento?
Obrigado pela ajuda.
Aplicativo para colocar ENTER no buffer do Windows?
Enviado: 12 Jun 2012 20:49
por Pablo César
Acredito que para interagir com uma aplicação externa como você quer, você deverá utilizar o SendMessage.
na HWGUI temos o keyb_event(VK_RETURN,.T.)
Pois é... pode ser que seja possível, de qualquer forma vai ter obter o handle da aplicação GUI e manter o foco para poder enviar o "Enter" na sessão da aplicativo/GUI.
Mas eu fiz teste com o WAPI e funcionou, lembre que o WAPI.EXE deve estar no mesmo diretório. Anexei o meu exemplo para que você veja que é possivel. Outra coisa, observe que do primeiro RUN tem um INKEY(3), para aguardar que carregue o primeiro executável, assim aparece na lista de executáveis. Talvez tenha sido esse a falha do seu teste com WAPI.
Aplicativo para colocar ENTER no buffer do Windows?
Enviado: 13 Jun 2012 00:39
por ANDRIL
Pablo César escreveu:Mas eu fiz teste com o WAPI e funcionou
Pablo obrigado pelo seu teste, mais ja havia feito este teste mesmo esperando mais de 3 "minutos" rs, acaba fechando o aplicativo inteiro, mesmo que o ID seja separado. So para voce ver, o PDFCREATOR ele ao ser chamado verifica se ha atualização exindo uma janela com 2 botões. Não sei se voce usa, se usar faça um teste com ele e verá o que ocorre. Eu espero aparecer a mensagem, ai abro o prompt e atraves da Wapi executo o GETAPPSINFO obtenho o ID da mensagem e uso o KILLAPPLICATION:ID ao invez de fechar so a mensagem, o PDFCREATOR fecha inteiro.
Abraços, vou durmir...
Aplicativo para colocar ENTER no buffer do Windows?
Enviado: 13 Jun 2012 10:22
por Pablo César
ja havia feito este teste mesmo esperando mais de 3 "minutos" rs, acaba fechando o aplicativo inteiro
Desculpa Anderson, mas não pode ser ! Agora estou sem tempo, mas quando eu volte à tarde vou testar com esse PDFCREATOR que você diz. Mas o coneito é igual para todos. Você deve estar fazendo algo errado, talvez a sequência dessa espera e a listagem dos exes, pois se o exemplo que postei dá certo, tem que dar em todos. Eu seu que está cansado e nessa hora as vezes não notamos pequenos detalhes, mas você notou como estou chamando através do RUN ? CMD e START juntos. Reveja !
Aplicativo para colocar ENTER no buffer do Windows?
Enviado: 13 Jun 2012 11:48
por ANDRIL
Pablo César escreveu:mas você notou como estou chamando através do RUN ? CMD e START juntos. Reveja !
No caso do PDFCREATOR eu nao estou chamando ele de dentro do programa não. Ele esta rodando em background. Eu mando uma impressão geralmente a primeira do dia, ele ve se tem atualização e me exibe o aviso.
Quando se usa o CMD /C junto com START cria-se um nova instancia, entao pode haver varias e assim atraves do handle voce pode fechar cada uma. No meu caso, ha um aplicativo rodando que emite um aviso (como disso o estranho é que ha 2 handles) se escolho o do aviso, fecha o aplicativo, o que não deveria ocorrer certo?
Mais não esquenta, vou mudar de plano A->B, rs. Acabei vendo que seria muito trabalhoso este processo vou partir para outra solução.
Obrigado pela ajuda.
Abraços.