Partager via


Utilisation de l’objet Active Desktop

[Cette fonctionnalité est prise en charge uniquement sous Windows XP ou version antérieure. ]

Cet article contient des informations sur l’objet ActiveDesktop qui fait partie de l’API Windows Shell. Cet objet, via son interface IActiveDesktop , vous permet d’ajouter, de supprimer et de modifier des éléments sur le bureau.

Vue d’ensemble de l’interface Active Desktop

Active Desktop est une fonctionnalité introduite avec Microsoft Internet Explorer 4.0 qui vous permet d’inclure des documents et des éléments HTML (tels que les contrôles Microsoft ActiveX et les applets Java) directement sur votre bureau. L’interface IActiveDesktop , qui fait partie de l’API Windows Shell, est utilisée pour ajouter, supprimer et modifier par programmation les éléments sur le bureau. Les éléments Active Desktop peuvent également être ajoutés à l’aide d’un fichier CDF (Channel Definition Format).

Accès à Active Desktop

Pour accéder à Active Desktop, une application cliente doit créer un instance de l’objet ActiveDesktop (CLSID_ActiveDesktop) avec la fonction CoCreateInstance et récupérer un pointeur vers l’interface IActiveDesktop de l’objet.

L’exemple suivant montre comment récupérer un pointeur vers l’interface IActiveDesktop .

HRESULT hr;
IActiveDesktop *pActiveDesktop;

//Create an instance of the Active Desktop
hr = CoCreateInstance(CLSID_ActiveDesktop, NULL, CLSCTX_INPROC_SERVER,
                      IID_IActiveDesktop, (void**)&pActiveDesktop);

//Insert code to call the IActiveDesktop methods

// Call the Release method
pActiveDesktop->Release();

Ajout d’un élément de bureau

Vous pouvez utiliser trois méthodes pour ajouter un élément de bureau : IActiveDesktop::AddDesktopItem, IActiveDesktop::AddDesktopItemWithUI et IActiveDesktop::AddUrl. Chaque élément de bureau ajouté à Active Desktop doit avoir une URL source différente.

Les méthodes IActiveDesktop::AddDesktopItemWithUI et IActiveDesktop::AddUrl offrent toutes deux la possibilité d’afficher les différentes interfaces utilisateur qui peuvent être affichées avant d’ajouter un élément de bureau à Active Desktop. Les interfaces vérifient si les utilisateurs souhaitent ajouter l’élément de bureau à leur bureau Active Desktop. Les interfaces informent également les utilisateurs de tout risque de sécurité justifié par les paramètres de zone de sécurité d’URL et demandent aux utilisateurs s’ils souhaitent créer un abonnement pour cet élément de bureau. Les deux méthodes fournissent également un moyen de supprimer les interfaces utilisateur. La méthode IActiveDesktop::AddDesktopItem nécessite un appel à IActiveDesktop::ApplyChanges pour mettre à jour le Registre. Pour IActiveDesktop::AddDesktopItemWithUI, l’application cliente doit immédiatement libérer l’interface IActiveDesktop, puis utiliser la fonction CoCreateInstance pour récupérer une interface vers un instance de l’objet ActiveDesktop qui inclut l’élément de bureau nouvellement ajouté.

La méthode IActiveDesktop::AddDesktopItem ajoute l’élément de bureau spécifié à Active Desktop sans interface utilisateur, sauf si les paramètres de zone de sécurité d’URL l’empêchent. Si les paramètres de zone de sécurité d’URL n’autorisent pas l’ajout de l’élément de bureau sans inviter l’utilisateur, la méthode échoue. IActiveDesktop::AddDesktopItem nécessite également un appel à IActiveDesktop::ApplyChanges pour mettre à jour le Registre.

L’exemple suivant montre comment ajouter un élément de bureau avec la méthode IActiveDesktop::AddDesktopItem .

HRESULT hr;
IActiveDesktop *pActiveDesktop;
COMPONENT compDesktopItem;

//Create an instance of the Active Desktop
hr = CoCreateInstance(CLSID_ActiveDesktop, NULL, CLSCTX_INPROC_SERVER,
                      IID_IActiveDesktop, (void**)&pActiveDesktop);

// Initialize the COMPONENT structure
compDesktopItem.dwSize = sizeof(COMPONENT);

// Insert code that adds the information about the desktop item 
// to the COMPONENT structure

// Add the desktop item
pActiveDesktop->AddDesktopItem(&compDesktopItem,0);

// Save the changes to the registry
pActiveDesktop->ApplyChanges(AD_APPLY_ALL);

Énumération des éléments de bureau

Pour énumérer les éléments de bureau actuellement installés sur Active Desktop, l’application cliente doit récupérer le nombre total d’éléments de bureau installés à l’aide de la méthode IActiveDesktop::GetDesktopItemCount , puis créer une boucle qui récupère la structure COMPONENT pour chaque élément de bureau en appelant la méthode IActiveDesktop::GetDesktopItem à l’aide de l’index d’élément de bureau.

L’exemple suivant illustre une façon d’énumérer les éléments de bureau.

HRESULT hr;
IActiveDesktop *pActiveDesktop;
COMPONENT compDesktopItem;
int intCount;
int intIndex = 0;

//Create an instance of the Active Desktop
hr = CoCreateInstance(CLSID_ActiveDesktop, NULL, CLSCTX_INPROC_SERVER,
                      IID_IActiveDesktop, (void**)&pActiveDesktop);

pActiveDesktop->GetDesktopItemCount(&intCount,0);

compDesktopItem.dwSize = sizeof(COMPONENT);

while(intIndex<=(intCount-1))
{
    //get the COMPONENT structure for the current desktop item
    pActiveDesktop->GetDesktopItem(intIndex, &compDesktopItem,0);

    //Insert code that processes the structure

    //Increment the index
    intIndex++;

    //Insert code to clean-up structure for next component
}

// Call the Release method
pActiveDesktop->Release();