Jump to content
Sign in to follow this  
Israelks

Run e ShellExecute

Recommended Posts

Boas pessoal, eu estou com uma dificuldade aqui... to tentando abrir um jogo que esta instalado no meu pc mas to tendo problemas, usei o Run e o Shellexecute e nenhum dos dois deram certo,

 

Bom, o negocio é o seguinte, o programa abre, mas não funciona direito, (não consegue carregar o plugin do flash) achei estranho isso e dei uma olhada no que tinha de diferente entre quando eu abria o programa pelo autoit, e quando eu clicava no icone que tem na minha area de trabalho, olhando pelo gerenciador de tarefas > processos, percebi que abrindo pelo icone na area de trabalho, juntamente com o jogo, abria outros dois processos (de mesmo nome, QtWebEngineProcess), um bem na hora que abria o jogo e o outro pouco tempo depois, diferente do que acontece quando eu abro pelo autoit, que abria somente uma processo com esse nome, e abria no momento que o autoit abria o jogo, tentei abrir o programa pelo cmd usando o comando start, mas tbm abriu uma vez só esse processo e o jogo continou sem funcionar corretamente

a unica forma que eu consegui abrir o jogo sem ser clicando no icone foi pelo "executar" do windows, com ele abriu normalmente o jogo...

 

Minha pergunta é: teria uma terceira forma de abrir um programa sem ser pelo run ou shellexecute? um que simule o "executar" do windows?

Share this post


Link to post
Share on other sites


Local $iPID = Run("C:\Users\Israel\Seafight\Seafight.exe description=Play Seafight", "", @SW_SHOWMAXIMIZED)


            
        

        
            
                
                    

        
        
            
                
                    
                
            
            
            
        
    


                
            
            
                
                    
                    
                    
                
                
                    
                
            
        

        
    

    
        
            Share this post
            
            Link to post
            
            
            

            
                Share on other sites
                

    
        
            

    

        
            

    

        
            

    

        
            

    

        
            

    

        
            

    

        
            

    

        
            

    

        
            

    

        
    

            
        
    

    

                    
                
                    
                    
                    






    

    
        
            
Manimal (Adm)
              

    
        
    
             165
    
        
    

        
        
            


    
        
    

        
    
    
        
Manimal   

    
        
    
             165
    
        
    

        
        
            
                Membro Avançado
            
            
                
            

            
                


    
        
    

            
            Administradores (Adm)
            
            
                

    
        
    
             165
    
        
    

                504 posts
                
                

    
    
        LocationVideira/SC
    
    

            
        
    
    
        


    

    
        
            
                
                    Report post
                
                
                
                    
                
                
            
        

        
            Posted 
            
                
                
            
        
    

    


    
        
        
            
Olá Israelks.
 
   Não há uma terceira opção. Aliás, o Run (ou seus irmãos RunWait, RunAs e RunAsWait) fazem a mesma coisa que o Executar do Windows. Através do Start ou do Prompt de Comando tem a mesma função.
 
   E não misture Run com ShellExecute pois são conceitos diferentes.

Run é o comando do SO para executar programas
ShellExecute é para que o SO descubra qual o programa correto a ser chamado dependendo do arquivo a ser aberto

 
   Na prática não há uma maneira certa ou errada de abrir os programas, basta fazer a chamada correta.
 
   No seu post original não tem como saber seu problema, mas no seu exemplo a coisa ficou mais clara.
 
   Provavelmente sua dificuldade está não na chamada do programa mas nos seus parâmetros e na mistura disso tudo.
 
   Para facilitar, entenda que existe o programa e os parâmetros. No seu caso:

Programa = C:\Users\Israel\Seafight\Seafight.exe
Parâmetros = description=Play Seafight

 
   Então o pepino aqui é fazer com que o programa entenda corretamente os parâmetros.
 
   O ponto focal aqui é o ESPAÇO, que desde o MS-DOS é um inferno no Windows, pois tradicionalmente o ESPAÇO delimita os parâmetros e "Play Seafight" tem um espaço no meio e dependendo de como vc coloca na linha de comando não vai funcionar pois ele (o programa) deveria interpretar como 

Parâmetro 1: description=
Parâmetro 2: Play Seafight

   Porém da maneira que vc colocou no seu comando, provavelmente ele interpreta como (e aí não funciona):

Parâmetro 1: description=Play
Parâmetro 2: Seafight

 
   Para executar corretamente neste caso, minha sugestão seria:

Local $iPID = Run('C:\Users\Israel\Seafight\Seafight.exe "description=Play Seafight"', "", @SW_MAXIMIZE)
Dissecando a linha se ficou ruim de visualizar:
Usei uma aspas simples (ou apóstrofe) como delimitador da string do Run, no início e no final para diferenciar das aspas comuns que estão delimitando o parâmetro corretamente.
Provavelmente vai funcionar. Experimenta aí.
PS. Cuidado com a continuidade deste post, pois não damos suporte a automação de jogos por aqui. Se quiser fazer isso vá para o ArcadeBr.

Share this post


Link to post
Share on other sites

O programa não é de automação não, ele somente verifica se a conta está logada ou não, e para isso o programa entra na conta e atualiza as informações e depois mostra o resultado

 

Tentei seu código e também não funcionou...

 

eu também ja tentei sem o description

Local $iPID = Run('C:\Users\Israe\Seafight\Seafight.exe', "", @SW_MAXIMIZE)

também não foi...

 

eu até pensei em criar um .bat e fazer o programa rodar esse .bat e usar o cmd para abrir, mas o cmd dá o mesmo resultado que o autoit, estou bastante intrigado com isso hahaha

Share this post


Link to post
Share on other sites

Só por desencargo de consciência, cria um atalho e chama com ShellExecute. Algo como ShellExecute("C:\Users\Israel\Seafight\Seafight.lnk").

Se pah... :unsure:

Share this post


Link to post
Share on other sites
Send("#r")
Sleep(1000)
ClipPut("C:\Users\" & @UserName & "\Seafight\Seafight.exe description=Play Seafight")
Send("^v")
Sleep(100)
Send("{ENTER}")

fazendo um teste, isso ai funcionou perfeitamente...

Edited by Israelks

Share this post


Link to post
Share on other sites

Olá Israelks.

 

Ainda acho que são os parâmetros. Faça mais um teste por favor.

Local $iPID = Run('C:\Users\Israel\Seafight\Seafight.exe description="Play Seafight"', "", @SW_MAXIMIZE)

Share this post


Link to post
Share on other sites

Olá Manimal, tentei sua sugestão, mas sem sucesso, tentei outras combinações também e parece que nada funciona hahaha

Local $iPID = Run('C:\Users\Israel\Seafight\Seafight.exe" description=Play Seafight"', "", @SW_MAXIMIZE)

Local $iPID = Run('C:\Users\Israel\Seafight\Seafight.exe "description=Play Seafight"', "", @SW_MAXIMIZE)

Local $iPID = Run('C:\Users\Israel\Seafight\Seafight.exe"description=Play Seafight"', "", @SW_MAXIMIZE)

Local $iPID = Run('C:\Users\Israel\Seafight\Seafight.exe description="Play Seafight"', "", @SW_MAXIMIZE)

Local $iPID = Run('C:\Users\Israel\Seafight\Seafight.exe description=PlaySeafight"', "", @SW_MAXIMIZE)
Edited by Israelks

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this  

×