Título: Problema con API FindWindow Publicado por: pandemonio en 16 Octubre 2006, 19:15 pm si lo que quieres hacer es esperar a que tu aplicacion espere a que termine la ejecucion de la ventana del DOS, te paso un tip, que aqui mismo me dieron: en tu programa en lugar de usar el shell usa esta funcion ExeEspera "comando ms-dos" Private Function ExeEspera(COMANDO As String) Dim hProcess As Long Dim RetVal As Long hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, Shell(COMANDO, vbMinimizedNoFocus)) Do GetExitCodeProcess hProcess, RetVal DoEvents Pausa 100 Loop While RetVal = STILL_ACTIVE End Function Gracias CeLaYa por el código, pero le hace falta algunas cosas, como funciones y APIS, con las APIS no hay problema, pero sí con las funciones, pero no importa, ya solucioné el problema de otra forma (sencilla y que no consume muchos recursos). Esta fue la solución: Código:
Obviamente no está completo el código, pero con esto cualquiera se da una idea de que ya pude llevar a cabo lo que quería. Muchas gracias por tu ayuda. No estaría mal que publicaras el código completo que mostraste al principio, quizás me sea más útil que lo que encontré. Título: Re: Problema con API FindWindow Publicado por: CeLaYa en 16 Octubre 2006, 19:38 pm Public Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Function ExeEspera(COMANDO As String) Dim hProcess As Long Dim RetVal As Long hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, Shell(COMANDO, vbMinimizedNoFocus)) Do GetExitCodeProcess hProcess, RetVal DoEvents Pausa 100 Loop While RetVal = STILL_ACTIVE End Function puedes mandar llamar la funcion asi: ExeEspera "c:\archiv~1\winzip\winzip32.exe -a -r " & Archivo & ".zip " & Archivo & ".bak" lo que hago aqui esque comprimo un archivo y la aplicacion se detiene hasta que el winzip ha terminado de comprimir Título: Re: Problema con API FindWindow Publicado por: CeLaYa en 16 Octubre 2006, 20:58 pm ups!!! se me paso poner esta declaracion
Public Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long Título: Re: Problema con API FindWindow Publicado por: pandemonio en 17 Octubre 2006, 20:20 pm ups!!! se me paso poner esta declaracion Public Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long Gracias, disculpa pero faltó la declaración de la constante STILL_ACTIVE, aunque si la declaras con el valor de 1 funciona. El código quedaría así: Código:
Pero me parece que no funciona correctamente, ya que el MsgBox aparece antes de que termine el proceso, pero quizás me estoy equivocando. |