L'incontournable ShellExecute [Résolu]

lex1111 220 Messages postés jeudi 30 mars 2006Date d'inscription 26 octobre 2007 Dernière intervention - 19 nov. 2006 à 11:40 - Dernière réponse : lex1111 220 Messages postés jeudi 30 mars 2006Date d'inscription 26 octobre 2007 Dernière intervention
- 19 nov. 2006 à 12:14
salut a tous, je suis en vb 2005 depuis 2 jours et j'essaye de retranscrire mon prog qui est en vb6 mais j'ai un problème avec le shellexecute....
(j'ai cherché assez longtemps sur vbfrance et je n'ai pas trouver de solution...)
sur vb6, j'avais ce code qui fonctionnait...

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

pour ouvrir un site...
val = ShellExecute(0&, vbNullString, "http://www.google.fr", vbNullString, vbNullString, vbNormalFocus)


pour ouvrir un film...
val = ShellExecute(Me.hWnd, vbNullString, fichier, "C:", vbNormalFocus)

Mais maintenant aucune des 2 méthodes ne fonctionne...et j'ai l'impression que cela vient de la variable handle (hwnd)
mais je ne sais pas comment faire pour trouver le hwnd

Message d'erreure :
L'Assistant Débogage managé 'PInvokeStackImbalance' a détecté un problème dans 'D:\programmation\SOURCES MOI\HDDIVX\HD_DIVX v3.0 vb.net\HD-Divx\bin\Debug\HD-Divx.vshost.exe'.
Informations supplémentaires : Un appel à la fonction PInvoke 'HD-Divx!HD_Divx.general::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.

merci d'avance pour vos réponse
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
Charles Racaud 3181 Messages postés dimanche 15 février 2004Date d'inscription 9 avril 2017 Dernière intervention - 19 nov. 2006 à 11:48
3
Merci
Salut,

Tu oublie shellexecute. En dotnet, on utilise un process :



'Pour ouvrir un site...

System.Diagnostics.Process.Start("http://www.google.fr")

'Pour ouvrir un film...
System.Diagnostics.Process.Start(fichier),

----

(Coloration syntaxique automatique par Kenji)





__________________

Kenji

Merci Charles Racaud 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 82 internautes ce mois-ci

Commenter la réponse de Charles Racaud
Meilleure réponse
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 19 nov. 2006 à 11:53
3
Merci
Entierement d'accord avec Kenji

Sinon le problème vient de la déclaration du type de variable.
En .Net les type de variable ont changé, ainsi un Long (VB6, api) devient un Integer (.Net) ou si tu préfère un Int32.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #

Merci cs_casy 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 82 internautes ce mois-ci

Commenter la réponse de cs_casy
lex1111 220 Messages postés jeudi 30 mars 2006Date d'inscription 26 octobre 2007 Dernière intervention - 19 nov. 2006 à 12:14
0
Merci
Merci de cette réponse aussi rapide, et c'est bien plus simple ainsi ;D
Commenter la réponse de lex1111

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.