API getsystemInfo probleme sur declaration [Résolu]

Messages postés
15
Date d'inscription
vendredi 18 février 2005
Dernière intervention
26 novembre 2010
- 10 mars 2010 à 16:01 - Dernière réponse :
Messages postés
580
Date d'inscription
mercredi 20 août 2008
Dernière intervention
20 avril 2010
- 10 mars 2010 à 18:51
Bonjour,

je viens de me mettre aux fonction API et sur un tuto j'ai trouve ce code que j'essaie de mettre en application mais j'ai un probleme lors de la compil
voici le code du module.

Private Declare Sub GetSystemInfo Lib "kernel32" (lpSystemInfo As SYSTEM_INFO)


Private Type SYSTEM_INFO
dwOemID As Long
dwPageSize As Long
lpMinimumApplicationAddress As Long
lpMaximumApplicationAddress As Long
dwActiveProcessorMask As Long
dwNumberOrfProcessors As Long
dwProcessorType As Long
dwAllocationGranularity As Long
dwReserved As Long
End Type

Public Function Nbproc() As String
Dim RecupInfo As SYSTEM_INFO
Dim Retvalue
Retvalue = GetSystemInfo(RecupInfo)
Nbproc = RecupInfo.dwNumberOrfProcessors

End Function

--> j'ai toujours un probleme a la compili sur
Retvalue = GetSystemInfo(RecupInfo)--> expected fonction or variable

au fait dans la forme j'ai un command button
et le code est :

Private Sub Command1_Click()
MsgBox Nbproc
End Sub

je ne comprends pas et je me prends la tete alors si vous pouviez m'aiguiller

merci

kix
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
Messages postés
7745
Date d'inscription
mercredi 1 septembre 2004
Dernière intervention
24 septembre 2014
- 10 mars 2010 à 17:32
3
Merci
Dans le cas d'une procédure (qui ne retourne donc rien)
- soit tu ne met pas le call et tu appelle ta procédure suivie de ses paramètres avec un espace entre le nom de la procédure et les paramètres (comme dans le tutorial que tu cite)
- soit tu utilise un call devant, et cela nécessite d'indiquer les paramètres entre parenthèses (comme dans la solution que j'ai donné)

Personnellement, je préfère la solution avec le call, c'est à mon avis plus lisible qu'il s'agit de l'appel d'une procédure. Ce qui uniformise aussi avec les appels de fonctions ou les paramètres sont passés entre parenthèses

[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i

Merci cs_casy 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de cs_casy
Messages postés
7745
Date d'inscription
mercredi 1 septembre 2004
Dernière intervention
24 septembre 2014
- 10 mars 2010 à 16:23
0
Merci
GetSystemInfo est une procédure, elle ne renvoie aucune valeur de retour

Public Function Nbproc() As String
Dim RecupInfo As SYSTEM_INFO
Dim Retvalue
Retvalue = Call GetSystemInfo(RecupInfo)
Nbproc = RecupInfo.dwNumberOrfProcessors

End Function


[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
Commenter la réponse de cs_casy
Messages postés
580
Date d'inscription
mercredi 20 août 2008
Dernière intervention
20 avril 2010
- 10 mars 2010 à 16:26
0
Merci
salut
un exemple aussi de api guide:
Private Declare Sub GetSystemInfo Lib "kernel32" (lpSystemInfo As SYSTEM_INFO)
Private Type SYSTEM_INFO
    dwOemID As Long
    dwPageSize As Long
    lpMinimumApplicationAddress As Long
    lpMaximumApplicationAddress As Long
    dwActiveProcessorMask As Long
    dwNumberOrfProcessors As Long
    dwProcessorType As Long
    dwAllocationGranularity As Long
    dwReserved As Long
End Type
Private Sub Form_Load()
    Dim SInfo As SYSTEM_INFO
    'Set the graphical mode to persistent
    Me.AutoRedraw = True
    'Get the system information
    GetSystemInfo SInfo
    'Print it to the form
    Me.Print "Number of procesor:" + str$(SInfo.dwNumberOrfProcessors)
    Me.Print "Processor:" + str$(SInfo.dwProcessorType)
    Me.Print "Low memory address:" + str$(SInfo.lpMinimumApplicationAddress)
    Me.Print "High memory address:" + str$(SInfo.lpMaximumApplicationAddress)
End Sub



Quand on pose une question on est con 5 minutes,Quand on ne la pose pas on le reste toute sa vie (mon site)
Commenter la réponse de Claiyah
Messages postés
15
Date d'inscription
vendredi 18 février 2005
Dernière intervention
26 novembre 2010
- 10 mars 2010 à 17:24
0
Merci
merci les gars mais c'est vrai que le tuto n'appellai pas la fonction avec un call
essayer voici l'adresse du tuto : http://vb.developpez.com/bidou/vb-api/

onglet utilisation

merci de me dire su ca marche sans le call pour appeller la fonction getsysteminfo

kix
Commenter la réponse de cs_looloo78
Messages postés
15
Date d'inscription
vendredi 18 février 2005
Dernière intervention
26 novembre 2010
- 10 mars 2010 à 18:41
0
Merci
rebonjour,

une question en ammenne forcement une autre.
dois je ecrire plusieurs fonctions pour avoir plusieurs resultat sur ma msgbox.
exemple :

Public Declare Sub GetSystemInfo Lib "kernel32" (lpSystemInfo As SYSTEM_INFO)


Private Type SYSTEM_INFO
dwOemID As Long
dwPageSize As Long
lpMinimumApplicationAddress As Long
lpMaximumApplicationAddress As Long
dwActiveProcessorMask As Long
dwNumberOrfProcessors As Long
dwprocessortype As Long
dwAllocationGranularity As Long
dwReserved As Long
End Type

Public Function Nbproc() As String

Dim RecupInfo As SYSTEM_INFO
Call GetSystemInfo(RecupInfo)

Nbproc = RecupInfo.dwNumberOrfProcessors

End Function

Public Function Nbproc1() As String

Dim RecupInfo As SYSTEM_INFO
Call GetSystemInfo(RecupInfo)

Nbproc1 = RecupInfo.dwprocessortype

End Function

avec donc un commandbutton
Private Sub Command1_Click()

message$ = Nbproc + vbCrLf + Nbproc1
MsgBox message$

End Sub

donc y a t il un moyen moins lourd que de reecrire la fonction (meme avec copier coller)en declarant plusieurs variable dans la fonction et en les appellant dans la msgbox....j'ai essayer mais ca ne marche pas pourquoi?
voici le code defaillant dans le module:

Public Declare Sub GetSystemInfo Lib "kernel32" (lpSystemInfo As SYSTEM_INFO)


Private Type SYSTEM_INFO
dwOemID As Long
dwPageSize As Long
lpMinimumApplicationAddress As Long
lpMaximumApplicationAddress As Long
dwActiveProcessorMask As Long
dwNumberOrfProcessors As Long
dwprocessortype As Long
dwAllocationGranularity As Long
dwReserved As Long
End Type

Public Function Nbproc() As String

Dim RecupInfo As SYSTEM_INFO
Call GetSystemInfo(RecupInfo)

[color=red]Dim lpmini As Long
Dim proctype As Long
lpmini = RecupInfo.lpMinimumApplicationAddress
proctype = RecupInfo.dwprocessortype


End Function/color


--> je ne sais pas comment ecrire le code dans la fonction pour avoir plsueirs valeur en retour dans la msgbox


merci
kix
Commenter la réponse de cs_looloo78
Messages postés
15
Date d'inscription
vendredi 18 février 2005
Dernière intervention
26 novembre 2010
- 10 mars 2010 à 18:43
0
Merci
voici le code defaillant sans le defaut de code couleur

Private Type SYSTEM_INFO
dwOemID As Long
dwPageSize As Long
lpMinimumApplicationAddress As Long
lpMaximumApplicationAddress As Long
dwActiveProcessorMask As Long
dwNumberOrfProcessors As Long
dwprocessortype As Long
dwAllocationGranularity As Long
dwReserved As Long
End Type

Public Function Nbproc() As String

Dim RecupInfo As SYSTEM_INFO
Call GetSystemInfo(RecupInfo)

Dim lpmini As Long
Dim proctype As Long
lpmini = RecupInfo.lpMinimumApplicationAddress
proctype = RecupInfo.dwprocessortype

et en rouge ce que je cherhce a integrer

kix
Commenter la réponse de cs_looloo78
Messages postés
580
Date d'inscription
mercredi 20 août 2008
Dernière intervention
20 avril 2010
- 10 mars 2010 à 18:51
0
Merci
msgbox "aaaaa" & "bbbbbbb" & "ccccccc"
utilise le "&" ou stocke les réponses dans une variable puis l'afficher

Quand on pose une question on est con 5 minutes,Quand on ne la pose pas on le reste toute sa vie (mon site)
Commenter la réponse de Claiyah

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.