Article ID: 188404
Article Last Modified on 3/3/2005
LOCAL awin_apps, vfp_handle, ln_current_window,ln_window_count
* Dimension array awin_apps to store running apps
DIMENSION awin_apps[1]
* Initialize variable to store handle for current application
vfp_handle=0
* Declare API Functions
DECLARE INTEGER FindWindow ;
IN win32api ;
INTEGER nullpointer, ;
STRING cwindow_name
DECLARE INTEGER GetWindow ;
IN win32api ;
INTEGER ncurr_window_handle, ;
INTEGER ndirection
DECLARE INTEGER GetWindowText ;
IN win32api ;
INTEGER n_win_handle, ;
STRING @ cwindow_title, ;
INTEGER ntitle_length
* End of API function declarations
* Get handle for current application
vfp_handle=findwindow(0,_SCREEN.CAPTION)
* Store handle of current app to a variable
ln_current_window=vfp_handle
* Initialize a count variable used to dimension array of running apps
ln_window_count=0
DO WHILE ln_current_window>0
* Initialize variable to store application title
lc_window_title=SPACE(255)
* Call to GetWindowText to fetch window caption
ln_length=getwindowtext(ln_current_window, ;
@lc_window_title,LEN(lc_window_title))
* Note that the lc_window_title variable is used as a buffer to
* receive text from the call to GetWindowText
IF ln_length>0
lc_window_title=STRTRAN(TRIM(lc_window_title),CHR(0),"")
ELSE
lc_window_title=""
ENDIF
IF ln_current_window>0 .AND. !EMPTY(lc_window_title)
* Increment the window count and re-dimension the array of running
* applications
ln_window_count=ln_window_count+1
DIMENSION awin_apps(ln_window_count)
awin_apps[ln_Window_Count]=lc_window_title
ENDIF
* Call to GetWindow to fetch handle of running applications.
ln_current_window=getwindow(ln_current_window,2)
ENDDO
CREATE TABLE runapps (appname m)
IF ALEN(awin_apps,1)>0
SELECT runapps
APPEND BLANK
FOR i=1 TO ALEN(awin_apps,1)
REPLACE appname WITH awin_apps[i]+CHR(13) ADDITIVE
NEXT
ENDIF
MODIFY MEMO appname NOEDIT
The application stores the names of all executing applications in the memo
field of the table Runapps.dbf.
Keywords: kbhowto KB188404