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

C# Discussion :

énumérer les ressources d'un programme


Sujet :

C#

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 18
    Points : 9
    Points
    9
    Par défaut énumérer les ressources d'un programme
    Bonjour,
    j'utilise les informations fournies par le site p/invoke pour énumérer les ressources d'un programme. J'ai pris un programme au hasard dans mon pc. Il contient des ressources possédant des noms et d'autres possédant un ID.
    L'énumération des types est correcte, celles de noms aussi. Seule l'énumération des langues pose problème.
    L'appel de la fonction EnumResourceLanguages retourne false pour les seules ressources possédant un nom. Elle fonctionne bien avec les ressources ayant seulement un ID.
    bool bret = EnumResourceLanguages(hModule, lpszType,
    lpszName, new EnumResLangDelegate(EnumResLangCallback), lParam);
    if (bret == false)
    {
    throw new Win32Exception(Marshal.GetLastWin32Error());
    }

    Le code d'erreur est inconnu. J'utilise Ps pour obtenir la valeur décimale, hexadécimale et le texte :
    PS C:\Users\noel> [ComponentModel.Win32Exception] -532462766
    Unknown error (0xe0434352)

    Un extrait de l'affichage pour montrer l'anomalie :
    Type : WEVT_TEMPLATE
    Name: 1
    erreur: -532462766
    Type : XMLFILE
    Name: 100
    erreur: -532462766
    Type : 2
    Name: 1
    Language: 1033
    Name: 2
    Language: 1033

    Je joins mon code source pour faciliter la réponse.
    Merci d'avance.
    Fichiers attachés Fichiers attachés

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 18
    Points : 9
    Points
    9
    Par défaut mauvaise signature de EnumResourceLanguages
    // [DllImport("kernel32.dll")]
    // static extern bool EnumResourceLanguages(IntPtr hModule, IntPtr lpszType,
    // IntPtr lpName, EnumResLangDelegate lpEnumFunc, IntPtr lParam);
    [DllImport("kernel32.dll",
    CharSet = CharSet.Unicode, SetLastError = true)]
    static extern bool EnumResourceLanguages(IntPtr hModule, IntPtr lpszType,
    IntPtr lpName, EnumResLangDelegate lpEnumFunc, IntPtr lParam);

    C'était tout simplement une mauvaise signature pour cette fonction.
    Il n'y a plus d'erreur :
    Type : EDPPERMISSIVEAPPINFOID
    Name: MICROSOFTEDPPERMISSIVEAPPINFO
    Language: 1033
    Type : MUI
    Name: 1
    Language: 1036
    Language: 1033

Discussions similaires

  1. Réponses: 9
    Dernier message: 05/03/2013, 12h07
  2. Réponses: 3
    Dernier message: 26/02/2007, 18h00
  3. Afficher les ressources d'un programme
    Par Loceka dans le forum Windows XP
    Réponses: 3
    Dernier message: 12/10/2006, 22h04
  4. Observer les ressources d'un programme
    Par pataguillon dans le forum Windows
    Réponses: 6
    Dernier message: 19/05/2006, 13h57
  5. Libérer les ressources lors de la fermeture d'un programme
    Par Heliopraetor dans le forum DirectX
    Réponses: 10
    Dernier message: 14/09/2004, 19h15

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