Partager via


Champs de dossier Stream structures

S’applique à : Outlook 2013 | Outlook 2016

La propriété PidTagUserFields d’un message contient un flux binaire, FolderUserFields, qui contient les définitions de champ définies par l’utilisateur du dossier. Cette rubrique décrit les structures de flux pour les définitions de champs définis par l’utilisateur de dossier.

Une structure de flux FolderUserFields se compose d’une structure FolderUserFieldsA ou d’une structure FolderUserFieldsA suivie d’une structure FolderUserFieldsW.

Les éléments de données de ce flux sont stockés immédiatement les uns après les autres dans l’ordre spécifié suivant :

  • FolderUserFieldsAnsi : structure de flux FolderUserFieldsA.

  • FolderUserFieldsUnicode (facultatif) : structure de flux FolderUserFieldsW.

La présence de FolderUserFieldsUnicode est détectée par la longueur totale de FolderUserFields supérieure à la longueur de FolderUserFieldsAnsi.

Importante

FolderUserFieldsAnsi est utilisé pour la compatibilité avec les versions antérieures non-Unicode des clients MAPI. Par conséquent, si FolderUserFieldsUnicode est présent, le contenu de FolderUserFieldsAnsi est ignoré. Pour éviter toute perte de données lors de la conversion ANSI, lors de la création d’un flux FolderUserFields, incluez toujours la partie FolderUserFieldsW.

FolderUserFieldsUne structure Stream

FolderUserFieldsUne structure de flux est un tableau de structures de flux FolderFieldDefinitionA qui contiennent des définitions pour tous les champs définis par l’utilisateur dans un dossier Outlook, sauf si la partie FolderUserFieldsW de la structure FolderUserFields.

Les éléments de données de ce flux sont stockés dans l’ordre d’octet little-endian, qui se suivent immédiatement dans l’ordre spécifié suivant :

  • FieldDefinitionCount : DWORD (4 octets), nombre de définitions de champs dans ce flux. Il s’agit du nombre d’éléments dans le tableau FieldDefinitions .

  • FieldDefinitions : tableau de structures de flux FolderFieldDefinitionA. Le nombre de ce tableau est égal à l’élément de données FieldDefinitionCount .

À moins que ce FolderUserFieldsA ne soit remplacé par la partie FolderUserFieldsW de la structure FolderUserFields, le tableau FieldDefinitions doit être « terminé par null » en ayant son dernier champ Common.FieldType de l’élément FolderFieldDefinitionA égal à ftNull.

FolderUserFieldsW, structure Stream

Une structure de flux FolderUserFieldsW est un tableau de structures de flux FolderFieldDefinitionW qui contiennent des définitions pour tous les champs définis par l’utilisateur dans un dossier Outlook.

Les éléments de données de ce flux sont stockés dans l’ordre d’octet little-endian, qui se suivent immédiatement dans l’ordre spécifié suivant :

  • FieldDefinitionCount : DWORD (4 octets), nombre de définitions de champs dans ce flux. Il s’agit du nombre d’éléments dans le tableau FieldDefinitions .

  • FieldDefinitions : tableau de structures de flux FolderFieldDefinitionW. Le nombre de ce tableau est égal à l’élément de données FieldDefinitionCount .

Le tableau FieldDefinitions doit être « terminé par null » si le champ Common.FieldType de son dernier élément FolderFieldDefinitionW est égal à ftNull.

FolderFieldDefinitionA Stream, structure

Une structure de flux FolderFieldDefinitionUne structure de flux contient une définition d’un champ défini par l’utilisateur avec le nom de champ stocké dans ANSI.

Les éléments de données de ce flux sont stockés dans l’ordre d’octet little-endian, qui se suivent immédiatement dans l’ordre spécifié suivant :

  • FieldType : FldType (4 octets), type de ce champ.

  • FieldNameLength : WORD (2 octets), nombre d’éléments dans le tableau FieldName .

  • FieldName : tableau de CHAR. Il s’agit de la représentation de la page de codes ANSI CP_ACP du nom du champ. Le nombre de ce tableau est égal à FieldNameLength. Le nom du champ doit respecter les restrictions sur le paramètre Name comme spécifié dans la méthode UserProperties.Add .

    Remarque

    Pour des raisons de compatibilité héritée, Outlook peut être en mesure de gérer certaines valeurs FieldName ne répondant pas à ces restrictions, mais ces cas ne sont pas couverts par cette rubrique.

  • Common : structure de flux FolderFieldDefinitionCommon.

FolderFieldDefinitionW, structure Stream

Une structure de flux FolderFieldDefinitionW contient une définition d’un champ défini par l’utilisateur avec le nom de champ stocké en Unicode.

Les éléments de données de ce flux sont stockés dans l’ordre d’octet little-endian, qui se suivent immédiatement dans l’ordre spécifié suivant :

  • FieldType : FldType (4 octets), type de ce champ.

  • FieldNameLength : WORD (2 octets), nombre d’éléments dans le tableau FieldName .

  • FieldName : tableau de WCHAR. Il s’agit de la représentation Unicode (UTF-16) du nom du champ. Le nombre de ce tableau est égal à FieldNameLength. Le nom du champ doit respecter les restrictions sur le paramètre Name comme spécifié dans la méthode UserProperties.Add .

    Remarque

    Pour des raisons de compatibilité héritée, Outlook peut être en mesure de gérer certaines valeurs FieldName ne répondant pas à ces restrictions, mais ces cas ne sont pas couverts par cette rubrique.

  • Common : structure de flux FolderFieldDefinitionCommon.

FldType, énumération

Les valeurs d’énumération FldType sont répertoriées dans le tableau suivant.

Nom Valeur Signification
ftNull
0x0
Ce type de champ est utilisé pour terminer null un tableau de définitions de champs.
ftString
0x1
Texte
ftInteger
0x3
Entier
ftTime
0x5
Date/Heure
ftBoolean
0x6
Oui/Non
ftDuration
0x7
Durée
ftMultiString
0xB
Mots-clés
ftFloat
0xC
Nombre ou pourcentage
ftCurrency
0xE
Devise
ftCalc
0x12
Formule
ftSwitch
0x13
Combinaison de type affichant uniquement le premier champ non vide, en ignorant les champs suivants.
ftConcat
0x17
Combinaison de champs de jointure de type et de fragments de texte les uns aux autres.

FolderFieldDefinitionCommon, structure Stream

Une structure de flux FolderFieldDefinitionCommon contient les données d’une définition de champ définie par l’utilisateur qui est commune à un FolderFieldDefinitionA et à un FolderFieldDefinitionW.

Les éléments de données de ce flux sont stockés dans l’ordre d’octet little-endian, qui se suivent immédiatement dans l’ordre spécifié suivant :

  • PropSetGuid : GUID (16 octets), GUID du jeu de propriétés du nom de propriété MAPI correspondant du champ de dossier. La valeur de ce champ doit être égale à PS_PUBLIC_STRINGS, sauf si le type de champ est ftNone , auquel cas la valeur de ce champ doit être égale à GUID_NULL.

    Remarque

    Pour des raisons de compatibilité héritée, Outlook peut être en mesure de gérer certaines valeurs PropSetGuid ne répondant pas à cette restriction, mais ces cas ne sont pas couverts par cette rubrique.

  • fcapm : DWORD (4 octets), combinaison de zéro ou plusieurs indicateurs dont les valeurs et les significations sont répertoriées dans le tableau suivant. Les indicateurs avec la même valeur ont une signification dépendante du type du champ, c’est-à-dire de la valeur FldType.

    Nom de l’indicateur Valeur Signification
    FCAPM_CAN_EDIT
    0x00000001
    Le champ est modifiable.
    FCAPM_CAN_SORT
    0x00000002
    Le champ peut être trié.
    FCAPM_CAN_GROUP
    0x00000004
    Le champ est groupable.
    FCAPM_MULTILINE_TEXT
    0x00000100
    Le champ peut contenir plusieurs lignes de texte.
    FCAPM_PERCENT
    0x01000000
    Ce champ de type ftFloat est un champ de pourcentage.
    FCAPM_DATEONLY
    0x01000000
    Ce champ de type ftTime est un champ date-heure uniquement.
    FCAPM_UNITLESS
    0x01000000
    Pour ce champ de type ftInteger, aucune unité n’est autorisée au format d’affichage ; par exemple, des formats tels que « Ordinateur - 640 K... » ne sont pas autorisés.
    FCAPM_CAN_EDIT_IN_ITEM
    0x80000000
    Le champ peut être modifié dans l’élément : il s’agit spécifiquement des formulaires personnalisés.
  • dwString : DWORD (4 octets). Consultez la première remarque suivante.

  • dwBitmap : DWORD (4 octets). Consultez la première remarque suivante.

  • dwDisplay : DWORD (4 octets). Consultez la première remarque suivante.

  • iFmt : INT (4 octets). Pour les types de champs qui ont la zone de liste déroulante « Format : » dans les boîtes de dialogue « Nouveau champ », « Modifier le champ » et « Propriétés du champ », l’index de base 0 du format sélectionné dans cette zone de liste déroulante. Pour les types de champs sans cette zone de liste déroulante, cette valeur doit être 0. La valeur du champ et le type de champ déterminent de manière unique les valeurs des champs dwString, dwBitmap et dwDisplay . Consultez la première note suivante.

  • wszFormulaLength : WORD (2 octets), nombre d’éléments dans le tableau wszFormulaLength .

  • wszFormulaLength : tableau de WCHAR. Il s’agit de la représentation Unicode (UTF-16) de la chaîne de formule du champ dans son format standard. Consultez la deuxième remarque suivante pour obtenir la description des formats standard et d’interface utilisateur de la formule d’un champ. Le nombre de ce tableau est égal à wszFormulaLength. La chaîne de formule doit être une chaîne vide, sauf si le type de champ est ftCalc, ftSwitch ou ftConcat.

Remarque

Bien que les valeurs de dwString, dwBitmap et dwDisplay soient déterminées de manière unique en fonction de la valeur FldType et de la valeur iFmt , qui sont redondantes, leurs valeurs correctes sont toujours nécessaires pour le traitement correct de la définition de champ par Outlook. Il n’existe pas de description simple de l’algorithme qui effectue cette détermination.

Par conséquent, pour déterminer quelles valeurs dwString, dwBitmap et dwDisplay correspondent à une valeur FldType et à une valeur iFmt données, effectuez un test en créant un champ défini par l’utilisateur de ce type et avec ce format sélectionné dans la zone de liste déroulante Format , en supposant son applicabilité, examinez le flux FolderUserFields créé par Outlook pour ce champ défini par l’utilisateur.

La formule du champ dans son format d’interface utilisateur est modifiée dans la zone de texte Formule des boîtes de dialogue Nouveau champ, Modifier le champ et Propriétés du champ pour le champ défini par l’utilisateur. L’algorithme permettant de convertir une formule du format d’interface utilisateur au format standard dépend du type de champ, comme décrit dans ce qui suit :

  • Pour les champs de types ftCalc et ftSwitch, le format standard des champs intégrés, dont les propriétés MAPI correspondantes ne sont pas des propriétés nommées du type MNID_STRING, est obtenu en remplaçant les fragments de nom de champ, c’est-à-dire [<field_name>] par des fragments [_<field_dispid_decimal>].

    Par exemple, si le format d’interface utilisateur d’une formule pour un champ du type Formula, qui est ftCalc, dont la langue de l’interface utilisateur Office est l’anglais américain, est [Business Phone] & [My custom field], où My custom field est le nom d’un champ défini par l’utilisateur, le format standard d’une telle formule est [_14856] & [My custom field].

  • Pour les champs de type ftConcat, le format standard est obtenu en effectuant les opérations suivantes :

    1. Tronquer les espaces blancs de début et de fin.
    2. Analysez la formule dans une séquence de fragments des deux types suivants :
      • Nom de champ entre crochets, c’est-à-dire [<field_name>].
      • Sous-chaîne ne contenant pas de crochets.
        Assurez-vous qu’aucun fragment du deuxième type n’est adjacent dans la séquence. Si la formule ne peut pas être analysée de cette façon, elle est considérée comme non valide.
    3. Effectuez le même remplacement pour les fragments du premier type que pour les champs ftCalc et ftSwitch .
    4. Pour chaque fragment du deuxième type, placez dans une séquence d’échappement tous les caractères entre guillemets doubles (« » »), le cas échéant, avec deux guillemets doubles consécutifs, et placez-le entre guillemets doubles.
    5. Insérez une chaîne en esperluette (&) entre chaque paire de fragments adjacents.

    Par exemple, à l’aide de la langue d’interface utilisateur Office (ANGLAIS) US, si le format d’interface utilisateur d’une formule pour un champ de type ftConcat est text1 [Business Phone] "text2" [My custom field], où My custom field est le nom d’un champ défini par l’utilisateur, le format standard d’une telle formule est ""text1" & [_14856] & """text2""" & [My custom field]".

Voir aussi