Formats du Presse-papiers shell
Les formats du Presse-papiers shell sont utilisés pour identifier le type de données Shell transférées dans le Presse-papiers. La plupart des formats de Presse-papiers Shell identifient un type de données, par exemple une liste de noms de fichiers ou des pointeurs vers des listes d’identificateurs d’élément (PIDL). Toutefois, certains formats sont utilisés pour la communication entre la source et la cible. Ils peuvent accélérer le processus de transfert de données en prenant en charge les opérations Shell telles que le déplacement optimisé et la delete_on_paste. Les données de l’interpréteur de commandes sont toujours contenues dans un objet de données qui utilise une structure FORMATETC comme un moyen plus général de caractériser les données. Le membre cfFormat de la structure est défini sur le format du Presse-papiers pour l’élément de données particulier. Les autres membres fournissent des informations supplémentaires, telles que le mécanisme de transfert de données. Les données sont contenues dans une structure STGMEDIUM associée.
Notes
Les identificateurs de format de Presse-papiers standard ont la forme CF_XXX. Un exemple courant est CF_TEXT, qui est utilisé pour transférer des données de texte ANSI. Ces identificateurs ont des valeurs prédéfinies et peuvent être utilisés directement avec les structures FORMATETC . À l’exception de CF_HDROP, les identificateurs de format Shell ne sont pas prédéfinis. À l’exception de DragWindow, ils ont la forme CFSTR_XXX. Pour différencier ces valeurs des formats prédéfinis, elles sont souvent appelées simplement formats. Toutefois, contrairement aux formats prédéfinis, ils doivent être inscrits par la source et la cible avant de pouvoir être utilisés pour transférer des données. Pour inscrire un format Shell, incluez le fichier d’en-tête Shlobj.h et passez l’identificateur de format CFSTR_XXX à RegisterClipboardFormat. Cette fonction retourne une valeur de format de Presse-papiers valide, qui peut ensuite être utilisée comme membre cfFormat d’une structure FORMATETC .
Les formats du Presse-papiers Shell sont organisés ici en trois groupes, en fonction de leur utilisation.
- Formats de transfert d’objets de système de fichiers
- Formats de transfert d’objets virtuels
- Formats de communication entre la source et la cible
Formats de transfert d’objets de système de fichiers
Ces formats sont utilisés pour transférer un ou plusieurs fichiers ou d’autres objets Shell.
- CF_HDROP
- CFSTR_FILECONTENTS
- CFSTR_FILEDESCRIPTOR
- CFSTR_FILENAME
- CFSTR_FILENAMEMAP
- CFSTR_MOUNTEDVOLUME
- CFSTR_SHELLIDLIST
- CFSTR_SHELLIDLISTOFFSET
CF_HDROP
Ce format de Presse-papiers est utilisé lors du transfert des emplacements d’un groupe de fichiers existants. Contrairement aux autres formats shell, il est prédéfini, il n’est donc pas nécessaire d’appeler RegisterClipboardFormat. Les données se composent d’une structure STGMEDIUM qui contient un objet de mémoire globale. Le membre hGlobal de la structure pointe vers une structure DROPFILES comme membre hGlobal .
Le membre pFiles de la structure DROPFILES contient un décalage vers un tableau de caractères à double fin null qui contient les noms de fichiers. Si vous extrayez un format CF_HDROP à partir d’un objet de données, vous pouvez utiliser DragQueryFile pour extraire des noms de fichiers individuels de l’objet mémoire globale. Si vous créez un format CF_HDROP à placer dans un objet de données, vous devez construire le tableau de noms de fichiers.
Le tableau de noms de fichiers se compose d’une série de chaînes, chacune contenant le chemin complet d’un fichier, y compris le caractère NULL de fin. Un caractère null supplémentaire est ajouté à la chaîne finale pour mettre fin au tableau. Par exemple, si les fichiers c:\temp1.txt et c:\temp2.txt sont transférés, le tableau de caractères ressemble à ceci :
c:\temp1.txt'\0'c:\temp2.txt'\0''\0'
Notes
Dans cet exemple, « \0 » est utilisé pour représenter le caractère null , et non les caractères littéraux qui doivent être inclus.
Si l’objet a été copié dans le Presse-papiers dans le cadre d’une opération de glisser-déplacer, le membre pt de la structure DROPFILES contient les coordonnées du point où l’objet a été supprimé. Vous pouvez utiliser DragQueryPoint pour extraire les coordonnées du curseur.
Si ce format est présent dans un objet de données, une boucle de glissement OLE simule WM_DROPFILES fonctionnalité avec des cibles de suppression non OLE. Cela est important si votre application est la source d’une opération de glisser-déplacer sur un système Windows 3.1.
CFSTR_FILECONTENTS
Cet identificateur de format est utilisé avec le format CFSTR_FILEDESCRIPTOR pour transférer des données comme s’il s’agissait d’un fichier, quelle que soit la façon dont elles sont réellement stockées. Les données se composent d’une structure STGMEDIUM qui représente le contenu d’un fichier. Le fichier est normalement représenté sous la forme d’un objet stream, ce qui évite d’avoir à placer le contenu du fichier en mémoire. Dans ce cas, le membre lié de la structure STGMEDIUM est défini sur TYMED_ISTREAM et le fichier est représenté par une interface IStream . Le fichier peut également être un objet de stockage ou de mémoire globale (TYMED_ISTORAGE ou TYMED_HGLOBAL). Le format CFSTR_FILEDESCRIPTOR associé contient une structure FILEDESCRIPTOR pour chaque fichier qui spécifie le nom et les attributs du fichier.
La cible traite les données associées à un format CFSTR_FILECONTENTS comme s’il s’agissait d’un fichier. Lorsque la cible appelle IDataObject::GetData pour extraire les données, elle spécifie un fichier particulier en définissant le membre lindex de la structure FORMATETC sur l’index de base zéro de la structure FILEDESCRIPTOR du fichier dans le format CFSTR_FILEDESCRIPTOR associé. La cible utilise ensuite le pointeur d’interface retourné ou le handle de mémoire globale pour extraire les données.
CFSTR_FILEDESCRIPTOR
Cet identificateur de format est utilisé avec le format CFSTR_FILECONTENTS pour transférer des données en tant que groupe de fichiers. Ces deux formats sont le moyen préféré pour transférer des objets Shell qui ne sont pas stockés en tant que fichiers de système de fichiers. Par exemple, ces formats peuvent être utilisés pour transférer un groupe de messages électroniques sous forme de fichiers individuels, même si chaque e-mail est en fait stocké sous la forme d’un bloc de données dans une base de données. Les données se composent d’une structure STGMEDIUM qui contient un objet de mémoire globale. Le membre hGlobal de la structure pointe vers une structure FILEGROUPDESCRIPTOR qui est suivie d’un tableau contenant une structure FILEDESCRIPTOR pour chaque fichier du groupe. Pour chaque structure FILEDESCRIPTOR , il existe un format CFSTR_FILECONTENTS distinct qui contient le contenu du fichier. Pour identifier le format CFSTR_FILECONTENTS d’un fichier particulier, définissez la valeur lIndex de la structure FORMATETC sur l’index de base zéro de la structure FILEDESCRIPTOR du fichier.
Le format CFSTR_FILEDESCRIPTOR est couramment utilisé pour transférer des données comme s’il s’agissait d’un groupe de fichiers, quelle que soit la façon dont elles sont réellement stockées. Du point de vue de la cible, chaque format CFSTR_FILECONTENTS représente un seul fichier et est traité en conséquence. Toutefois, la source peut stocker les données de la manière de son choix. Bien qu’un format CSFTR_FILECONTENTS puisse correspondre à un seul fichier, il peut également, par exemple, représenter des données extraites par la source d’une base de données ou d’un document texte.
CFSTR_FILENAME
Cet identificateur de format est utilisé pour transférer un seul fichier. Les données se composent d’une structure STGMEDIUM qui contient un objet de mémoire globale. Le membre hGlobal de la structure pointe vers une chaîne null unique contenant le chemin d’accès complet du fichier. Ce format a été remplacé par CF_HDROP, mais il est pris en charge pour la compatibilité descendante avec les applications Windows 3.1.
CFSTR_FILENAMEMAP
Cet identificateur de format est utilisé lorsqu’un groupe de fichiers au format CF_HDROP est renommé et transféré. Les données se composent d’une structure STGMEDIUM qui contient un objet de mémoire globale. Le membre hGlobal de la structure pointe vers un tableau de caractères à double fin null. Ce tableau contient un nouveau nom pour chaque fichier, dans le même ordre que les fichiers sont répertoriés dans le format CF_HDROP associé. Le format du tableau de caractères est identique à celui utilisé par CF_HDROP pour répertorier les fichiers transférés.
CFSTR_MOUNTEDVOLUME
Cet identificateur de format est utilisé pour transférer un chemin d’accès sur un volume monté. Il est similaire à CF_HDROP, mais il ne contient qu’un seul chemin d’accès et peut gérer les chaînes de chemin d’accès plus longues qui peuvent être nécessaires pour représenter un chemin d’accès lorsque le volume est monté sur un dossier. Les données se composent d’une structure STGMEDIUM qui contient un objet de mémoire globale. Le membre hGlobal de la structure pointe vers une chaîne null unique contenant le chemin du fichier complet. La chaîne de chemin d’accès doit se terminer par un caractère « \ », suivi de la valeur NULL de fin.
Avant Windows 2000, les volumes ne pouvaient être montés que sur des lettres de lecteur. Pour les systèmes Windows 2000 et ultérieurs avec un lecteur au format NTFS, vous pouvez également monter des volumes sur des dossiers vides. Cette fonctionnalité permet de monter un volume sans prendre de lettre de lecteur. Le volume monté peut utiliser n’importe quel format actuellement pris en charge, notamment FAT, FAT32, NTFS et CDFS.
Vous pouvez ajouter des pages à une feuille de propriétés de lecteur en implémentant un gestionnaire de feuille de propriétés. Si le volume est monté sur une lettre de lecteur, l’interpréteur de commandes transmet les informations de chemin au gestionnaire au format CF_HDROP . Avec les systèmes Windows 2000 et versions ultérieures, le format CF_HDROP est utilisé lorsqu’un volume est monté sur une lettre de lecteur, comme avec les systèmes précédents. Toutefois, si un volume est monté sur un dossier, l’identificateur de format CFSTR_MOUNTEDVOLUME est utilisé au lieu de CF_HDROP.
Si seules les lettres de lecteur sont utilisées pour monter des volumes, seules CF_HDROP seront utilisées et les gestionnaires de feuilles de propriétés existants fonctionneront comme ils l’ont fait avec des systèmes antérieurs. Toutefois, si vous souhaitez que votre gestionnaire affiche une page pour les volumes montés sur des dossiers ainsi que sur des lettres de lecteur, le gestionnaire doit être en mesure de comprendre les formats CSFTR_MOUNTEDVOLUME et CF_HDROP.
CFSTR_SHELLIDLIST
Cet identificateur de format est utilisé lors du transfert des emplacements d’un ou plusieurs objets d’espace de noms existants. Il est utilisé de la même manière que CF_HDROP, mais il contient des listes DE DLL au lieu des chemins d’accès du système de fichiers. L’utilisation de PIDL permet au format CFSTR_SHELLIDLIST de gérer des objets virtuels ainsi que des objets de système de fichiers. Les données sont une structure STGMEDIUM qui contient un objet de mémoire globale. Le membre hGlobal de la structure pointe vers une structure de l’ACDI .
Le membre aoffset de la structure ACDI est un tableau contenant des décalages vers le début de la structure ITEMIDLIST pour chaque PIDL transféré. Pour extraire un PIDL particulier, déterminez d’abord son index. Ensuite, ajoutez la valeur aoffset qui correspond à cet index à l’adresse de la structure ACDI .
Le premier élément d’aoffset contient un décalage vers le PIDL complet d’un dossier parent. Si ce PIDL est vide, le dossier parent est le bureau. Chacun des éléments restants du tableau contient un décalage vers l’un des PIDL à transférer. Toutes ces PIDL sont relatives au PIDL du dossier parent.
Les deux macros suivantes peuvent être utilisées pour récupérer des LISTES de propriété personnelle à partir d’une structure DE l’ACDI . Le premier prend un pointeur vers la structure et récupère le PIDL du dossier parent. Le second prend un pointeur vers la structure et récupère l’un des autres PIDL, identifiés par son index de base zéro.
#define GetPIDLFolder(pida) (LPCITEMIDLIST)(((LPBYTE)pida)+(pida)->aoffset[0])
#define GetPIDLItem(pida, i) (LPCITEMIDLIST)(((LPBYTE)pida)+(pida)->aoffset[i+1])
Notes
La valeur retournée par ces macros est un pointeur vers la structure ITEMIDLIST du PIDL. Étant donné que ces structures varient en longueur, vous devez déterminer la fin de la structure en parcourant chacune des structures SHITEMID de la structure ITEMIDLIST jusqu’à atteindre la valeur NULL de deux octets qui marque la fin.
CFSTR_SHELLIDLISTOFFSET
Cet identificateur de format est utilisé avec des formats tels que CF_HDROP, CFSTR_SHELLIDLIST et CFSTR_FILECONTENTS pour spécifier la position d’un groupe d’objets après un transfert. Les données se composent d’une structure STGMEDIUM qui contient un objet de mémoire globale. Le membre hGlobal de la structure pointe vers un tableau de structures POINT . La première structure spécifie les coordonnées de l’écran, en pixels, du coin supérieur gauche du rectangle qui entoure le groupe. Le reste des structures spécifient les emplacements des objets individuels par rapport à la position du groupe. Ils doivent être dans le même ordre que celui utilisé pour répertorier les objets dans le format associé.
Formats de transfert d’objets virtuels
Le format CFSTR_SHELLIDLIST peut être utilisé pour transférer à la fois le système de fichiers et les objets virtuels. Toutefois, il existe également plusieurs formats spécialisés pour le transfert de types particuliers d’objets virtuels.
CFSTR_NETRESOURCES
Cet identificateur de format est utilisé lors du transfert de ressources réseau, telles qu’un domaine ou un serveur. Les données sont une structure STGMEDIUM qui contient un objet de mémoire globale. Le membre hGlobal de la structure pointe vers une structure NRESARRAY . Le membre nr de cette structure indique une structure NETRESOURCE dont le membre lpRemoteName contient une chaîne null qui identifie la ressource réseau. La cible de suppression peut ensuite utiliser les données avec l’une des fonctions de l’API WNet (Windows Networking), telles que WNetAddConnection, pour effectuer des opérations réseau sur l’objet.
CFSTR_PRINTERGROUP
Cet identificateur de format est utilisé lors du transfert des noms conviviaux des imprimantes. Les données sont une structure STGMEDIUM qui contient un objet de mémoire globale. Le membre hGlobal de la structure pointe vers une chaîne au même format que celui utilisé avec CF_HDROP. Toutefois, le membre pFiles de la structure DROPFILES contient un ou plusieurs noms conviviaux d’imprimantes au lieu des chemins de fichier.
CFSTR_INETURL
Cet identificateur de format remplace CFSTR_SHELLURL (déconseillé). Si vous souhaitez que votre application manipule des URL du Presse-papiers, utilisez CFSTR_INETURL au lieu de CFSTR_SHELLURL (déconseillé). Ce format fournit la meilleure représentation dans le Presse-papiers d’une URL unique. Si UNICODE n’est pas défini, l’application récupère la version CF_TEXT/CFSTR_SHELLURL de l’URL. Si UNICODE est défini, l’application récupère la version CF_UNICODE de l’URL.
CFSTR_SHELLURL (déconseillé)
Notes
Cet identificateur de format a été déprécié ; utilisez CFSTR_INETURL à la place.
Formats de communication entre la source et la cible
Ces identificateurs de format permettent la communication entre la source et la cible. Les formats accompagnent les données et donnent aux applications un plus grand contrôle sur les opérations de déplacement-copier-coller ou de glisser-déplacer impliquant des objets Shell.
- CFSTR_INDRAGLOOP
- CFSTR_LOGICALPERFORMEDDROPEFFECT
- CFSTR_PASTESUCCEEDED
- CFSTR_PERFORMEDDROPEFFECT
- CFSTR_PREFERREDDROPEFFECT
- CFSTR_TARGETCLSID
- CFSTR_UNTRUSTEDDRAGDROP
- DragWindow
CFSTR_INDRAGLOOP
Cet identificateur de format est utilisé par un objet de données pour indiquer s’il se trouve dans une boucle de glisser-déplacer. Les données sont une structure STGMEDIUM qui contient un objet de mémoire globale. Le membre hGlobal de la structure pointe vers une valeur DWORD . Si la valeur DWORD n’est pas nulle, l’objet de données se trouve dans une boucle glisser-déplacer. Si la valeur est définie sur zéro, l’objet de données ne se trouve pas dans une boucle de glisser-déplacer.
Certaines cibles de suppression peuvent appeler IDataObject::GetData et tenter d’extraire des données alors que l’objet se trouve toujours dans la boucle glisser-déplacer. Le rendu complet de l’objet pour chaque occurrence de ce type peut entraîner le blocage du curseur de glissement. Si l’objet de données prend en charge CFSTR_INDRAGLOOP, la cible peut utiliser ce format pour case activée l’status de la boucle glisser-déplacer et éviter le rendu gourmand en mémoire de l’objet jusqu’à ce qu’il soit réellement supprimé. Les formats nécessitant beaucoup de mémoire pour le rendu doivent toujours être inclus dans l’énumérateur FORMATETC et dans les appels à IDataObject::QueryGetData. Si l’objet de données ne définit pas CFSTR_INDRAGLOOP, il doit agir comme si la valeur était définie sur zéro.
CFSTR_LOGICALPERFORMEDDROPEFFECT
Version 5.0. Cet identificateur de format permet à une source de suppression d’appeler la méthode IDataObject::GetData de l’objet de données pour déterminer le résultat d’un transfert de données Shell. Les données sont une structure STGMEDIUM qui contient un objet de mémoire globale. Le membre hGlobal de la structure pointe vers un DWORD contenant une valeur DROPEFFECT .
L’identificateur de format CFSTR_PERFORMEDDROPEFFECT était destiné à permettre à la cible d’indiquer à l’objet de données quelle opération a réellement eu lieu. Toutefois, l’interpréteur de commandes utilise des déplacements optimisés pour les objets de système de fichiers chaque fois que cela est possible. Dans ce cas, l’interpréteur de commandes définit normalement la valeur CFSTR_PERFORMEDDROPEFFECT sur DROPEFFECT_NONE, pour indiquer à l’objet de données que les données d’origine ont été supprimées. Par conséquent, la source ne peut pas utiliser la valeur CFSTR_PERFORMEDDROPEFFECT pour déterminer l’opération qui a eu lieu. Bien que la plupart des sources n’ont pas besoin de ces informations, il existe quelques exceptions. Par instance, même si les déplacements optimisés éliminent la nécessité pour une source de supprimer des données, la source peut tout de même devoir mettre à jour une base de données associée pour indiquer que les fichiers ont été déplacés ou copiés.
Si une source a besoin de savoir quelle opération a eu lieu, elle peut appeler la méthode IDataObject::GetData de l’objet de données et demander le format CFSTR_LOGICALPERFORMEDDROPEFFECT. Ce format reflète essentiellement ce qui se passe du point de vue de l’utilisateur une fois l’opération terminée. Si un nouveau fichier est créé et que le fichier d’origine est supprimé, l’utilisateur voit une opération de déplacement et la valeur des données du format est définie sur DROPEFFECT_MOVE. Si le fichier d’origine est toujours présent, l’utilisateur voit une opération de copie et la valeur des données du format est définie sur DROPEFFECT_COPY. Si un lien a été créé, la valeur des données du format est DROPEFFECT_LINK.
CFSTR_PASTESUCCEEDED
Cet identificateur de format est utilisé par la cible pour informer l’objet de données, par le biais de sa méthode IDataObject::SetData , qu’une opération de suppression sur collage a réussi. Les données sont une structure STGMEDIUM qui contient un objet de mémoire globale. Le membre hGlobal de la structure pointe vers un DWORD contenant une valeur DROPEFFECT . Ce format est utilisé pour notifier l’objet de données qu’il doit terminer l’opération de coupe et supprimer les données d’origine, si nécessaire. Pour plus d’informations, consultez Opérations de suppression sur collage.
CFSTR_PERFORMEDDROPEFFECT
Cet identificateur de format est utilisé par la cible pour informer l’objet de données via sa méthode IDataObject::SetData du résultat d’un transfert de données. Les données sont une structure STGMEDIUM qui contient un objet de mémoire globale. Le membre hGlobal de la structure pointe vers un DWORD défini sur la valeur DROPEFFECT appropriée, normalement DROPEFFECT_MOVE ou DROPEFFECT_COPY.
Ce format est normalement utilisé lorsque le résultat d’une opération peut être déplacement ou copie, par exemple dans une opération de déplacement optimisée ou de suppression sur collage. Il fournit un moyen fiable pour la cible de dire à l’objet de données ce qui s’est réellement passé. Il a été introduit parce que la valeur de pdwEffect retournée par DoDragDrop n’indiquait pas de manière fiable l’opération qui avait eu lieu. Le format CFSTR_PERFORMEDDROPEFFECT est le moyen fiable d’indiquer qu’un déplacement non optimisé a eu lieu.
CFSTR_PREFERREDDROPEFFECT
Cet identificateur de format est utilisé par la source pour spécifier si sa méthode de transfert de données préférée est le déplacement ou la copie. Une cible de suppression demande ce format en appelant la méthode IDataObject::GetData de l’objet de données. Les données sont une structure STGMEDIUM qui contient un objet de mémoire globale. Le membre hGlobal de la structure pointe vers une valeur DWORD . Cette valeur est définie sur DROPEFFECT_MOVE si une opération de déplacement est recommandée ou DROPEFFECT_COPY si une opération de copie est recommandée.
Cette fonctionnalité est utilisée lorsqu’une source peut prendre en charge une opération de déplacement ou de copie. Il utilise le format CFSTR_PREFERREDDROPEFFECT pour communiquer sa préférence à la cible. Étant donné que la cible n’est pas tenue d’honorer la demande, la cible doit appeler la méthode IDataObject::SetData de la source avec un format CFSTR_PERFORMEDDROPEFFECT pour indiquer à l’objet de données quelle opération a réellement été effectuée.
Avec une opération de suppression sur collage , le format CFSTR_PREFERREDDROPFORMAT est utilisé pour indiquer à la cible si la source a effectué une coupe ou une copie. Avec une opération de glisser-déplacer, vous pouvez utiliser CFSTR_PREFERREDDROPFORMAT pour spécifier l’action de l’interpréteur de commandes. Si ce format n’est pas présent, l’interpréteur de commandes effectue une action par défaut, en fonction du contexte. Par instance, si un utilisateur fait glisser un fichier d’un volume et le dépose sur un autre volume, l’action par défaut de l’interpréteur de commandes consiste à copier le fichier. En incluant un format CFSTR_PREFERREDDROPFORMAT dans l’objet de données, vous pouvez remplacer l’action par défaut et demander explicitement à l’interpréteur de commandes de copier, déplacer ou lier le fichier. Si l’utilisateur choisit de faire glisser avec le bouton droit, CFSTR_PREFERREDDROPFORMAT spécifie la commande par défaut dans le menu contextuel glisser-déplacer . L’utilisateur est toujours libre de choisir d’autres commandes dans le menu.
Avant Microsoft Internet Explorer 4.0, une application indiquait qu’elle transférait des types de fichiers de raccourci en définissant FD_LINKUI dans le membre dwFlags de la structure FILEDESCRIPTOR. Les cibles devaient ensuite utiliser un appel potentiellement chronophage à IDataObject::GetData pour savoir si l’indicateur FD_LINKUI était défini. À présent, la méthode recommandée pour indiquer que des raccourcis sont transférés consiste à utiliser le format CFSTR_PREFERREDDROPEFFECT défini sur DROPEFFECT_LINK. Toutefois, pour la compatibilité descendante avec les systèmes plus anciens, les sources doivent toujours définir l’indicateur FD_LINKUI.
CFSTR_TARGETCLSID
Cet identificateur de format est utilisé par une cible pour fournir son CLSID à la source. Les données sont une structure STGMEDIUM qui contient un objet de mémoire globale. Le membre hGlobal de la structure pointe vers le GUID CLSID de la cible de suppression.
Ce format est principalement utilisé pour permettre la suppression d’objets en les faisant glisser vers la Corbeille. Lorsqu’un objet est supprimé dans la Corbeille, la méthode IDataObject::SetData de la source est appelée avec un format CFSTR_TARGETCLSID défini sur le CLSID (CLSID_RecycleBin) de la Corbeille. La source peut ensuite supprimer l’objet d’origine.
CFSTR_UNTRUSTEDDRAGDROP
Cet identificateur de format est utilisé par Windows Internet Explorer et Windows Shell pour fournir un mécanisme permettant de bloquer ou d’inviter des opérations de glisser-déplacer provenant d’Internet Explorer conjointement avec l’indicateur URLACTION_SHELL_ENHANCED_DRAGDROP_SECURITY.
CFSTR_UNTRUSTEDDRAGDROP est ajouté par la source d’une opération de glisser-déplacer pour spécifier que l’objet de données peut contenir des données non fiables. Les données sont représentées par une structure STGMEDIUM qui contient un objet de mémoire globale. Le membre hGlobal de la structure pointe vers un paramètre DWORD défini sur un indicateur d’action d’URL approprié pour provoquer une case activée de stratégie via la méthode IInternetSecurityManager::P rocessUrlAction, à l’aide de l’indicateur PUAF_ENFORCERESTRICTED.
DragWindow
Ce format est utilisé dans une opération de glisser-déplacer pour identifier l’image glisser (fenêtre) d’un objet afin que ses informations visuelles puissent être mises à jour dynamiquement. Lorsqu’un objet est déplacé sur une cible de suppression, une application met à jour sa structure DROPDESCRIPTION en réponse à la méthode IDropTarget::D ragOver ou IDropSource::GiveFeedback . DROPDESCRIPTION est mis à jour avec une nouvelle valeur DROPIMAGETYPE qui indique la décoration à appliquer au visuel de la fenêtre de glissement ; par instance, une indication que le fichier est en cours de copie plutôt que déplacé ou que l’objet ne peut pas être déposé à cet emplacement. Toutefois, tant que l’objet ne reçoit pas un message DDWM_UPDATEWINDOW , les visuels ne sont pas mis à jour. Ce format fournit le HWND de la fenêtre de glissement du destinataire vers l’expéditeur du message DDWM_UPDATEWINDOW .
Les données du Presse-papiers sont de type TYMED_HGLOBAL. Il s’agit d’une représentation DWORD d’un HWND. Les données peuvent être transmises à la fonction ULongToHandle , définie dans Basetsd.h, pour fournir un HWND 64 bits à utiliser sur Windows 64 bits.
Ce format ne nécessite pas l’inclusion de Shlobj.h.