HOWTO: Determining Whether a User Is Subscribed to a Channel

ID: Q175504


The information in this article applies to:


SUMMARY

With the introduction of Active Channels in Internet Explorer 4.0, it may be desirable to determine whether a user is already subscribed to a channel, so that a Web page or an application does not redundantly offer users the ability to subscribe to a channel they've already subscribed to.


MORE INFORMATION

This article describes how to check a subscription from C++, Visual Basic, and script.

C++ - using ISubscriptionMgr::IsSubscribed

The code below demonstrates how this can be done using C++, from a console application:

#include <windows.h>
#include <tchar.h>
#include <iostream.h>
#include <subsmgr.h>
#include <stdio.h>

void main()
{
   ISubscriptionMgr *pSubscriptionMgr;
   CoInitialize(NULL);

   HRESULT hr = CoCreateInstance(CLSID_SubscriptionMgr,
                                 NULL,
                                 CLSCTX_INPROC_SERVER,
                                 IID_ISubscriptionMgr,
                                 (void**)&pSubscriptionMgr);
   if (SUCCEEDED(hr))
   {
      BOOL Bool;
      BSTR bstrURL =
        SysAllocString(L"http://test.microsoft.com/tst.cdf");
      hr = pSubscriptionMgr->IsSubscribed(bstrURL, &Bool);

      pSubscriptionMgr->Release();

      char szBuffer[250];
      TCHAR szURL[200];
      WideCharToMultiByte(CP_ACP, 0, bstrURL, -1, szURL, 200, NULL,
                          NULL);
      if (Bool)
          wsprintf (szBuffer,"YES, you are subscribed to %s\n",szURL);
      else
          wsprintf (szBuffer,"NOPE, you are NOT subscribed to %s\n",
                     szURL);
      cout << szBuffer;
      SysFreeString (bstrURL);
   }

   CoUninitialize();
} 

Visual Basic - Using the ShellUIHelper Object

The code below demonstrates how this can be done in a standard Visual Basic application. To use the ShellUIHelper object, use Project->References to add a reference to "Microsoft Internet Controls."

Private Sub Form_Load()
    Dim ShlHlpr As ShellUIHelper

    Set ShlHlpr = New ShellUIHelper

    If ShlHlpr.IsSubscribed("http://test.microsoft.com/tst.cdf") Then
        MsgBox "You're Subscribed!"
    Else
        MsgBox "You're not Subscribed!"
    End If
End Sub 

Please note that you must install the desktop update that comes with Internet Explorer 4.0x in order to use the ShellUIHelper object.

Script - Using window.external.isSubscribed

The code below demonstrates how this can be done, using JavaScript in an .htm page:

<SCRIPT>
  if (window.external.isSubscribed("http://test.microsoft.com/tst.cdf"))
     alert ("You are subscribed!");
  else
     alert ("You are NOT subscribed!");
</SCRIPT> 

Cross-frame security rules apply to this script call. Script in a document can only check to see if the user is subscribed to sites on the same domain.


REFERENCES

Internet Client SDK documentation

Additional query words:


Keywords          : kbcode kbChannels kbIE400 kbIE401 kbIE500 iegeneral 
Version           : WINDOWS:4.0,4.01
Platform          : WINDOWS 
Issue type        : kbhowto 

Last Reviewed: April 29, 1999