Ir para conteúdo
Fórum Script Brasil
  • 0

Ajuda com sendkeys


HighBass

Pergunta

ola, gostaria de uma ajuda.

Tenho um programa na area de trabalho que tem as teclas de atalho CTRL+ALT+A

Uso o VB 6 com windows XP

E preciso que nessa rotina quando eu clicar no botao do formulario, esse programa se abra, utilizando as teclas de atalho, ou seja, CTRL+ALT+A

já tentei com:

SendKeys "^%(A)"

e simplesmente não acontece nada, como posso fazer isso??

Obrigado.

Link para o comentário
Compartilhar em outros sites

24 respostass a esta questão

Posts Recomendados

  • 0

Este programa só pode ser aberto atravéz da teclas "CTRL+ALT+A" ? Tenta descobrir qual o nome do arquivo e a sua localização e chame ele diretamente pelo nome pelo VB.Se não souber como chamar um arquivo em VB avisa ai.

Link para o comentário
Compartilhar em outros sites

  • 0

Olha so:

Tenho um programa com um icone na area de trabalho que tem as teclas de atalho "CTRL + ALT + A".

So que eu preciso criar uma maneira de chamar esse programa dentro de um outro programa em VB, (ao qual eu estou desenvolvendo), já utilizei tb o comando shell, porem o programa não abre por bug dele mesmo, e não tenho o codigo desse programa.

então pensei em utilizar as teclas de atalho do icone deste programa dentro do VB utilizando o sendkeys, porem não consigo abrir, simplesmente não acontece nada.

Me ajudem pois não sei mais onde buscar ajuda.

obrigado

Link para o comentário
Compartilhar em outros sites

  • 0

Então você precisa usar uma API do Windows. O sendkeys não resolve. Infelizmente eu não achei nada parecido com o seu problema para facilitar, mas uma tentativa que você pode fazer é usar a API SendMessage do Windows. O exemplo mais parecido que achei foi este site: http://www.xtremevbtalk.com/showthread.php?t=92526.

Para dar certo você vai precisar saber o nome da janela do aplicativo que você vai chamar.Se eu tivesse mais tempo eu tentava ver se o exemplo da certo para você, mas hoje estou meio enrolado.Tenta ver o que você consegue.

Link para o comentário
Compartilhar em outros sites

  • 0

Ola so, já tentei de tudo e não deu certo.

Porem estou com outra ideia agora...

Estou abrindo um arquivo .bat pelo VB, e nesse arquivo BAT tem um path de um arquivo executavel.

Esse arquivo executavel tem uma tela de login onde eu preciso passar o usuario e a senha e clicar em um botao OK, cujo atalho é ALT+O.

Gostaria de passar esse usuario e senha por programaçao para que assim quando eu executar esse programa e tb logo em seguida estar clicando no botao OK.

Como faço isso atraves do sendkeys, pois eu não estou conseguindo.

Obrigado.

Link para o comentário
Compartilhar em outros sites

  • 0

Estou fazendo de um outro jeito, porem, agora estou com um outro problema.

Estou abrindo pelo VB um outro aplicativo e nesse aplicativo tem uma tela de menu, onde a tecla F1 chama outra tela, estou usando sendkeys da seguinte forma:

SendKeys "{F1}", False

so que não esta acontecendo nada, alguém saberia me dizer onde esta o erro???

Eu tenho que jogar o foco para o VB novamente ou pode sempre permanecer no programa aberto??

No caso, somente a tecla F1 que não funciona, se eu colocar qualquer outra tecla funciona normalmente

Obrigado.

Editado por HighBass
Link para o comentário
Compartilhar em outros sites

  • 0

A situaçao agora é outra.

Tenho um programa que abre outro programa, e tem uma tela de menus em que não se da para mover pela tecla TAB, somente pelo mouse ou com as teclas F1..F5

Nessa tela tem um menu de opçoes onde preciso clicar nele com o mouse ou apertar a tecla F1

Porem, preciso enviar um sendkeys para o atalho que é com a tecla F1, e não consigo, não faz nada.

alguém sabe me dizer o que fazer?

obrigado mais uma vez.

Link para o comentário
Compartilhar em outros sites

  • 0

como assim?? não entendi??

nas outras telas que tem menus, a tecla TAB funciona e assim eu consegui fazer com que funcionasse o sendkeys enviando a tecla TAB, porem nesta ultima tela do programa que o VB abre, não funciona a tecla TAB, por isso não consigo fazer o sendkeys funcionar, preciso nessa ultima tela simular o pressionamento da tecla F1, e é essa a pedra no meu sapato, se souber de algum codigo ou logica podem passar ok, obrigado.

Link para o comentário
Compartilhar em outros sites

  • 0

mas tipo assim, você abre o programa e imediatamente já da o sendkeys??

ou você abre e depois de a janela estar aberta, você espera o usuario clicar em um botao ou coisa assim pra fazer o sendkeys??

porque se o usuario clicar em um botao ou coisa assim, a janela perde o foco e ai você precisaria do SetForegroundWindow como eu disse.

mas de teste tente fazer o sendkeys de qualquer otra coisa. faca um tab pra ver se não acontece nd, ou de algum caracter q você possa ver alguma reposta no outro programa, pra gente ver se ele recebe sendkeys de outras coisas.

Editado por kuroi
Link para o comentário
Compartilhar em outros sites

  • 0

O programa abre, e depois é enviado os sendkeys, estao funcionando, so que na ultima tela tem menus que so funciona se eu clicar com o mouse ou presisonar as teclas de atallho vai de F1..F5, nessa tela não da pra navegar com a tecla TAB.

Nessa tela é que não vai o F1, para poder abrir a ultima tela entendeu. E ai eu já não sei como prosseguir, pois preciso abrir essa ultima tela e quem desenvolveu esse programa não tem como me ajudar.

Nessa ultima tela o cursor para em um campo texto para digitar um numero (o que não é o meu caso), eu preciso prosseguir com F1, porem, como eu disse antes, não consigo tirar o foco do campo texto porque a tecla TAB não funciona nesta tela, apenas clicando com o mouse ou digitando o F1

Editado por HighBass
Link para o comentário
Compartilhar em outros sites

  • 0

já tentei substituir o F1 por outra tecla, porem não faz nada, o problema é que quando o foco esta no programa é como se não existisse outra tecla de atalho a não ser os F1...F5

o codigo esta logo abaixo:

Private Sub Timer1_Timer()
    
    Select Case I
        'digita o usuario "adm"
        Case 0
        SendKeys "adm"
        I = I + 1
        
        
        'clica no botao OK
        Case 1
        SendKeys "{ENTER}"
        I = I + 1
        
        
        'como o foco já esta em F1, então pressiona Enter
        Case 2
        SendKeys "{ENTER}"
        I = I + 1
        
        
        'muda o foco para F1 com TAB e pressiona Enter
        Case 3
        SendKeys "{TAB}"
        SendKeys "{ENTER}"
        I = I + 1
        
        
        'envia o cpf/cnpj para a caixa de texto do programa e pressiona Enter
        Case 4
        SendKeys CPF_CNPJ
        SendKeys "{ENTER}"
        I = I + 1
        
        
                'ATE AQUI FEZ TUDO CERTINHO
    'DAQUI PRA FRENTE não FUNCIONA MAIS
    
    'aqui precisa abrir outra tela, porem não faz nada
        Case 5
        SendKeys "{F1}"
        I = I + 1
        
        
        
        Case 6
        End
        
    End Select
    
End Sub

Link para o comentário
Compartilhar em outros sites

  • 0

highbass, depois daquele enter, ele abre uma nova janela no outro programa, certo??

então, acho q é como eu tava dizendo, você não tem o foco da janela q deve receber as teclas, por isso não funciona.

ai entra o SetForegroundWindow como eu tava dizendo, olha la o tópico q eu passei.

você vai ter q implementear juntamente com o FindWindow. espero q o texto da janela q você precisa passar o sendkeys seja sempre o mesmo...

so q implementar esse FindWindow tb é um poco chato... em vez disso, você pudia tb tentar usar o Alt + TAB pra dar o foco no seu programa. tipo assim:

SendKeys "%{TAB}"

mas isso ai é uma gde gambiarra q so vai funcionar se você tiver certeza q o usuario não esta usando outros programas ao mesmo tempo, senao, você pode se perder nas janelas e ai já era.

Link para o comentário
Compartilhar em outros sites

  • 0

tem razao, não deveria perder o foco.

so não entendi o q você quis dizer com isso aqui:

o problema é que quando o foco esta no programa é como se não existisse outra tecla de atalho a não ser os F1...F5

e quanto a essa parte aqui:

já tentei substituir o F1 por outra tecla, porem não faz nada

você quis dizer q o sendkeys não funciona, ou ele funciona mas não serve pra fazer o q você quer??

Link para o comentário
Compartilhar em outros sites

  • 0

As unicas teclas que eu tenho para poder fazer alguma coisa no programa são as F1 ate F5, porem, o TAB não funciona para navegar entra as opçoes, somente posso fazer algo ou clicando ou pressionando as teclas F1

O sendkeys não faz nada, não da erro e tb não faz o que deveria fazer entendeu que é enviar a tecla F1 como se fosse um presisonamento de teclas

Link para o comentário
Compartilhar em outros sites

  • 0

Descobri uma coisa nova...

Na penultima tela que da pra navegar com o TAB, tb a tecla F1 serve como atalho, porem o F1 não funciona com o sendkeys, consigo somente atraves do TAB e quando chega no foco dou enter.

Na ultima tela é que ta dando dor de cabeça, porque não consigo nem navegar com a tecla TAB.

O que acontece com o F1 que não funciona???

Link para o comentário
Compartilhar em outros sites

  • 0

estranho, aqui funciona normal, por exemplo:

Shell "notepad", vbNormalFocus
SendKeys "{F1}"[/code]

ele chama a ajuda do bloco de notas.

quanto tempo ta esse seu timer??

sera q ele não ta rapido demais?? ai entre o enter anterior e o f1 não taria dando tempo de carregar a proxima tela e por isso você não ta tendo resposta??

EDITADO:

pensando agora, se o F1 não funciona na tela anterior, o timer não tem nd a ver ne...

mas então... sera q não é alguma coisa no seu programa q ta bloqueando o F1??

experimenta abrir um vbp novo em branco e poe somente o codigo de abrir o outro programa e o sendkeys pra ver se o f1 vai funcionar.

se não funcionar, teste então aquele codigo do notepad q passei acima, porque pelo menos aquele tem q funcionar.

Editado por kuroi
Link para o comentário
Compartilhar em outros sites

  • 0
teste

Shell "notepad", vbNormalFocus
SendKeys "{F1}"[/code]

e funcionou beleza, mas no meu programa não sei o que acontece.

esse teste funcionou num novo vbp ou no programa q você já estava desenvolvendo??

experimenta abrir um vbp novo em branco e poe somente o codigo de abrir o outro programa e o sendkeys pra ver se o f1 vai funcionar.

esse teste aqui você tentou??

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

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

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...