juliengj
Messages postés95Date d'inscriptionlundi 11 juin 2007StatutMembreDernière intervention 9 mai 2013
-
20 déc. 2012 à 21:17
juliengj
Messages postés95Date d'inscriptionlundi 11 juin 2007StatutMembreDernière intervention 9 mai 2013
-
21 déc. 2012 à 21:47
Bonjour à tous.
J'ai un gros problème avec les APIs sous windows XP.
Voilà un exemple de code qui fonctionne correctement sous windows 7 et sous XP il y a un problème de valeur de handle.
Declare Function GetDesktopWindow Lib "user32" () As Long
Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" ( _
ByVal hwnd As Long, _
ByVal lpString As String, _
ByVal cch As Long) As Long
Declare Function FindWindow Lib "user32" Alias "FindWindowA" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim stTmp As String, lgTmp As Long
stTmp = Space$(120)
lgTmp = 119
Dim hwnd As Long = FindWindow("notepad", Nothing)
MsgBox(hwnd) 'Valeur de retour sous XP: hwnd=2415336813808844800
GetWindowText(hwnd, stTmp, lgTmp)
MsgBox(stTmp) 'Valeur de retour sous XP: stTmp=
End Sub
Pourquoi le handle de la fenêtre du bloc-note est-elle si longue ? Plusieurs API de windows me retourne des valeurs insensé. Sous windows 7 tous fonctionne parfaitement.
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 20 déc. 2012 à 22:36
Bonjour,
Moi, je souhaite que juliengj, qui a écrit :
Voilà un exemple de code qui fonctionne correctement sous windows 7
s'explique complètement à ce sujet !
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
juliengj
Messages postés95Date d'inscriptionlundi 11 juin 2007StatutMembreDernière intervention 9 mai 20131 21 déc. 2012 à 21:08
Le code que j'ai indiqué fonctionnement correctement sous windows 7 avec comme type de variable "Long" mais ne fonctionnais pas sur windows XP. La raison ? Je ne sais pas du-tout. Windows XP interprète le problème peut-être différemment que windows 7.
En VB.Net, les Long VB6 (32 bits) s'appellent Integer.
En remplacent les "Long" par des "Integer" le problème c'est résolu et fonctionne sur Windows XP et 7.
Bonne soirée,
Julien
Vous n’avez pas trouvé la réponse que vous recherchez ?
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 21 déc. 2012 à 21:14
Non, juliengj,
Ce n'est pas exact.
Ce qui l'est, c'est que, sous VB.Net, les long sont des Integer.
Ce qui marchait donc sous Win 7, était donc une appli écrite en VB6, pas en VB.Net.
La voilà, la vérité, qu'il me parait bon de rétablir clairement
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
juliengj
Messages postés95Date d'inscriptionlundi 11 juin 2007StatutMembreDernière intervention 9 mai 20131 21 déc. 2012 à 21:47
Je vous réexpliquer:
J'ai compiler mon code (Visual Basic 2008 express) sur mon PC tournant sur windows 7. J'ai copiée ce .exe générer sous windows 7 (fonctionnant correctement) sur une autre machine tournant sous windows XP et la le problème est survenu.