Page 1 of 1

¿Aplicación Externa corriendo? - solucionado

Posted: Sun May 05, 2013 12:39 am
by rolando
Buenas noches,

Perdón por el título del post, pero no sabía como resumir lo que necesito conseguir.

Es que necesito saber, desde mi aplicación(ej. myapp.exe), si otra aplicación externa (ej. appexterna.exe) está siendo ejecutada en ese momento.

Estuve buscando en los manuales de FWH pero no encontré una función para tal fin.

Probé con la que figura (IsExeRunning( <cExeName> ) --> lRunning), pero no funciona y no sé si porque uso win 7.

¿Existe?, ¿se puede lograr lo que necesito?. Gracias.

Rolando :D

Re: ¿Aplicación Externa corriendo?

Posted: Sun May 05, 2013 1:10 am
by wmormar
rolando,

Puedes usar la TCapture

Para lo que necesitas está excelente.

En las utilidades debe estar.

Sino con gusto la posteo.

Re: ¿Aplicación Externa corriendo?

Posted: Sun May 05, 2013 1:13 am
by wmormar
rolando,

TE ahorre la busqueda, aqui está

http://www.fivetechsoft.com/files/utili ... apture.zip

Re: ¿Aplicación Externa corriendo?

Posted: Sun May 05, 2013 12:57 pm
by rolando
William,

Gracias por responder.

Bajé la clase y compilé el sample pero, no es lo que busco. Esta clase captura imágenes desde una webcam.

Lo que necesito es saber si una aplicación externa está ejecutándose.

Saludos.

Rolando :D

Re: ¿Aplicación Externa corriendo?

Posted: Sun May 05, 2013 2:53 pm
by wmormar
Rolando, me confundi.

es esta:

Code: Select all

//----------------------------------------------------------------------------//
//  AUTOR.....: Manuel Exp¢sito Su rez    Soft 4U '2001                       //
//  e-Mail....: maex14@dipusevilla.es                                         //
//  CLASE.....: TWCapture                                                     //
//  FECHA MOD.: 18/08/2001                                                    //
//  VERSION...: 1.00                                                          //
//  PROPOSITO.: Captura una ventana abierta por nuestro programa o por otra   //
//              aplicacion para poder enviarle mensajes como si fuera una     //
//              ventana mas de nuestro programa.                              //
//----------------------------------------------------------------------------//
//  DATAS.....: * lCapture tiene un valor logico, .f. si la ventana no se     //
//              pudo capturar y .t. si si se hizo                             //
//                                                                            //
//  METODOS...: * New( cTitle ) es el constructor, cTitle es el titulo de una //
//              ventana, si se le pasa intentara capturarla y pondra .t. en   //
//              ::lCapture                                                    //
//              * WCapture se encarga de buscar la ventana y asignarla a      //
//              nuestro objeto TWindow. Si la captura podremos interactuar    //
//              como si fuera una ventana mas de nuestra aplicacion           //
//                                                                            //
//  NOTAS.....: TWCapture esta heredada de TWindows por lo que tendremos a    //
//              nuestra disposicion todas las datas y metodos de esta clase.  //
//              No distingue entre mayusculas y minuscula pero si se tienen   //
//              en cuenta los espacios                                        //
//----------------------------------------------------------------------------//

#include "Objects.ch"

//----------------------------------------------------------------------------//

CLASS TWCapture FROM TWindow

    DATA lCaptured

    METHOD New( cTitle ) CONSTRUCTOR
    METHOD WCapture( cTitle )

ENDCLASS

//----------------------------------------------------------------------------//

METHOD New( cTitle ) CLASS TWCapture

    if( HB_IsString( cTitle ), ::WCapture( cTitle ), ::lCaptured := .f. )

return( Self )

//----------------------------------------------------------------------------//

METHOD WCapture( cTitle ) CLASS TWCapture

   local hWnd := FindWindow( 0, cTitle )

   ::lCaptured := ( hWnd > 0 )
   ::hWnd := if( ::lCaptured, hWnd, 0 )

return( ::lCaptured )

//----------------------------------------------------------------------------//

 
Ejemplo:

Code: Select all

//----------------------------------------------------------------------------//
// TWCapture by Manu Exposito
// Demo01 de la clase TWCapture
// Pasando un titulo de ventana
//----------------------------------------------------------------------------//

#define CRLF chr( 13 ) + chr( 10 )

function Main()

   local oWnd
   local cTitle := space( 40 )

    if MsgGet( "Entre titulo de una ventana abierta", "Titulo:", @cTitle ) .and. !empty( cTitle )

        oWnd := TWCapture():New( AllTrim( cTitle ) )
        Jugar( oWnd )

    else

        MsgAlert( "No ha elegido ningun titulo de ventana" + CRLF + ;
                 "Ejecuto el WorPad y capturamos la ventana" )

        WinExec( "NotePad.exe Demo01.prg" )

        oWnd := TWCapture():New( "demo01 - bloc de notas" )
        Jugar( oWnd )

    endif

return nil

//----------------------------------------------------------------------------//

static function Jugar( oWnd )

        local cTitle := oWnd:cTitle

        if oWnd:lCaptured

            MsgAlert( "Muy bien, ya lo tenemos" + CRLF + ;
                      "_ la ventana con titulo: " + cTitle + ;
                      CRLF + "Ahora vamos a jugar con ella" )

            MsgInfo( "La centramos" )
            oWnd:Center()

            MsgInfo( "Pinto una linea" )
            oWnd:Line( 0, 0, 500, 500 )

            MsgInfo( "La desplazo a la izquierda" )
            oWnd:Move( 0, 0 )

            MsgInfo( "Ahora minimizo" )
            oWnd:Minimize()

            MsgInfo( "Ahora maximizo" )
            oWnd:Maximize()

            MsgInfo( "La restauro" )
            oWnd:Restore()

            MsgInfo( "Ahora cambio titulo" )
            oWnd:SetText( "TWCapture captura ventanas - by Manu Exposito 2001" )

            MsgInfo( "Ahora la oculto" )
            oWnd:Hide()

            MsgInfo( "Ahora la muestro" )
            oWnd:Show()

            MsgInfo( "y ahora termino" )
            oWnd:End()

        else

            MsgStop( "No se pudo capturar ninguna ventana" )
            oWnd := nil

        endif

return( nil )

 

Re: ¿Aplicación Externa corriendo?

Posted: Sun May 05, 2013 9:16 pm
by rolando
William,

Muchas gracias. Esta clase parece que si va a servir para lo que necesito hacer y se me ocurren otros cuantos usos más.

De nuevo gracias, a ti por buscarla y sugerirla.

Y por supuesto, las gracias también al autor de la misma, Sr. Manuel Expósito.

Saludos.

Rolando :D