Я бы такой вариант предложил: 
 Файла с расширением html ассоциируется обычно с браузером по умолчанию. 
 Если создать такой файл с расширением html и пременить FindExecutable,то можно узнать кто должен открыть такой файл 
 Code
#include "stdio.h" 
 #include "shellapi.h"; 
 ................................................ 
 char * GetNames(char * St, char Res[255]) 
 {int j,i,l=0; 
    j=0; 
     for (i=StrLen(St); i; i--) 
     if (St[i]=='\\')      { 
            j=i; 
            break; 
        }; 
     j++; 
     for (i=j; i<=StrLen(St); i++, l++) 
       Res[l]=St[i]; 
 } 
 void __fastcall TForm1::Button1Click(TObject *Sender) 
 {FILE * F; 
   char A[255],B[255]; 
   char *name="1.html"; 
   F=fopen(name,"wt"); 
   fclose(F); 
   FindExecutable(name,"",A); 
   DeleteFile(name); 
   ShowMessage(A); 
   GetNames(A,B); 
   ShowMessage(B); 
 } 
 
  
 Так можно определять какая программа открывает файл с каким-либо расширением. 
 Недостаток метода: 
 Нужно создавать файл 1.html. 
 Хотя,если точно знать,что в каком-то месте лежит файл с таким расширением,то можно указать его путь в функцию.