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

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  abrir form e fechar depois de 10 segundos
DJ Dan Rebello
PRAIA GRANDE
SP - BRASIL
ENUNCIADA !
Postada em 20/08/2008 21:11 hs            
Olá !
 
Estou desenvolvendo um programa que em determinado momento chama um comando de prompt atraves do procedimento shell, mais ou menos assim...
 
form2.show
shell "nome_do_comando.exe", VBHide
form2.hide
 
acontece que o form2 fecha antes de terminar a execução do comando chamado pelo shell (o que leva aproximadamente 10 segundos) ele abre e fecha tão rápido que simplesmente o form2 não tem tempo de ser visto, dando a impressão que nem apareceu.
 
gostaria de fazer uma rotina que detectasse o termino do programa chamado pelo shell e só depois fechasse  o form2. Se isso não for possivel pelo menos que fechasse somente após 10 segundos aproximadamente, já que é este o tempo que o programa chamado pelo shell demora para ser executado.
 
Por favor, gostaria que fosse postado um exemplo pois tenho pouco conhecimento em vb
 
obrigado

Galera, tenho pouquissímos conhecimentos em VB. Por isso peço que postem as respostas COM EXEMPLOS PRÁTICOS DAS ROTINAS ACONPANHADOS DE COMENTÁRIOS, SEMPRE QUE POSSÍVEL. Por esse motivo tb, peço desculpas por não poder responder muitas mensagens do fórum!
Grato a todos!!!
   
Treze
não registrado
ENUNCIADA !
Postada em 20/08/2008 21:13 hs   
Veja esta dica se te ajuda
 
Quando você executa um programa externo ao seu aplicativo VB usando o comando Shell , é interessante que o seu programa VB saiba quando a aplicação executada foi encerrada ou terminou.  Vamos mostrar como fazer isto.

1-) Inicie um novo projeto no VB e inclua um módulo no seu projeto. A inclua o seguinte código no módulo:

Public Type STARTUPINFO
cb As Long
lpReserved As String
lpDesktop As String
lpTitle As String
dwX As Long
dwY As Long
dwXSize As Long
dwYSize As Long
dwXCountChars As Long
dwYCountChars As Long
dwFillAttribute As Long
dwFlags As Long
wShowWindow As Integer
cbReserved2 As Integer
lpReserved2 As Long
hStdInput As Long
hStdOutput As Long
hStdError As Long
End Type

Public Type PROCESS_INFORMATION
hProcess As Long
hThread As Long
dwProcessID As Long
dwThreadID As Long
End Type

Public Declare Function WaitForSingleObject Lib _
"kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds _
As Long) As Long

Declare Function CreateProcessA Lib "kernel32" _
(ByVal lpApplicationName As Long, ByVal lpCommandLine As _
String, ByVal lpProcessAttributes As Long, ByVal _
lpThreadAttributes As Long, ByVal bInheritHandles As Long, _
ByVal dwCreationFlags As Long, ByVal lpEnvironment As Long, _
ByVal lpCurrentDirectory As Long, lpStartupInfo As _
STARTUPINFO, lpProcessInformation As PROCESS_INFORMATION) _
As Long

Declare Function CloseHandle Lib "kernel32" (ByVal hObject _
As Long) As Long

Public Const NORMAL_PRIORITY_CLASS = &H20&
Public Const INFINITE = -1&

2-) A seguir insira o seguinte código no formulário padrão:

Public Sub ExecCmd(cmdline$)
Dim proc As PROCESS_INFORMATION
Dim start As STARTUPINFO

'Inicia a strutura STARTUPINFO
start.cb = Len(start)

'Inicia a aplicação escolhida para ser executada
ret& = CreateProcessA(0&, cmdline$, 0&, 0&, 1&, _
NORMAL_PRIORITY_CLASS, 0&, 0&, start, proc)

'Aguarda a aplicação iniciada terminar
ret& = WaitForSingleObject(proc.hProcess, INFINITE)
ret& = CloseHandle(proc.hProcess)
End Sub

3-) Agora adicione um botão de comando - command1 - ao formulário e no evento click do botão digite o seguinte código:

Private Sub Command1_Click()


MsgBox "Vou iniciar o Notepad"

Call ExecCmd("c:windowsotepad.exe")

MsgBox "O Notepad foi encerrado"

End Sub

O código acima irá executar o programa Bloco de notas ( NotePad.exe ) passando as informações para a sua aplicação quando for encerrado. Você executa o programa através da função ExecCmd informando o nome e local do aplicativo que quer executar...

   
DJ Dan Rebello
PRAIA GRANDE
SP - BRASIL
ENUNCIADA !
Postada em 20/08/2008 21:25 hs            
Puxa ! muito obrigado mesmo !
 
Valeu !!!

Galera, tenho pouquissímos conhecimentos em VB. Por isso peço que postem as respostas COM EXEMPLOS PRÁTICOS DAS ROTINAS ACONPANHADOS DE COMENTÁRIOS, SEMPRE QUE POSSÍVEL. Por esse motivo tb, peço desculpas por não poder responder muitas mensagens do fórum!
Grato a todos!!!
   
DJ Dan Rebello
PRAIA GRANDE
SP - BRASIL
ENUNCIADA !
Postada em 20/08/2008 22:19 hs            
só tem um pequeno probleminha...
 
como no meu caso o programa chamado é um comando de prompt (o wtm32.exe /resync) que sincroniza o relógio do sistema com o servidor da microsoft eu gostaria que ele rodasse "escondidinho", transparente ao usuario...
 
acontece que quando chamo a sub execcmd("C:windowssystem32wtm32.exe /resync") para execurar o programa, abrese uma enorme janela de prompt, e eu gostaria que a janela simplesmente não aparecesse...por isso é que usava o "vbHide" no comando shell.
 
sei que existem outras formas muito mais profissionais de sincronizar o relógio do sistema mas essa é a única que eu testei que NUNCA FALHA MESMO !!!
 
por isso gostaria de uma dica para que o comando de prompt rodasse em "Hide" quando chamada a sub ExecCmd
 
Agradeço se vc puder ajudar mais uma vez amigo !

Galera, tenho pouquissímos conhecimentos em VB. Por isso peço que postem as respostas COM EXEMPLOS PRÁTICOS DAS ROTINAS ACONPANHADOS DE COMENTÁRIOS, SEMPRE QUE POSSÍVEL. Por esse motivo tb, peço desculpas por não poder responder muitas mensagens do fórum!
Grato a todos!!!
   
CODER_EXPERT
GOIÂNIA
GO - BRASIL
Postada em 21/08/2008 18:12 hs            
Acrescente a constante [Public Const SW_HIDE = 0] na sessão General Declarations e adicione uma linha de código abaixo de [start.cb = Len(start)] com o seguinte código:

start.wShowWindow = SW_HIDE

     
CODER_EXPERT
GOIÂNIA
GO - BRASIL
ENUNCIADA !
Postada em 21/08/2008 18:12 hs            
Acrescente a constante [Public Const SW_HIDE = 0] na sessão General Declarations e adicione uma linha de código abaixo de [start.cb = Len(start)] com o seguinte código:

start.wShowWindow = SW_HIDE

   
Página(s): 1/3      PRÓXIMA »


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

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

HTML DESLIGADO

     
 VOLTAR

  



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