miren estoy haciendo un programa que necesito ejecutar un archivo bat
quiero que cuando acabe lo que e programado en el archivo bat ejecutar un boton
automaticamente estuve leyendo algo pero no logro que espere que acabe y ejecute el boton si algun puede ayudar :)
Un ejemplo simple:
Option Explicit
'Funciones del api
'''''''''''''''''''''''''''''''''''''''''''''''''''
Private Declare Function OpenProcess Lib "kernel32" _
(ByVal dwDesiredAccess As Long, _
ByVal bInheritHandle As Long, _
ByVal dwProcessId As Long) As Long
Private Declare Function GetExitCodeProcess Lib "kernel32" _
(ByVal hProcess As Long, lpExitCode As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" _
(ByVal hObject As Long) As Long
'Constantes
'''''''''''''''''''''''''''''''''''''''''''''''''''
Private Const PROCESS_QUERY_INFORMATION = &H400
Private Const STATUS_PENDING = &H103&
Private Sub Command1_Click()
Call Ejecutar_shell("notepad.exe")
End Sub
' Recibe el argumento de la línea de comandos para pasarle al Shell
Private Sub Ejecutar_shell(programa As String)
Dim handle_Process As Long
Dim id_process As Long
Dim lp_ExitCode As Long
' Abre el proceso con el shell
id_process = Shell(programa, 1)
' handle del proceso
handle_Process = OpenProcess(PROCESS_QUERY_INFORMATION, False, id_process)
' Mientras lp_ExitCode = STATUS_PENDING, se ejecuta el do
Do
Call GetExitCodeProcess(handle_Process, lp_ExitCode)
DoEvents
Loop While lp_ExitCode = STATUS_PENDING
' fin
' Cierra
Call CloseHandle(handle_Process)
MsgBox "Se cerró el " & programa, vbInformation
End Sub
Private Sub Form_Load()
Command1.Caption = " Ejecutar programa y esperar a que cierre "
End Sub
http://www.recursosvisualbasic.com.ar/htm/listado-api/205-abrir-programa-esperar-a-que-termine.htm
Estoy seguro de que no tendras ningun problema para adaptarlo ;D
Saludos ;D
no me sirve por que lo que ejecuto es un archivo bat aunque con el archivo bat ejecuto un .exe
lo que quiro decirle es que pere a que el exe se cierre y ejecute el boton
Ejecuta el exe directamente usando el code que te deja Karcrack...
bien pero en el archivo bat tengo escrita alunas funciones que relaiza el .exe :(
si fuera solo cuestion de ejecutar solo el exe no tendria problema
el archivo bat contiene esto
tool.exe "path" -summary -chapters > tempfile.txt
Cita de: andrer03 en 22 Enero 2009, 20:41 PM
bien pero en el archivo bat tengo escrita alunas funciones que relaiza el .exe :(
si fuera solo cuestion de ejecutar solo el exe no tendria problema
el archivo bat contiene esto
tool.exe "path" -summary -chapters > tempfile.txt
Ejecuta el bat de esta forma:
Call Ejecutar_shell("cmd /C Nombre.bat")
Pero creo que no necesitarias crear un bat para esas cosas :xD
Saludos ;D
okay thx
utilice este ejemplo y funciona creando un modulo
http://www.davidsuarez.es/2008/08/ejecutar-un-programa-con-shell-y-esperar-a-que-termine-en-visual-basic/
Private Sub Command1_Click()
Dim retval As Variant
retval = ShellandWait("" & App.Path & "\" & "file.bat")
Command4_Click
End Sub
lo que pasa es que no se como decirle que el archivo bad lo ejecute oculto
añadi esto al final pero me da un error :( a ver si alguien sabe por que sera y ya no molesto mas .
Citar
, vbHide
En la línea
CitarlInst = Shell(sExeName, vbMinimizedNoFocus)
reemplazas la constante "vbMinimizedNoFocus" por "vbHide".
no funciona :(
Cita de: andrer03 en 23 Enero 2009, 02:38 AM
no funciona :(
Sin comillas :¬¬
PD:Por si acaso... He visto cosas peores :P