Erreur lorsque j'ouvre un dossier

grosbidou21 Messages postés 74 Date d'inscription mardi 3 février 2004 Statut Membre Dernière intervention 5 février 2010 - 4 mai 2007 à 10:56
grosbidou21 Messages postés 74 Date d'inscription mardi 3 février 2004 Statut Membre Dernière intervention 5 février 2010 - 4 mai 2007 à 14:41
Bonjour à tous,
J'ai un petit soucis. Lorsque je veux ouvrir un dossier choisis dans l'explorer grace au code suivant : ...

    Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As IntPtr, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

        Chemindossier="C:\Images"   ' Par exemple

        Try
            If Directory.Exists(CheminDossier) Then
                ShellExecute(0, "open", "", "", CheminDossier, 3)
            End If
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try

...j'obtiens l'erreur :

"Un appel à la fonction PInvoke 'Elimination!Elimination.FrmPrincipale::ShellExecute' a déséquilibré la pile. Cela peut se produire, car la signature PInvoke managée ne correspond pas à la signature cible non managée. Vérifiez que la convention d'appel et les paramètres de la signature PInvoke correspondent à la signature non managée cible."

Ce que je comprends pas c'est que mon dossier s'ouvre bien malgré l'erreur et que cette erreur là n'est pas gérée par le "Catch" mais le compilateur s'arrete en me soulignant la ligne "ShellExecute..."

Quelqu'un a une idée??
Merci d'avance

La programation c'est au moins autant prise de tête que ... je ne vois pas rien ne l'égale...

13 réponses

jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
4 mai 2007 à 11:09
Bonjour,

Es-tu certain de développer sous VB.Net ?

Si oui, tu ne peux avoir des types long dans ta déclaration de la fonction ShellExecute !
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
4 mai 2007 à 11:10
Tu semble etre en .Net

En .Net les types de variables ont changés par rapport aux API

Il te faut remplacer tous les Long par des Integer dans  la déclaration de ShellExecute

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
grosbidou21 Messages postés 74 Date d'inscription mardi 3 février 2004 Statut Membre Dernière intervention 5 février 2010 2
4 mai 2007 à 11:12
C'est bien du .NET 2005
Pourquoi je ne peux pas avoir de type long? Faut les remplacer par des Integer?

La programation c'est au moins autant prise de tête que ... je ne vois pas rien ne l'égale...
0
grosbidou21 Messages postés 74 Date d'inscription mardi 3 février 2004 Statut Membre Dernière intervention 5 février 2010 2
4 mai 2007 à 11:13
Oki Oki...
Je viens d'essayer et ça fonctionne.
Merci grandement à tout les deux.

La programation c'est au moins autant prise de tête que ... je ne vois pas rien ne l'égale...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
4 mai 2007 à 11:24
Pourquoi ???

Parce que en .Net, Long Int64 Entier 64 BitsInteger Int32 Entier 32 BitsShort Int16 Entier 16 Bits

En VB6, API Windows, ....
Long = Entier 32 Bits

Integer = Entier 16 Bits

Short = Entier 16 Bits

Voila pourquoi les Long de l'API deviennent des Integer sous .Net

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
grosbidou21 Messages postés 74 Date d'inscription mardi 3 février 2004 Statut Membre Dernière intervention 5 février 2010 2
4 mai 2007 à 12:14
Merci pour ces précisions!
J'étais plus ou moins au courant de ces changements entre les versions mais j'avoue que je ne me suis pas douté que le problème venait de là...
Par contre cette déclaration fonctionne sous VB.NET 2003 avec des types long alors que VB.NET 2005 (express) ne l'accèpte pas. Enfin il faut le savoir!
Bonne continuation

La programation c'est au moins autant prise de tête que ... je ne vois pas rien ne l'égale...
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
4 mai 2007 à 12:17
Sous VB2003 elle n'est pas bonne non plus. Elle peut-etre fonctionner mais elle génèrera l'erreur tot ou tard, ça c'est certain.

Selon la loi de Murphy, ça arrive généralement le jour de la demo devant le client

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
grosbidou21 Messages postés 74 Date d'inscription mardi 3 février 2004 Statut Membre Dernière intervention 5 février 2010 2
4 mai 2007 à 12:28
mdr merci murphy...

La programation c'est au moins autant prise de tête que ... je ne vois pas rien ne l'égale...
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
4 mai 2007 à 13:48
Et oui, mais ce qui peut paraitre un peu plainsantin présenté comme ça, vient tout de même d'une etude parfaitement sérieuse.

Etude statistique sérieuse réalisée fin des années 40/début des annnées 50 autour d'Edward Murphy dont l'origine est, selon une des différentes versions, la maladresse d'un des assistants de Murphy.

Voici quelques liens, des quantités d'autres peuvent etre trouvé sur google
http://fr.wikipedia.org/wiki/Loi_de_Murphy
http://www.douze.net/murphy.php
http://www.snof.org/accueil/murphy.html

J'avais lu fin 99, le résultat d'une étude scientifique réalisée en 98/99 dans le milieu industriel concernant la réalité de la loi de Murphy, malheureusement, je n'arrive pas à retrouver d'info dessus.
Il en ressortait que mêmes si les différents corolaires issus de cette loi étaient sujet à discution, de manière globale ils étaient relativement juste.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
grosbidou21 Messages postés 74 Date d'inscription mardi 3 février 2004 Statut Membre Dernière intervention 5 février 2010 2
4 mai 2007 à 14:00
Oui... c'est sur que lorsqu'on maudit cette loi de murphy lorsque notre tartine tombe coté confiture, on se doute pas qu'une étude sérieuse et en plus très poussée a été réalisé!
Enfin dans tous les cas ca reste instructif!
@+

La programation c'est au moins autant prise de tête que ... je ne vois pas rien ne l'égale...
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
4 mai 2007 à 14:23
Coucou !

Z'avez jamais vu un pont s'écrouler le jour de l'inauguration, hein ?
Moi oui : à New-Delhi en 1971
Jusu'à ce fameux jour, ils n'avaient pas essayé d'y mettre deux cents personnes (ce qui fut le cas le jour de l'inauguration) en même temps....
Et là, notre ami Murphy n'y était pas vraiment pour grand chose (et personne ne l'a donc accusé )
0
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
4 mai 2007 à 14:35
Bah en fait, si un peu, les gens sont tombés coté Tete et ca a fait une belle confiture LOL.
0
grosbidou21 Messages postés 74 Date d'inscription mardi 3 février 2004 Statut Membre Dernière intervention 5 février 2010 2
4 mai 2007 à 14:41
lool
appétissant...
Je me suis toujours demandé comment la confiture était faite... On m'a menti, je croyé que c'était du sucre et des fruits!
Je regarderai ma tartine autrement demain matin!

Sinon en ce qui concerne le pont, l'architecte (s'il n'est pas mort) a du avoir un mauvaise réputation après ca! Je lui confirai pas ma maison!

La programation c'est au moins autant prise de tête que ... je ne vois pas rien ne l'égale...
0
Rejoignez-nous