Page 1 sur 1
[R]Récuperer les modèles de cartes graphique.
Posté : dim. 12 juil. 2020 13:50
par someonescripting
Bonjour,
Encore besoin d'un petit coup de main.
Toujours pour mon script, je crée une fenêtre qui affiche les informations système comme le processeur, la RAM, etc.
Il me récupère également le modèle de la carte graphique installé dans l’ordinateur.
Mon problème est le suivant, sur les ordinateurs récent (en particulier les portables), il y a bien souvent 2 cartes graphiques, la Intel et la NVIDIA/AMD.
J'utilise la fonction suivante (trouvé sur le forum anglais de mémoire) :
Code : Tout sélectionner
Func _GetGraphicCardModel() ;Récupère le modèle de la carte graphique.
Local $objWMIService = ObjGet("winmgmts:\\.\root\CIMV2")
Local $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_DisplayConfiguration", "WQL", 0x10 + 0x20)
If IsObj($colItems) then
For $objItem In $colItems
Local $Output = $objItem.DeviceName
Next
Endif
Return $Output
EndFunc
Lorsque je lance le tout, en fonction des PC, il me retourne soit la NVIDIA soit la INTEL (alors que les deux sont installé et activé). Serait il possible d'avoir une fonction qui me retournerais la carte graphique intégré (INTEL) et une autre pour la carte graphique normal (NVIDIA/AMD)?
Merci pour votre aide !
Re: [..]Récuperer les modèles de cartes graphique.
Posté : dim. 12 juil. 2020 16:36
par walkson
Bonjour,
Je pense que ce code devrait convenir
https://www.autoitscript.com/forum/topi ... ent-209498
(surtout sélectionnez la partie qui vous intéresse sinon ça va être long
)
Sinon pour récupérer du WMI
https://www.autoitscript.com/forum/file ... t-o-matic/
Re: [..]Récuperer les modèles de cartes graphique.
Posté : dim. 12 juil. 2020 17:17
par someonescripting
Merci @walkson.
Du coup j'ai juste un peu modifier la fonctions pour que celle ci renvoie toutes les cartes graphiques ainsi que leur quantité de mémoire.
Code : Tout sélectionner
Func _GetGraphicCardModel() ;Récupère le modèle de la carte graphique et leur quantité de mémoire.
; https://docs.microsoft.com/fr-fr/windows/win32/cimwin32prov/win32-videocontroller?redirectedfrom=MSDN
Local $objWMIService = ObjGet("winmgmts:\\.\root\CIMV2")
Local $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_VideoController", "WQL", 0x10 + 0x20)
Local $Output
If IsObj($colItems) then
For $objItem In $colItems
$Output = $Output & @CRLF & $objItem.Caption & " (" & Int( _UINT($objItem.AdapterRAM) /( 1024000000 ) ) & "Go)"
Next
Endif
Return $Output
EndFunc
Func _UINT($INT) ;Cast une valeur numérique en entier non signé.
Local $tUINT = DllStructCreate("UINT")
DllStructSetData($tUINT, 1, $INT)
Return DllStructGetData($tUINT, 1)
EndFunc ;==>_UINTFunc
(Impossible d'aller sur le lien pour le script'o'matic, j'ai ce message lors du chargement de la page : Your request has been blocked.)
Re: [R]Récuperer les modèles de cartes graphique.
Posté : dim. 12 juil. 2020 17:29
par walkson
Re: [R]Récuperer les modèles de cartes graphique.
Posté : dim. 12 juil. 2020 19:02
par mikell
Question (pour jc, éventuellement)
Est-ce que ça ne suffit pas ?
$Output = $Output & @CRLF & $objItem.Caption & " (" & Int($objItem.AdapterRAM/1024^3) & " Go)"
Re: [R]Récuperer les modèles de cartes graphique.
Posté : dim. 12 juil. 2020 22:18
par jchd
Bah ça doit fonctionner, de plus 1 Go c'est bien ça. Mais j'aurais au moins laissé 1 à 2 décimales, des fois que la taille soit intermédiaire.
Re: [R]Récuperer les modèles de cartes graphique.
Posté : lun. 13 juil. 2020 00:44
par someonescripting
Re.
@mikell, @jchd, oui j'y ai penser entre temps et j'ai décider de l'afficher en Mo plutôt qu'en Go :
Code : Tout sélectionner
Func _GetGraphicCardModel() ;Récupère le(s) modèle(s) de(s) carte(s) graphique(s).
; https://docs.microsoft.com/fr-fr/windows/win32/cimwin32prov/win32-videocontroller?redirectedfrom=MSDN
Local $objWMIService = ObjGet("winmgmts:\\.\root\CIMV2")
Local $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_VideoController", "WQL", 0x10 + 0x20)
Local $Output
If IsObj($colItems) then
For $objItem In $colItems
$Output = $Output & @CRLF & "- " & $objItem.Caption & " (" & Int( _UINT($objItem.AdapterRAM) / 1024 / 1024 ) & " Mo)"
Next
Endif
Return $Output
EndFunc ;_GetGraphicCardModel
Ce qui nous donne ceci en complet :
- SYSINFO.jpg (41.66 Kio) Vu 3933 fois
(Par contre je ne comprend pas pourquoi la carte Intel me renvoie "1024" alors que je n'ai alloué que 64Mo dans le bios ..., testé aussi avec 256Mo alloué et idem.)
Edit : Je vais retirer l'affichage de la VRAM car sur les cartes récentes avec plus de 4Go de VRAM, WMI ne renvoie que 4Go (alors que ma 980Ti en dispose de 6, cela serait dû au fait que WMI renvoie un "uint32" pour "AdpaterRAM" et ne peu donc gérer plus de 4Go (si j'ai bien tout compris).