API Windows sous XP [Résolu]

Messages postés
95
Date d'inscription
lundi 11 juin 2007
Dernière intervention
9 mai 2013
- 20 déc. 2012 à 21:17 - Dernière réponse :
Messages postés
95
Date d'inscription
lundi 11 juin 2007
Derniè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.

Merci par avance :)

Bonne soirée.


Julien
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Dernière intervention
28 août 2015
- 20 déc. 2012 à 21:39
3
Merci
Salut

En VB.Net, les Long VB6 (32 bits) s'appellent Integer.
Tes déclarations d'APIs ne sont donc pas correctes

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)

Merci cs_Jack 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de cs_Jack
Messages postés
95
Date d'inscription
lundi 11 juin 2007
Dernière intervention
9 mai 2013
- 20 déc. 2012 à 21:47
0
Merci
Merci beaucoup jack ! Le problème était bien ça. Problème résolut !


Julien
Commenter la réponse de juliengj
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
- 20 déc. 2012 à 22:36
0
Merci
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.
Commenter la réponse de ucfoutu
Messages postés
95
Date d'inscription
lundi 11 juin 2007
Dernière intervention
9 mai 2013
- 21 déc. 2012 à 21:08
0
Merci
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
Commenter la réponse de juliengj
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
- 21 déc. 2012 à 21:14
0
Merci
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.
Commenter la réponse de ucfoutu
Messages postés
95
Date d'inscription
lundi 11 juin 2007
Dernière intervention
9 mai 2013
- 21 déc. 2012 à 21:47
0
Merci
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.

Voilà, désoler si je me suis mal exprimé.


Julien
Commenter la réponse de juliengj

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.