#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#undef WIN32_LEAN_AND_MEAN

#include <wingdi.h>
#include <stddef.h>
#include <stdio.h>

BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)
{
 static int i = 0;
 char buffer[255];
 BOOL bRet = SendMessageTimeout(hwnd, WM_GETTEXT, 255, (LPARAM)buffer,
				SMTO_ABORTIFHUNG, 1000/*ms*/, NULL);
 if(bRet == 0) {
   fprintf(stderr,"#%4d: FAILURE!\n", i++); fflush(stderr);
   return FALSE;
 } else {
   fprintf(stderr,"#%4d: GOT: %s\n", i++, buffer); fflush(stderr);
   return TRUE;
 }
}

int main(int argc, char **argv)
{
 BOOL bRet = EnumWindows(EnumWindowsProc, 0);
 if(bRet == 0)
   {
     fprintf(stderr,"ERROR!");
     exit(EXIT_FAILURE);
   }
 fprintf(stderr,"SUCCESS!");
 exit(EXIT_SUCCESS);
}
