USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Executar outros programas apartir do VB
Túlio
não registrado
Postada em 10/02/2005 11:30 hs   
Pessoal,
 
Estou usando a função Shell do VB para executar outro executavel... na verdade, utilizo 4 comandos Shell um debaixo do outro... acontece q qdo rodo o programa ele abre os 4 programas de uma vez (juntos)... gostaria que o 2º programa só fosse aberto assim q o usuario fechasse o 1ª e assim sucessivamente... a função shell me retorna um double mas falando se foi executado com sucesso ou não o comando... tem como saber c o usuario fechou/encerrou o programa para que possa executar o outro shell?
 
aguardo ajudas...
 
Obrigado
 
Túlio
     
Túlio
não registrado
Postada em 10/02/2005 12:25 hs   
Pessoal, isso é complicado? sera q nao tem alguem API, ou ACtiveX.. que possa retornar se o programa esta ainda na memoria ou nao? Alguém tb já ouviu falar de threads? isso pode me ajudar!!! Me dêem uma força galera!!!
     
:: Renato ::
Pontos: 2843
SÃO PAULO
SP - BRASIL
Postada em 10/02/2005 14:14 hs         
eu sei mexer com Thread no .Net... se quiser te mostro como...
 
para resolver seu problema no vb 6, vc pode fazer uma gambiarra, desde que o outro executavel foi vc que fez também...
é seu o outro executavel que vc chama com o shell??
 
t+
 
Renato
     
kerplunk
Pontos: 2843 Pontos: 2843 Pontos: 2843
SÃO PAULO
SP - BRASIL
Postada em 10/02/2005 15:30 hs         

Coloque isso em um módulo:

Public Const WAIT_FAILED = &HFFFFFFFF
Public Const WAIT_OBJECT_0 = &H0&
Public Const WAIT_ABANDONED = &H80&
Public Const WAIT_TIMEOUT = &H102&
Public Const STANDARD_RIGHTS_ALL = &H1F0000
Public Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Public Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Public IDProcesso As Long
Public Processo As Long
Public RetornoProcesso As Long

Para chamar o executável

      IDProcesso = Shell("c:windowscalc.exe", vbNormalFocus)
      Processo = OpenProcess(STANDARD_RIGHTS_ALL, False, IDProcesso)

agora coloque isso num timer com o intervalo setado para 40(40 mesmo, não 40 segundos) 

   RetornoProcesso = WaitForSingleObject(Processo, 10)    

   Select Case RetornoProcesso
       Case WAIT_TIMEOUT   
             DoEvents              

       Case WAIT_FAILED Or WAIT_ABANDONED
            Exit Sub
       Case WAIT_OBJECT_0

            MsgBox "Programa foi fechado"           

            Call CloseHandle(Processo)     'Close the process handle
            Call CloseHandle(IDProcesso)    'Close the process id handle

            Exit Sub
   End Select
  
   DoEvents      

 
     
Página(s): 1/1    


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



CyberWEB Network Ltda.    © Copyright 2000-2025   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página