IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Comment fait on pour lire et modifier les File Summary d'un fichier?


Sujet :

VB.NET

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 24
    Points : 19
    Points
    19
    Par défaut Comment fait on pour lire et modifier les File Summary d'un fichier?
    Salut

    Comment fait on pour lire et modifier les File Summary d'un fichier?

    Comme par exemple:
    -Titre
    - Sujet
    - Auteur
    - Catégorie

    Une idée?

    Merci d avance,

    Welby

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    tu peux jeter un coup d'oeil à cette discussion :
    http://www.developpez.net/forums/showthread.php?t=821

  3. #3
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    Pour le point "modifier" (vu que c'est celui là que j'ai utilisé)
    Le plus simple est de créer une dll en C++/CLI et qui fera le travail.
    L'avantage du C++/CLI est qu'on peut faire du C++ tranquillement et que le résultat (la classe SummaryInfoHelper) peut être utilisée directement à partir d'un langage .NET ...

    Code c++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
     
    #define CLRSTRINGA(name,clr_name) ClrStringA ^ clr_name = gcnew ClrStringA(name);
     
    		public ref class SummaryInfoHelper
    		{
    		private:
     
    			static void CopyStrings(CHAR * pDest,LPCSTR pSource,LONG Length)
    			{
    				if(pSource == NULL)
    					ZeroMemory(pDest,Length);
    				else
    					strcpy(pDest,pSource);
    			}
     
    			static BOOL nativeSetSummaryInfoItem(
    				LPCSTR fileName,
    				LPCSTR title,
    				LPCSTR subject,
    				LPCSTR author,
    				LPCSTR keywords,
    				LPCSTR comments
    				)
    			{
     
    #define STR_BUF_SIZE 1024
     
    				WCHAR wcFilename[STR_BUF_SIZE];
    				IPropertySetStorage *pPropSetStg = NULL;
    				IPropertyStorage *pPropStg = NULL;
    				ZeroMemory(wcFilename,STR_BUF_SIZE);
     
    				//Convert to unicode
    				mbstowcs(wcFilename, fileName, strlen(fileName ));
     
    				CHAR p_title[STR_BUF_SIZE];
    				CHAR p_subject[STR_BUF_SIZE];
    				CHAR p_author[STR_BUF_SIZE];
    				CHAR p_keywords[STR_BUF_SIZE];
    				CHAR p_comments[STR_BUF_SIZE];
     
     
    #define COPY_STRINGS(a,b) CopyStrings(a,b,STR_BUF_SIZE)
     
    				COPY_STRINGS(p_title,title);
    				COPY_STRINGS(p_subject,subject);
    				COPY_STRINGS(p_author,author);
    				COPY_STRINGS(p_keywords,keywords);
    				COPY_STRINGS(p_comments,comments);
     
    				//Get the IPropertySetStorage interface
    				HRESULT rx = StgOpenStorageEx(wcFilename, STGM_READWRITE|STGM_SHARE_EXCLUSIVE, STGFMT_ANY, 0, NULL, NULL, IID_IPropertySetStorage, (void**)&pPropSetStg );
     
    				//CREATE summary information, getting an IpropertyStorage. ( AUDREY )
    				HRESULT rt = pPropSetStg->Create(FMTID_SummaryInformation,NULL,PROPSETFLAG_DEFAULT,STGM_SIMPLE|STGM_READWRITE|STGM_SHARE_EXCLUSIVE, &pPropStg);
     
    				//Tell Windows to set Title,Subject,Author,Keywords and Comments properties
    				PROPSPEC ps[5];
    				ps[0].ulKind = PRSPEC_PROPID; 
    				ps[0].propid = PIDSI_TITLE;
    				ps[1].ulKind = PRSPEC_PROPID; 
    				ps[1].propid = PIDSI_SUBJECT;
    				ps[2].ulKind = PRSPEC_PROPID; 
    				ps[2].propid = PIDSI_AUTHOR;
    				ps[3].ulKind = PRSPEC_PROPID; 
    				ps[3].propid = PIDSI_KEYWORDS;
    				ps[4].ulKind = PRSPEC_PROPID; 
    				ps[4].propid = PIDSI_COMMENTS;
     
    				//Properties values
    				PROPVARIANT pv[5];
    				pv[0].vt = VT_LPSTR;
    				pv[0].pszVal = p_title;//"The title";
    				pv[1].vt = VT_LPSTR;
    				pv[1].pszVal = p_subject;//"The subject";
    				pv[2].vt = VT_LPSTR;
    				pv[2].pszVal = p_author;//"The author of this file";
    				pv[3].vt = VT_LPSTR;
    				pv[3].pszVal = p_keywords;//"keywords,keywords,keywords";
    				pv[4].vt = VT_LPSTR;
    				pv[4].pszVal = p_comments;//"Comment";
     
    				//Write to file
    				pPropStg->WriteMultiple(5, ps, pv, 0);
     
    				//Release interfaces in the reverse order in which they where obtained
    				pPropStg->Release();
    				pPropSetStg->Release();
     
    				return TRUE;
    			}
     
    		public:
    			static void SetSummaryInfo(
    				System::String ^ fileName,
    				System::String ^ title,
    				System::String ^ subject,
    				System::String ^ author,
    				System::String ^ keywords,
    				System::String ^ comments
    				)
    			{
     
    				CLRSTRINGA(fileName,_fileName);
    				CLRSTRINGA(title,_title);
    				CLRSTRINGA(subject,_subject);
    				CLRSTRINGA(author,_author);
    				CLRSTRINGA(keywords,_keywords);
    				CLRSTRINGA(comments,_comments);
     
    				try 
    				{
     
    					nativeSetSummaryInfoItem(
    						_fileName->native_str(),
    						_title->native_str(),
    						_subject->native_str(),
    						_author->native_str(),
    						_keywords->native_str(),
    						_comments->native_str()
    						);
     
    				}
    				finally
    				{
     
    					delete _fileName;
    					delete _title;
    					delete _subject;
    					delete _author;
    					delete _comments;
     
    				}
    			}
     
     
    		};

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 54
    Points : 11
    Points
    11
    Par défaut
    Pourrais-tu m'aider, j'essai de compiler ton code mais ca ne marche pas, j'utilise Dev-C++.

  5. #5
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    Citation Envoyé par slayer418 Voir le message
    Pourrais-tu m'aider, j'essai de compiler ton code mais ca ne marche pas, j'utilise Dev-C++.
    Heu ... déjà que tu ne dit pas quel message ou quelle erreur ça affiche ...
    Ce code fonctionnais avec Visual C++ .NET 2005 (en faisant un projet C++/CLI). Et a ma connaissance, DevC++ ne permet pas de faire du C++/CLI ...

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 54
    Points : 11
    Points
    11
    Par défaut
    Je vien d'essayer avec Visual C++ 2008 Express mais ca marche pas non plus, je me demande bien où est-ce que tu a trouver Visual C++ .Net 2005, j'ai cherché et on dirait qu'il n'est plus téléchargable...

  7. #7
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    Citation Envoyé par slayer418 Voir le message
    Je vien d'essayer avec Visual C++ 2008 Express
    Il te faudrait aussi le Platform SDK
    Citation Envoyé par slayer418 Voir le message
    mais ca marche pas non plus
    Allez-vous vous décider à apporter plus de précisions lorsque vous dites "ça marche pas" ? quel message d'erreur ? quel problème ?! tsss
    Citation Envoyé par slayer418 Voir le message
    je me demande bien où est-ce que tu a trouver Visual C++ .Net 2005
    Peut être que tout simplement à l'époque de ce code VS 2008 n'était pas encore sortit ... tu va pas me dire que tu crois que VS 2008 a toujours existé ...

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 54
    Points : 11
    Points
    11
    Par défaut
    Bah j'ai au moin 50 erreurs, mais tu pourrais pas m'envoyer le DLL puisque je n'ais pas le necessaire pour compiler cette source (SVP!), comme ca je pourrais l'utiliser directement.

  9. #9
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    ...

    Bon par contre pour une raison que j'ignore, les informations n'apparaissent pas dans l'explorateur alors qu'elle semblent avoir été correctement créées. Le pire c'est que ce truc je n'y ai pas touché depuis 1 an et qu'à la base ça marchait à chaque fois ... Quelqu'un pourrai tester ? (tout est dans la pièce jointe).
    Fichiers attachés Fichiers attachés

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 99
    Points : 122
    Points
    122
    Par défaut
    Ca compile en VS2008 et ça fonctionne

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 54
    Points : 11
    Points
    11
    Par défaut
    Merci, bon j'ai essayer SummaryInfoTest mais ca bug , C# me renvoi ca:
    Impossible de charger le fichier ou l'assembly 'SumaryInfoLib, Version=1.0.3115.40446, Culture=neutral, PublicKeyToken=null' ou une de ses dépendances. Cette application n'a pas pu démarrer car la configuration de l'application est incorrecte. Réinstaller l'application pourrait résoudre ce problème. (Exception de HRESULT : 0x800736B1)

  12. #12
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    Tu as pensé à installer les runtimes de Visual C++ ? (à défaut, copier les dlls MSVCR et compagnie dans le même dossier ...)

Discussions similaires

  1. Réponses: 3
    Dernier message: 20/10/2008, 12h10
  2. Comment fait-on pour déclarer et lire un fichier ?
    Par arris85 dans le forum Langage
    Réponses: 1
    Dernier message: 23/05/2007, 20h56
  3. Réponses: 9
    Dernier message: 11/04/2007, 10h56
  4. [Configuration] Comment faites-vous pour séparer les paramètres offline/online
    Par robichou dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 20/02/2007, 02h51
  5. Réponses: 6
    Dernier message: 08/04/2005, 03h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo