Спасибо большое ПЕТР и ГРИГОРИЙ ! Получил то что хотел... Если кому нужно, привожу пример:
*************************************************************************
* Copyright : (c) 2008, Verchenko Andrey. E-mail: 30195@mail.ru
* : Все права сохраняются.
* Date : 11/11/2008
* Avtor : Верченко Андрей
* Rem : Получение списка ХЕНДЛов окон и ИМЕН окон запущенных в системе
* : только на xHarbour'e
* : Отдельное СПАСИБО модераторам: Петру и Григорию
* :
http://clipper.borda.ru/?1-1-0-00000159-000-0-1-1226399294 **************************************************************************
#include "inkey.ch"
FUNCTION MAIN()
LOCAL aStart := {}, nI, aMenu:={}, aItems:={}, nSelect, cTemp
STRFILE("","Process.lst")
aStart := GetWindowList() // Считать ХЕНДЛ окна и ИМЯ окна
FOR nI:= 1 TO LEN(aStart)
AADD( aMenu, { aStart[nI,1], HB_ANSITOOEM(aStart[nI,2]) } )
cTemp := STR(aStart[nI,1])+", "+HB_ANSITOOEM(aStart[nI,2])
AADD( aItems, cTemp )
STRFILE( cTemp+CHR(13)+CHR(10),"Process.lst",.T.)
NEXT
CLEAR SCREEN
@ 1,7 SAY "Хенл окна Название окна" COLOR("14/0")
DO WHILE LastKey() <> K_ESC
nSelect := Achoice( 2, 5, MaxRow()-2, 75, aItems, .T. )
IF nSelect <> 0
// Display selected file
MAXIMIZE( aStart[nSelect,1] )
KEYBOARD Chr(255) // sets Lastkey() to 255
Inkey()
ENDIF
ENDDO
RETURN NIL
#define GW_HWNDFIRST 0
#define GW_HWNDLAST 1
#define GW_HWNDNEXT 2
#define GW_HWNDPREV 3
#define GW_OWNER 4
#define GW_CHILD 5
function GetWindowList()
LOCAL aWindows := {}, cTitle := ""
LOCAL hWnd := GetWindow( GetForegroundWindow(), GW_HWNDFIRST )
WHILE hWnd != 0 // Loop through all the windows
if !empty(cTitle := GetWindowText( hWnd ))
AADD( aWindows, {hWnd, upper(cTitle)} )
endif
hWnd := GetWindow( hWnd, GW_HWNDNEXT ) // Get the next window
ENDDO
return aWindows
#pragma BEGINDUMP
#include <windows.h>
#include <hbapi.h>
#include <shlobj.h>
HB_FUNC( ISEXERUNNING ) // ( cExeNameCaseSensitive ) --> lResult
{
HANDLE hMutex = CreateMutex( NULL, TRUE, (LPTSTR) hb_parc(1) );
hb_retl( GetLastError() == ERROR_ALREADY_EXISTS );
ReleaseMutex( hMutex );
}
HB_FUNC( GETFOREGROUNDWINDOW )
{
hb_retnl( (LONG) GetForegroundWindow() );
}
HB_FUNC( MINIMIZE )
{
ShowWindow( (HWND) hb_parnl(1), SW_MINIMIZE );
}
HB_FUNC( MAXIMIZE )
{
ShowWindow( (HWND) hb_parnl(1), SW_RESTORE );
}
HB_FUNC( GETWINDOWTEXT )
{
int iLen = SendMessage( (HWND) hb_parnl(1), WM_GETTEXTLENGTH, 0, 0 ) + 1;
char *cText = ( char * ) hb_xgrab( iLen );
GetWindowText( (HWND) hb_parnl(1), (LPTSTR) cText, iLen );
hb_retc( cText );
hb_xfree( cText );
}
HB_FUNC( GETWINDOW )
{
hb_retnl( (LONG) GetWindow((HWND) hb_parnl(1), hb_parni(2)) );
}
#pragma ENDDUMP