API getsystemInfo probleme sur declaration

Résolu
cs_looloo78 Messages postés 15 Date d'inscription vendredi 18 février 2005 Statut Membre Dernière intervention 26 novembre 2010 - 10 mars 2010 à 16:01
Claiyah Messages postés 580 Date d'inscription mercredi 20 août 2008 Statut Membre 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

7 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
10 mars 2010 à 17:32
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
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
10 mars 2010 à 16:23
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
0
Claiyah Messages postés 580 Date d'inscription mercredi 20 août 2008 Statut Membre Dernière intervention 20 avril 2010 3
10 mars 2010 à 16:26
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)
0
cs_looloo78 Messages postés 15 Date d'inscription vendredi 18 février 2005 Statut Membre Dernière intervention 26 novembre 2010
10 mars 2010 à 17:24
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_looloo78 Messages postés 15 Date d'inscription vendredi 18 février 2005 Statut Membre Dernière intervention 26 novembre 2010
10 mars 2010 à 18:41
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
0
cs_looloo78 Messages postés 15 Date d'inscription vendredi 18 février 2005 Statut Membre Dernière intervention 26 novembre 2010
10 mars 2010 à 18:43
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
0
Claiyah Messages postés 580 Date d'inscription mercredi 20 août 2008 Statut Membre Dernière intervention 20 avril 2010 3
10 mars 2010 à 18:51
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)
0
Rejoignez-nous