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

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Chamar executável
¨Hennyere¨
Pontos: 2843
SALVADOR
BA - BRASIL
Postada em 19/02/2007 20:13 hs         
Boa noite amigos, estou precisando de uma função que chame um arquivo em lote do DOS (*.bat) em modo invisível e aguarde o seu término.
Alguém pode me socorrer?
     
Msmarcus_RJ
RIO DE JANEIRO
RJ - BRASIL
Postada em 19/02/2007 23:32 hs         
Bom, segue-se abaixo uma explicação de como fazer...

Crie um novo Projeto e adicione este código abaixo:

Option Explicit
DefInt A-Z


Private 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 Byte
    hStdInput As Long
    hStdOutput As Long
    hStdError As Long
End Type


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


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

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


Private 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

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


Private Sub Executar(arquivo As String)
Dim proc As PROCESS_INFORMATION
Dim start As STARTUPINFO
Dim ret&

start.cb = Len(start)

ret& = CreateProcessA(0&, arquivo, 0&, 0&, 1&, NORMAL_PRIORITY_CLASS, 0&, 0&, start, proc)

ret& = WaitForSingleObject(proc.hProcess, INFINITE)
ret& = CloseHandle(proc.hProcess)
End Sub


Private Sub Form_Load()
    On Error GoTo ERROS
    Me.Hide

    Executar "C:/my.bat"  'troque pelo o nome de seu arquivo

    Me.Show

    Exit Sub
ERROS:
End Sub

Dúvidas ? Favor poste!

Abraços,
Marcus Vinícius


______________________________
Resolveu ? Tópico Trancado!

TÓPICO EDITADO
   
¨Hennyere¨
Pontos: 2843
SALVADOR
BA - BRASIL
Postada em 20/02/2007 16:58 hs         
Olá amigo, a dica acima resolveu em parte o meu problema. realmente consigo executar qualquer comando "DOS" utilizando essa dica, e o VB realmente espera até q o processo seja finalizado. Mas na verdade o que quero, é que execute o comando "DOS" e o Prompt de comando do DOS fique invisível. Nesta dica, o VB fica invisível até que op comando seja concluído, nomeu caso quero o inverso.
 
Grato!
     
Msmarcus_RJ
RIO DE JANEIRO
RJ - BRASIL
Postada em 21/02/2007 02:16 hs         
Bom, como está muito tarde, irei depois reformular o código para o que você pede.
Amanhã [21/02] ficarei de lhe dar alguma resposta.

Abraços,
Marcus Vinícius

______________________________
Resolveu ? Tópico Trancado!

     
¨Hennyere¨
Pontos: 2843
SALVADOR
BA - BRASIL
Postada em 23/02/2007 17:53 hs         
ok, estou aguardando!
     
Ama
Pontos: 2843
UBERLÂNDIA
MG - BRASIL
Postada em 23/02/2007 19:05 hs         
Hennyere retire o me.hide do evento form_load  e passe me.show para antes do cmd executar
     
Página(s): 1/2      PRÓXIMA »

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