API getsystemInfo probleme sur declaration

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

Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
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
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
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
Messages postés
580
Date d'inscription
mercredi 20 août 2008
Statut
Membre
Dernière intervention
20 avril 2010
3
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)
Messages postés
15
Date d'inscription
vendredi 18 février 2005
Statut
Membre
Dernière intervention
26 novembre 2010

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
Messages postés
15
Date d'inscription
vendredi 18 février 2005
Statut
Membre
Dernière intervention
26 novembre 2010

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
Messages postés
15
Date d'inscription
vendredi 18 février 2005
Statut
Membre
Dernière intervention
26 novembre 2010

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
Messages postés
580
Date d'inscription
mercredi 20 août 2008
Statut
Membre
Dernière intervention
20 avril 2010
3
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)