Attention pour les utilisateur de la visionneuse d'API

DedeSurf Messages postés 156 Date d'inscription mardi 17 décembre 2002 Statut Membre Dernière intervention 23 novembre 2011 - 6 oct. 2005 à 13:05
DedeSurf Messages postés 156 Date d'inscription mardi 17 décembre 2002 Statut Membre Dernière intervention 23 novembre 2011 - 6 oct. 2005 à 22:22
Attention mesdames et monsieurs,

Dans le dossier du programme ("APILOAD.EXE") il y a un fichier WIN32API.txt|.mdb

Faite attention certaine fonctions vous le verrer tout de suite et il
n'y a pas besoin de refléchir lontemp pour le comprendre sont copier en
double et a la suite :s ou le nom de la fonction est incorrect un
caractèr en trop ou en moin.



Mais le plus important et qui est plus difficile a trouvé pour certain
s'est que certaine declaration de fonction sont incorrect sur le retour
(Long integer ....) toutes les fonctions dans se fichier ont un retour
de type Long alors que s'est incorrect certaine fonction n'ont pas se
retour mais un retour un peu plus exigent, sela engendre la fermeture
immédiate de VB et cela sans message d'erreur amusant ;)



Pour y remedié voici un conseil : ouvrer un nouveau projet copier la
declaration et changer de type de retour, a la fin vous tomberer sur le
bon généralement il sagit de Integer ou de Byte.



Ex :



APILOAD :



Public Declare Function GetKeyboardState Lib "user32" Alias "GetKeyboardState" (pbKeyState As Byte) As Long



Ma version :



Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer



Et oui !

s'est la vie ;)

Bon voila pour l'info certain avait deja compris tant mieux pour eux
mais se message ne leurs est pas dédier alors no commentaire ;) mais si
vous avez quelque chose d'interessant a dire dite le !

PS:Fait attention il peu arrivé lors que vous utiliser une declaration
dont vous avez changer le retour la reponse ne soit pas bonne ! car
certain type sont similaire mais ne donneron donc pas d'erreur et
pas de VB qui se ferme mais la reponse sera différente alors en cas de
doute reféré vous si vous en avez la chance a MSDN la s'est sur sa
marchera !



Bon prog et a +

6 réponses

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
6 oct. 2005 à 15:01
salut,
tu parles pour .NET ?
les integer de .NET sont en 32bits, soient des Long de VB6.
(et les long .NET en 64)
ceci expliquerait cela.
jamais eu d'erreur "visionneuse api" VB6....
PCPT
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
6 oct. 2005 à 18:00
De toute facon, la visionneuse d'API fourni avec VB6 est totalement obselète !! Son contenu date de Win9x !! Mieux vaut aller sur www.allapi.net ou utiliser la visionneuse de Dark Sidious (téléchargeable sur son site : www.progotop.com)

Christophe
0
DedeSurf Messages postés 156 Date d'inscription mardi 17 décembre 2002 Statut Membre Dernière intervention 23 novembre 2011
6 oct. 2005 à 18:12
Salut pcpt et crenaud76,

pcpt -> S'est la visioneuse pour VB6.0, deplus l'erreur na pas un liens direct avec la visionneuse mais elle apporte des informations érronées qui fais planté VB6.0 la visionneuse d'api de MSVS marche parfaitement se sont les documents fournits par microsoft qui sont érroné(ont les lis avec cette visionneuse ou celle de Dark Sidious ;) )

crenaud76->Oui mais des personne font des programmes qui devienne très long a la fin et puis tous abandonné pasque tu ne trouve pas l'erreur je te jure que sa mais arrivé une fois j'est pété mon CD original de Vs6.0 Pro ! tous sa a cause d'une erreur de MS !

Enfin bon voila les gens seront prevenu comme sa !

Bye !
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
6 oct. 2005 à 19:01
ok, merci de ces précisions.
perso, VB6, j'utilise la visionneuse de AllApi.
Celle de VB6 me sert essentiellement pour les constantes et les types.

bonne continuation à tous ;)
PCPT
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
6 oct. 2005 à 20:56
DedeSurf -> Excuse moi d'etre un peu perplexe, je n'ai jamais eu de
problème de ce type avec la visionneuse d'api de VB6. Il y a
effectivement quelque différences de temps en temps (style une variable
de Type Handle, inconu en VB, et qu'il faut déclarer en long, car un
Handle c'est en fait un long).



Perplexe car ces API concernent un système Win32 donc 32 bits, et le type de base en système 32 Bits est le Long

Pour souvenir, je ne me rapelle pas avoir rencontrer beaucoup d'integer
ou de byte au niveau des API, au contraire, quand j'ai un doute sur un
type, je met toujours un long, et ça passe à chaque fois.





Pour info , en VB.Net le type de base en systeme 32 bits se nomme
Integer, car le type de Base .NET (long) fait désormais 64bits, prevu
pour les futurs systèmes Win64

Effectivement si tu programme en
.NET en utilisant les API Win32 et la visionneuse pour en connaitre les
déclarations, il faut changer tous les types.



Si le cerveau était assez simple pour que nous puissions le comprendre,

nous serions assez bête pour ne pas le comprendre malgré tout.
0
DedeSurf Messages postés 156 Date d'inscription mardi 17 décembre 2002 Statut Membre Dernière intervention 23 novembre 2011
6 oct. 2005 à 22:22
Et bien je reconnais mon erreur je suis allé trop vite ;), mais les retour sont important il permet d'avoir une reponse correct passé d'un long a un Byte vis et versa ne donnera jamais la bonne reponse et parfois la procedure plante le programme a cause de se petit détail, s'est pourquoi j'ai mis se petit commentaire.

Le system est peu etre en 32 bits mais le long n'est pas un format spécialisé dans le binaire :
Dim Bin as long, Bin2 as Byte
Open ...\neige.bmp For binary as #1
get #ff,,Bin
close #ff
Open ...\neige.bmp For binary as #1
get #ff,,Bin2
close #ff
Bin et Bin2 seront différent pasque Bin ora une taille de 32 octet et Bin2 de 1 Octet soit par example Bin 12547854 et Bin2 45 se n'est pas du tout pareil et sela engendera un problem et surtout pour un program ou une dll en C++ qui n'ora pas pris en compte la possibilité de ce genre d'erreur -> Arret immédia du processus et de ses ss-processus avec un peu de chance le debuger réusira a recupéré l'erreur et lancer VC++ en mode debugger mais après pour comprendre sa dans le language machine (asm) vasy ;)

Sa met arrivé alors je sais de quoi je parle.
D'accord le Long est le type le plus utiliser mais des fonctions renvoie dans le Type Double et Single 2 type que le long ne peu supporté car le Long [-2147483648;2147483647] (Donc nombre entier) et que par example le Single [-,37*10^-38;3.37*10^+38] (Donc a virgule -- float), la sa ne passe pas !

Single est utiliser pour des coordonnées et Currency ou single est utiliser par DirectX et OpenGl pour les couleurs (exemple) qui sont comprise entre [0,000;1,000], bonne chance pour donnée la couleur d'un cube avec un Long ;) le resutat sera soit 0 soit 1 et les couleur seront très monotone (Noir, rouge, Jaune, Blanc, Bleu turquoise, Bleu et vert) !

Mais je pense que si l'on a crée des formats (Types de données simples) s'est pour justement pour des raisons, certaine me reste inconnue d'autre non, et elle sont la pour etre respecter si l'on veu que le processus fonctionne.

Et je n'ai jamais parlé du .NET car je ne l'ai jamais utiliser, donc je ne peu rien dire a se sujet.

PS:Escuser ma brutalité jè les nerfs a blok ;)
0
Rejoignez-nous