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

Visual C++ Discussion :

GetOpenFileName fait planter SHELL32.dll


Sujet :

Visual C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Développeur indépendant
    Inscrit en
    Août 2004
    Messages
    374
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Développeur indépendant
    Secteur : Transports

    Informations forums :
    Inscription : Août 2004
    Messages : 374
    Par défaut GetOpenFileName fait planter SHELL32.dll

    c'est vraiment trés bizarre, j'ai essayé pas mal de choses, en particulier les exemples d'utilisation de la faq visualc++ pour le cfiledialog , et moult autres exemples dédiés à la selection d'un fichier, mais j'arrive toujours au même resultat.
    lorsque je veux selectionner un fichier situé sur le bureau windows, la premiere selection se passe parfaitement bien, mais la deuxieme, finit invariablement par faire planter le programme dans son ensemble, sans meme un message, rien.
    Petite précison, le plantage ne se produit QUE lorsque c'est le deuxieme fichier que je vais chercher, et exclusivement sur le bureau windows, et que lorsque je passe ma souris sur une icone de fichier existant. le passage sur les liens ne fait pas planter la boite de dialogue..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    	CString t1,t2;
    	t1.LoadString(IDS_STRING32836);  //Tous fichiers
    	t2.LoadString(IDS_STRING33285);	//Selection du fichier
     
    	TCHAR file[MAX_PATH]=TEXT("");
    	TCHAR path[MAX_PATH]=TEXT("");
    	OPENFILENAME ofn= { sizeof(OPENFILENAME), AfxGetMainWnd()->m_hWnd, NULL,
                             TEXT("all files\0*.*\0\0"), NULL,
                             0, 1, file, MAX_PATH, NULL, 0, path,
                             TEXT(t2),   //"Selection du fichier"),
                             OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST, 0, 0,
                             TEXT("*.*"), 0, NULL, NULL };
    	int a=GetOpenFileName( &ofn );
    et ca me donne en mode debug un splendide
    unhandled exception in shell32.dll 0x0000000C5 access violation...
    et cela ne se produit QUE lorsque c'est la deuxieme fois que je vais selectionner un fichier sur ce satané bureau..
    quelques fois aussi, j'ai des faux espoirs, car cela ne se produit que la troisieme fois...
    j'ai trouve un poste sur usenet qui pourrait décrire le meme probleme et son eventuelle solution, à savoir augmenter la taille du stack, mais probleme, comment faire sous visual c++6.???
    autrement, je suis à la recherche de toute autre solution qui me permettrait de selectionner un fichier à la fois sans faire planter cette satannée dll..

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    1. Bizarre, le coup du TEXT(t2)...
    2. Tu es en MFC, tu devrais essayer avec une CFileDialog...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre très actif
    Profil pro
    Développeur indépendant
    Inscrit en
    Août 2004
    Messages
    374
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Développeur indépendant
    Secteur : Transports

    Informations forums :
    Inscription : Août 2004
    Messages : 374
    Par défaut essayer avec un cfiledialog
    oui, en effet,j'ai essayé aussi, mais ca donne le meme resultat.
    j'ai même ét jusqu'à prendre le source de la faq visual c++ cfiledialog pour le mettre dedans et j'ai exactement le meme plantage

  4. #4
    Membre très actif
    Profil pro
    Développeur indépendant
    Inscrit en
    Août 2004
    Messages
    374
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Développeur indépendant
    Secteur : Transports

    Informations forums :
    Inscription : Août 2004
    Messages : 374
    Par défaut arrggg
    arggg
    j'y perds mon latin, j'ai essayé d'augmenter la pile, des morceaux de code recuperes ici ou la, mais j'ai toujours le meme probleme, et seulement quand je vais chercher un fichier pour la deuxieme fois sur le bureau..
    ya t-il quelque chose qui doit etre reinitialisé dans le cfiledialog ou le getopenfilename.?? j'y perds mon latin, car c'est vraiment à l'intérieur de cette fichue dll que se produit l'erreur.
    j'arrive meme pas à la recuperer en faisant des try/catch..

  5. #5
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Je ne sais pas, il y a peut-être un truc mal initialisé...

    Pour les try/catch, c'est normal, le "C++ exception handling" n'arrête pas ce type d'exceptions car ce ne sont pas des exceptions C++.
    Essaie le Structured Exception Handling pour cela...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    Membre très actif
    Profil pro
    Développeur indépendant
    Inscrit en
    Août 2004
    Messages
    374
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Développeur indépendant
    Secteur : Transports

    Informations forums :
    Inscription : Août 2004
    Messages : 374
    Par défaut bon, quand il faut, ben, il faut...

    constatant une fois de plus que le shell de windows est codé avec des pieds d'imbécile cul de jatte, plus qu'une chose à faire...
    j'ai recodé complétement le composant...ca m'a pris quelques jours pour maitriser la chose, mais au moins, je suis sûr que ca ne va pas me provoquer un plantage intempestif.
    encore un bel exemple de l'absence de révision des codes sources de windows.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. GetOpenFilename fait planter Excel
    Par punky_brooster dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 25/11/2014, 11h11
  2. fonction dans dll qui fait planter programme
    Par chris069 dans le forum C++
    Réponses: 22
    Dernier message: 28/04/2009, 16h19
  3. probleme de requette qui fait planter powergres
    Par fehmitn dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 15/09/2004, 18h48
  4. Réponses: 12
    Dernier message: 16/03/2004, 14h21
  5. fonction qui en fait planter une autre
    Par ickis dans le forum C
    Réponses: 5
    Dernier message: 18/08/2003, 21h33

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