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

Ajuda (VB6) Teclas


Densyy

Pergunta

bom pessoal tente de tudo aqui e n consegui sou um usuario simples ainda de vb6 mais to tentando se dedicar

eu estava criando um programinha bem basico com a ajuda de um tópico aqui

estava usando esse codigo aqui

Private Sub Command1_Click()

Timer1.Enabled = True

Timer1.Interval = 1000

Timer2.Enabled = True

Timer2.Interval = 10

End Sub

Private Sub Timer1_Timer()

On Error Resume Next

SendKeys "{X}"

End Sub

Private Sub Timer2_Timer()

On Error Resume Next

SendKeys "{UP}"

End Sub

só pra vocês terem uma ideia

eu jogo um jogo chamado mini fighters

e gostaria de calcurar o tempo de um movimento pra me facilitar

usar um golpe

mais o problema é que n consigo fazer esse programa rodar com o jogo aberto

quando eu abro o jogo da erro no programa

n sei o que fazer !! preciso urgente disso

e gostaria tambem de segurar a tecla "X"

invés de ficar apertando um monte de vezes

conto com a ajuda de todos

espero n ter desrespeitado regras sou novo ainda

Link para o comentário
Compartilhar em outros sites

15 respostass a esta questão

Posts Recomendados

  • 0

Densyy,

Não conheço uma solução pronta para sua situação.

Contudo, posso lhe dar algumas dicas.

Primeira coisa que seu programa poderia fazer é simplesmente validar se o jogo esta executando e depois fazer uso do comando SendKeys/Timer.

Até momento, não sei como identificar a tela que esta sendo exibindo determinada parte do jogo e quando começa a enviar comandos.

De uma olhada neste link que demonstra a utilização do SendKeys

VB6 SendKeys List

Link para o comentário
Compartilhar em outros sites

  • 0

Eu tentei de tudo mais n deu certo

já li essa tabela de Keys tentei com todas as teclas e ta dando o mesmo erro

esse erro só ocorre quando eu ligo o timer e clico dentro do programa

se eu só ligar o timer e abrir o bloco de notas n da erro e funciona perfeitamente

somente dentro do jogo

esta ocorrendo este erro

Run-time error '70':

Permission Denied

Acho q o jogo que não da permissão para softwares externos

intão o que eu faço?

Link para o comentário
Compartilhar em outros sites

  • 0

Pesquisei bastante em varios topicos gringos com esse problema

n intendi muito bem

mais vi um kara dizendo para:

"Desative a opção Ativar Verificação de Autorização para o componente. Isto pode ser feito no MTS Explorer abrindo a janela Propriedades para o componente e desmarque a opção Ativar Verificação de Autorização na guia Segurança. Esta não é uma opção viável em um ambiente de produção, ou quando o teste de segurança definido para o componente MTS.

Atribuir o ID do Windows NT do usuário que está sendo usado para lançar o objeto MTS da aplicação Visual Basic para um dos papéis autorizada a invocar os métodos do objeto MTS. "

Mais n intendi muito bem

o como eu abro essa janela para desativar essa opção??

Link para o comentário
Compartilhar em outros sites

  • 0

Densyy,

Penso que você esteja certa o problema e de permissão. Lendo sobre o problema no link PROBLEMA: "Erro de Runtime 70: permissão negada" lembrei que já tive esse problema.

Para resolver utilizei um utilitário de terceiro (CPAU.exe) que até hoje funciona muito bem. Onde posso informar usuário/senha com privilégio de administrador para executar determinado aplicativo.

Segue abaixo o link :

Registrar DLL/OCX pelo VB, Registrar DLL/OCX pelo VB utilizando função ShellExecute

Você poderia utilizar essa ferramenta para executar o seu programa informando um usuário/senha. Possívelmente, o erro não ocorrerá mais.

Editado por Cleiton Aparecido Crispim
Link para o comentário
Compartilhar em outros sites

  • 0

Intendi mais ou menos

mais como eu disse sou novato ainda em vb

você poderia me explicaro que eu preciso fazer?

esse utilitário de terceiro (CPAU.exe)

é algum programa externo que devo baixar?

e essa pagina qe você mandou "Registrar DLL/OCX pelo VB, Registrar DLL/OCX pelo VB utilizando função ShellExecute"

Não intendi muito bem o conteudo dela

mais eu estou achando q o problema e que o jogo n me deixa usar o programa

acho q o problema é mais complicado

Link para o comentário
Compartilhar em outros sites

  • 0

Densyy,

Seguinte, verificando o seu projeto encontrei algumas situações que pode levar ocorrer vários erros. Veja abaixo alguns pontos que penso que esta faltando no seu programa.

1 - É necessário identificar se determinado programa esta executando - no caso o seu jogo.

Isso porque ao executar o seu programa e após informar os parâmetros da tela já começa a preencher com "X" onde for possível e isso irá causar erros. Ele pode informar "X" na tela do MSN, bloco de notas, Word etc. Sendo que ele só ira informar as teclas quando seu jogo estiver executando.

2 - É necessário identificar se a tela do programa esta ativa - no caso a tela do jogo.

Isso para que você execute o sendkeys somente no jogo.

Estou validando essas situações acima. O que você acha?

Editado por Cleiton Aparecido Crispim
Link para o comentário
Compartilhar em outros sites

  • 0

Densyy,

Fiz algumas alterações para validar se o programa esta em execução e se a tela do programa esta ativa.

Como exemplo utilizei o Word.

Para testar no seu caso troque no código "winword.exe" pelo nome do seu jogo (que aparece no gerenciador de tarefas) e

"Documento1 - Microsoft Word" pelo nome da tela do jogo.

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Declare Function GetForegroundWindow Lib "user32" () As Long
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long

Private esta_na_tela_do_jogo As Boolean



Private Sub Command_Click()
    'GetClassNameFromTitle
'    VerificaTelaAtiva
End Sub

Private Sub Command1_Click()
    Timer1.Enabled = False
    Timer2.Enabled = False
    Label4.Caption = "Desativado"
    MsgBox "Função Desativada"
End Sub

Private Sub Command3_Click()
    If Text1.Text = "" Then
        MsgBox "Determine o Tempo 1 "
    Else
        If Text2.Text = "" Then
            MsgBox "Determine o Tempo 2 "
        Else
            If Text3.Text = "" Then
                MsgBox "Determine o Atraso"
            Else
                Timer1.Enabled = True
                Timer1.Interval = Text1.Text
                Sleep Text3.Text
                Timer2.Enabled = True
                Timer2.Interval = Text2.Text
                Label4.Caption = " Ativado"
                MsgBox "Função Ativada"
            End If
        End If
    End If
End Sub

Private Sub Form_Load()
    TimerTelaAtiva.Interval = 10
End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)
    Select Case KeyAscii
        Case vbKey0 To vbKey9
        Case vbKeyBack, vbKeyClear, vbKeyDelete
        Case vbKeyLeft, vbKeyRight, vbKeyUp, vbKeyDown, vbKeyTab
        Case Else
            KeyAscii = 0
            Beep
    End Select
End Sub

Private Sub Text2_KeyPress(KeyAscii As Integer)
    Select Case KeyAscii
        Case vbKey0 To vbKey9
        Case vbKeyBack, vbKeyClear, vbKeyDelete
        Case vbKeyLeft, vbKeyRight, vbKeyUp, vbKeyDown, vbKeyTab
        Case Else
            KeyAscii = 0
            Beep
    End Select
End Sub

Private Sub Text3_KeyPress(KeyAscii As Integer)
    Select Case KeyAscii
        Case vbKey0 To vbKey9
        Case vbKeyBack, vbKeyClear, vbKeyDelete
        Case vbKeyLeft, vbKeyRight, vbKeyUp, vbKeyDown, vbKeyTab
        Case Else
            KeyAscii = 0
            Beep
    End Select
End Sub

Private Sub Timer1_Timer()

    ' Verifica se o jogo esta aberto
    If ProgramaAberto("winword.exe") Then
    
        If esta_na_tela_do_jogo Then _
            SendKeys ("{UP}")
        
        
    End If

End Sub

Private Sub Timer2_Timer()
    ' Verifica se o jogo esta aberto
    If ProgramaAberto("winword.exe") Then
    
        
        If esta_na_tela_do_jogo Then _
            SendKeys ("{X}")
        
        
    End If
End Sub

Private Sub TimerTelaAtiva_Timer()
    
    
    Static lHwnd As Long
    Dim lCurHwnd As Long
    Dim sText As String * 255
    '
    lCurHwnd = GetForegroundWindow
    If lCurHwnd = lHwnd Then Exit Sub
    lHwnd = lCurHwnd
    
'    If lHwnd <> hwnd Then
'        Caption = "Janela Ativa: " & Left$(sText, GetWindowText(lHwnd, ByVal sText, 255))
'    Else
'        Caption = "Janela Ativa : Form1"
'    End If
    estanateladojogo = "Documento1 - Microsoft Word" = Left$(sText, GetWindowText(lHwnd, ByVal sText, 255))
End Sub

Public Function ProgramaAberto(strNomedoPrograma As String) As Boolean

    On Error Resume Next        ' Não retornará erro.

    Dim oWMI
    Dim ret
    Dim oServices
    Dim oService
    Dim servicename

    ProgramaAberto = False

    Set oWMI = GetObject("winmgmts:")
    Set oServices = oWMI.InstancesOf("win32_process")

    For Each oService In oServices
        servicename = LCase(Trim(CStr(oService.Name) & ""))

        If InStr(1, servicename, LCase(strNomedoPrograma), vbTextCompare) > 0 Then
            ProgramaAberto = True
        End If

    Next

    Set oServices = Nothing
    Set oWMI = Nothing

    Exit Function

End Function

segue os link que utilizei como base para implementar as alterações.

Activate Any Window With API

Descobrindo a janela ativa na área de Trabalho.

Link para o comentário
Compartilhar em outros sites

  • 0

Kara vlw mesmo pela ajuda

o Erro parou de ocorrer

mais eu notei que quando o jogo inicializa

o Processo fica oculto

Ele some do Gerenciador

Mais parou de dar erro

eu coloquei o Processo que estava antes de iniciar o jogo que era

Client.exe

e o nome eu troquei por

Mini Fighters

que é o nome em que aparece na tela

Intão tem outra saida?

Link para o comentário
Compartilhar em outros sites

  • 0

Densyy,

No gerenciador de tarefas do windows caso não apareça o nome do jogo na aba "Aplicativos" verifique a aba "Processos".

Caso não apareça na aba "Processos" não conheço até momento outro modo de identificar a execução.

Em relação ao nome seria o contrário. Você colocaria o nome que aparece na aba "Processos".

Não conheço esse jogo Mini Fighters. Ele seria pago? Tem versão gratuita?

Link para o comentário
Compartilhar em outros sites

  • 0

Densyy,

Pode acontecer o seguinte ao iniciar o jogo o processo Client.exe pode ser finalizado e iniciado outro processo.

Com isso teria de validar o que aparece na guia processo do gerenciador de tarefas.

001.JPG

Sobre o jogo, sendo "gratuito", poderia instalar ele só para validar o código. Mas, no momento não tem como, falta tempo.

Link para o comentário
Compartilhar em outros sites

  • 0

Bem complicado intão deixa pra la

to com outra ideia

tipo sobre esse jogo ainda

é dificil criar um hack ou algo do tipo

exemplo: alterar uma .dll

modificar algumas coisas

ou conhece algum programa q faça isso?

tentei cheat engine mais ele sempre detecta

por que tem Game Guard

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...