sl300
Messages postés8Date d'inscriptionsamedi 7 mai 2005StatutMembreDernière intervention14 mars 2008
-
13 mars 2008 à 17:23
PeteZah
Messages postés4Date d'inscriptionmercredi 5 juillet 2006StatutMembreDernière intervention19 mars 2008
-
19 mars 2008 à 13:20
Bonjour,
Débutant en VB 2005, je confectionne un petit programme où un click sur un nom de rues dans une "listbox" permets d'aller sur le site Google Maps et de localiser la rue.
Une seule Form : Public class FRmInitiale. Le sub OuvreGoogle ouvre le site Google Maps.
le code (que j'ai copié quelque part) :
Public declare function
ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (byval hwnd as long, byval lpOperation as string' byvalIpFile as String, byval lpParameters as String, byval ipDirectory as String, Byval nShowCmd as long) as long
Public sub OuvreGoogle()
v_http="http://maps.google.fr/maps?f=q&hl=fr&q="
v_http=v_http&v_adresse & ",+" & v_cp& "+" & v_ville
shellExecute (Me.hwnd,"open",v_http,"",My.application.info.DirestoryPath,1)
End sub
En VB6 ça fonctionne très bien.
En VB2005 Me.hwnd me renvoie l'erreur 'hwnd n'est pas membre de "windowsApplication1.FrmInitiale'
Voilà 15 jours que je parcours forums et autres tuto et je ne trouve rien pour m'éclairer.
Merci par avance de votre aide à un novice et salutations
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 13 mars 2008 à 17:42
Public declare function
ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (byval hwnd as long, byval lpOperation as string' byvalIpFile as String, byval lpParameters as String, byval ipDirectory as String, Byval nShowCmd as long) as long
C'est déjà ce qui est en rouge, qui ne va pas avec vb.net...
Change par as integer
sl300
Messages postés8Date d'inscriptionsamedi 7 mai 2005StatutMembreDernière intervention14 mars 2008 13 mars 2008 à 18:48
merci de ta réponse MAIS j'ai essayé avec 0.
J'ai le message suivant : 'un appel à la fonction Pinvoke "windowsApplications1.Frminitiale::shellExecute" a déséquilibré la pile'
l'aide en ligne complémentaire évoque "PinvokeStacklmbalance"
Je n'y comprends rien !
Merci par avance si tu peux m'aider
salut
Vous n’avez pas trouvé la réponse que vous recherchez ?
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 14 mars 2008 à 09:15
clair qu'il faut te justifier de l'utilisation de l'API plutot que de passer par un Process.Start ....
pour ta déclaration, te faut utiliser quelque chose de ce genre :
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Integer, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Integer) As Integer
sl300
Messages postés8Date d'inscriptionsamedi 7 mai 2005StatutMembreDernière intervention14 mars 2008 14 mars 2008 à 13:06
j'avais déjà essayé mais ça ne marche pas, toujours la même erreur :
"hwnd n'est pas membre de windowsApplication1.FrmInitiale" et/ou
un appel à la fonction Pinvoke "windowsApplications1.Frminitiale::shellExecute" a déséquilibré la pile'
La première de ces deux lignes provoque un message d'erreur : This object doesn't support this property or Method. Après vérification, c'est le Me.hwnd qui pose un souci. Dans une autre classe, j'ai le code suivant :
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Je suppose que cela peut venir d'une propriété de mon formulaire qui est mal renseignée mais je ne sais pas laquelle. Si l'un d'entre vous a une idée, ce serait sympa
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 19 mars 2008 à 11:01
hWnd => Handle
et encore une fois, ta déclaration d'API est incorrecte....
Long => Integer
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Integer, ByVal nIndex As Integer, ByVal dwNewLong As Integer) As Integer