uses
  ftypesAPI;

var
  ftr    : TFileTypeRegistration;
  s:String;


ftr := TFileTypeRegistration.Create;
if(ftr <> nil) then begin
  try
    if(LOWORD(wp) = IDC_CREATEFOO) then begin
      if(ftr.RegisterType('.foo','FooFile','FOO-File')) then begin
        ftr.AddHandler('open','notepad.exe "%1"','ffnen');
        ftr.AddHandler('print','notepad.exe /p "%1"');
        ftr.SetDefaultHandler;
        ftr.AddNewFileSupport('.foo');
      end;
    end;
    if(LOWORD(wp) = IDC_DELPRINTVERB) then begin
      if(ftr.GetInternalKey('.foo') <> '') then begin
        ftr.DeleteHandler('print');
        ftr.SetDefaultHandler('open');
      end;
    end;
    if(LOWORD(wp) = IDC_REMOVEFOO) then begin
      s := ftr.GetInternalKey('.foo');
      if(MessageBox(hwndDlg,pchar('Wollen Sie wirklich ".foo" und "' + s + '" entfernen?'), 'Frage',MB_YESNO or MB_DEFBUTTON2 or MB_ICONQUESTION) = ID_YES) then
        ftr.UnregisterType('.foo');
    end;
  finally
    ftr.Free;
  end;
end;