elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Problema con API FindWindow
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con API FindWindow  (Leído 1,360 veces)
pandemonio

Desconectado Desconectado

Mensajes: 26


Orgullosamente usuario del Xtreeeem Porquería


Ver Perfil
Problema con API FindWindow
« 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:

Dim Success%

Private Function FileExists%(fname$)
    On Local Error Resume Next
    Dim ff%
    ff% = FreeFile
    Open fname$ For Input As ff%
    If Err Then
        FileExists% = False
    Else
        FileExists% = True
    End If
    Close ff%
End Function

Private Sub Command1_Click()
1
    'Se ejecuta el primer proceso
    '
    '
    '
    
    '
    '
    'Se ejecuta el proceso de MS-DOS
    '
    '
    '
    
    'Se prepara la función para comprobar la existencia de Archivo.txt
    Success% = FileExists(App.Path & "\Archivo.txt")
    
    'En caso de ser verdadero
    If Success% = True Then
        'Se ejecuta el proceso que deseo
    Else
'        Se regresa al primer proceso hasta que se encuentre el archivo
        GoTo 1
    End If
    'Se continua con otro proceso
End Sub


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é.


En línea

CeLaYa


Desconectado Desconectado

Mensajes: 543



Ver Perfil
Re: Problema con API FindWindow
« Respuesta #1 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


En línea

"La soledad es el elemento de los grandes talentos".
Cristina de Suecia (1626-1689) Reina de Suecia.
CeLaYa


Desconectado Desconectado

Mensajes: 543



Ver Perfil
Re: Problema con API FindWindow
« Respuesta #2 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
En línea

"La soledad es el elemento de los grandes talentos".
Cristina de Suecia (1626-1689) Reina de Suecia.
pandemonio

Desconectado Desconectado

Mensajes: 26


Orgullosamente usuario del Xtreeeem Porquería


Ver Perfil
Re: Problema con API FindWindow
« Respuesta #3 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:

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 Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Const STILL_ACTIVE = 1

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
        Sleep 1000
    Loop While RetVal = STILL_ACTIVE
End Function

Private Sub Command1_Click()
'    ExeEspera "ping 124.32.54.4"
    Dim Winzip As String
    Dim ArchivoZIP As String
    Dim PorComprimir As String
   
    ArchivoZIP = "C:\temp\ArchivoZIP.zip"
    PorComprimir = "C:\temp\PorComprimir.txt"
    Winzip = "C:\Archivos de programa\WinZip\winzip32.exe -a -r "
   
    ExeEspera Winzip & ArchivoZIP & " " & PorComprimir
   
    MsgBox "Listo"
End Sub


Pero me parece que no funciona correctamente, ya que el MsgBox aparece antes de que termine el proceso, pero quizás me estoy equivocando.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda con FindWindow, FindWindowEx, SendMessage
ASM
.:UND3R:. 7 4,839 Último mensaje 2 Junio 2012, 23:03 pm
por _Enko
Problemas con FindWindow
Programación C/C++
Julio0 1 5,264 Último mensaje 2 Octubre 2020, 19:00 pm
por Eternal Idol
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines