6 de junio de 2016

Como saber las aplicaciones abiertas mediante API

Como saber las aplicaciones abiertas mediante API.

#DEFINE GW_HWNDNEXT         2
#DEFINE GW_CHILD            5
#DEFINE GWL_STYLE           -16
#DEFINE WS_VISIBLE          0x10000000
#DEFINE WS_POPUP            0x80000000

DECLARE LONG GetWindow IN WIN32API LONG HWND, LONG uCmd
DECLARE LONG GetWindowText IN WIN32API LONG HWND, STRING @lpString, LONG nMaxCount
DECLARE INTEGER GetDesktopWindow IN Win32API
DECLARE LONG GetWindowLong IN WIN32API LONG HWND, LONG nIndex
DECLARE INTEGER IsIconic IN user32 INTEGER HWND
CREATE CURSOR crsWindows ( ;
  HWND I, WindTitle C(50),isIconic L)

lhWnd = GetDesktopWindow()
lhWnd = GetWindow(lhWnd, GW_CHILD)
DO WHILE lhWnd > 0
  m.WindTitle = GetTitle(lhWnd)
  IF NOT EMPTY(m.WindTitle)
    m.hwnd     = lhWnd
    m.Style = GetWindowLong(lhWnd, GWL_STYLE)
    m.hex     = TRANSFORM(m.Style, ";@0")
    m.isiconic = IIF(IsIconic(lhWnd)=0,.F.,.T.)
    IF  BITAND(m.Style, WS_VISIBLE) > 0 ;
        AND BITAND(m.Style, WS_POPUP) = 0
      INSERT INTO crsWindows FROM MEMVAR
    ENDIF
  ENDIF
  lhWnd = GetWindow(lhWnd, GW_HWNDNEXT )
ENDDO
SELECT crsWindows
LOCATE
BROWSE NOWAIT
RETURN

FUNCTION GetTitle(lhWnd)
  LOCAL lcTitle
  lcTitle = SPACE(512)
  lnTitle = GetWindowText(lhWnd , @lcTitle, 256)
  IF lnTitle > 0
    lcTitle = LEFT(lcTitle, lnTitle )
  ELSE
    lcTitle = ""
  ENDIF
  RETURN lcTitle
ENDFUNC

Mauricio Henao Romero

1 comentario :

  1. Te consulto algo, si tengo mozilla o crhome o explorer como veo todo el detalle de las paginas que tiene abierta como pestañas, ahora esta rutina solo me trae. el titulo del que tengo enfrente osea la que se esta viendo, como puedo obtener las demas pestañas...?

    ResponderEliminar