Page 1 sur 1

Chaine vide dans un programme extérieur

Publié : mer. 12/août/2015 9:59
par Micoute
Bonjour à tous, je ne comprend pas pourquoi quand j'appelle cette procédure dans un autre programme, il me renvoie une chaine vide.

Code : Tout sélectionner

Procedure GetRegistryValue(hKey, lpSubKey.s, lpValueName.s)
  #KEY_WOW64_64KEY = $100
  
  If RegOpenKeyEx_(hKey, lpSubKey, ulOptions, #KEY_QUERY_VALUE | #KEY_WOW64_64KEY, @phkResult) = #ERROR_SUCCESS
    If RegQueryValueEx_(phkResult, lpValueName, lpReserved, @lpType, #Null, @lpcbData) = #ERROR_SUCCESS
      If lpcbData
        *lpData = AllocateMemory(lpcbData)
        RegQueryValueEx_(phkResult, lpValueName, lpReserved, @lpType, *lpData, @lpcbData)
      EndIf
    EndIf
    RegCloseKey_(phkResult)
  EndIf
  ProcedureReturn *lpData
EndProcedure

Procedure.s CarteGraphique() ;Détermine la carte graphique installée
  Global CarteGraphique.s
  lpSubKey.s = "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\WinSAT"
  *lpData = GetRegistryValue(#HKEY_LOCAL_MACHINE, lpSubKey, "PrimaryAdapterString")
  CarteGraphique = PeekS(*lpData) : FreeMemory(*lpData)
  ProcedureReturn CarteGraphique
EndProcedure

Debug CarteGraphique()

Re: Chaine vide dans un programme extérieur

Publié : mer. 12/août/2015 11:08
par Ar-S
Salut Micoute,
Tu peux être plus explicite ?
En lançant le code j'ai bien la bonne CG qui apparaît. Tu entends quoi par :
quand j'appelle cette procédure dans un autre programme

Re: Chaine vide dans un programme extérieur

Publié : mer. 12/août/2015 11:11
par falsam
Peut être que la clé PrimaryAdapterString n'existe pas dans sa base de registre. Windows 10 peut etre ?

Re: Chaine vide dans un programme extérieur

Publié : mer. 12/août/2015 11:16
par Ar-S
Elle existe bien sur le pc que j'utilise en ce moment. Elle est bien dans

Code : Tout sélectionner

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WinSAT

Re: Chaine vide dans un programme extérieur

Publié : mer. 12/août/2015 11:20
par falsam
Cheztoi oui Ar-s. Aprés une longue recherche (Ctrl+F) de la clé PrimaryAdapterString sur un de mes pc sous Windows 10, la clé PrimaryAdapterString n'existe pas. D'ou cette erreur.

Re: Chaine vide dans un programme extérieur

Publié : mer. 12/août/2015 11:23
par Ar-S
As tu une clé indiquant le nom de ta CG dans WinSAT ?
Peut-être que c'est lié aux cartes ATI ?

Re: Chaine vide dans un programme extérieur

Publié : mer. 12/août/2015 11:25
par falsam
Ar-S a écrit :As tu une clé indiquant le nom de ta CG dans WinSAT ?
Peut-être que c'est lié aux cartes ATI ?
WinSAT existe bien dans ma base de registre mais je n'ai pas d'information sur le nom de ma carte vidéo qui est une nvidia.

Re: Chaine vide dans un programme extérieur

Publié : mer. 12/août/2015 11:28
par Ar-S
Mon hypothèse ATI se confirme, faudrait d'autres retours.

Re: Chaine vide dans un programme extérieur

Publié : mer. 12/août/2015 12:03
par Micoute
Ma carte est aussi une NVIDIA et j'ai retrouvé son nom dans le registre HKEY_LOCALE_MACHINE\SOFTWARE\MICROSOFT\WINDOW NT\\CurrentVersion\WinSAT\PrimaryAdapterString

Quand je teste ma procédure dans mon fichier à inclure, le résultat est bon, mais si j'appelle ma procédure à partir d'un IncludeFile, ça me renvoie une chaine vide.

Re: Chaine vide dans un programme extérieur

Publié : mer. 12/août/2015 12:08
par falsam
Si je teste ton code tel quel, j'ai une IMA. ça veut dire que ta procédure pour obtenir un nom de carte vidéo n'est pas universelle en tout cas.

Quand à la façon de l'utiliser depuis un include je ne vois pas pourquoi ça ne fonctionnerait pas.

Re: Chaine vide dans un programme extérieur

Publié : mer. 12/août/2015 12:14
par Ar-S
Micoute tu devrais regarder du coté des WMI

Re: Chaine vide dans un programme extérieur

Publié : mer. 12/août/2015 12:53
par Micoute
Merci à tous pour votre aide qui m'a été très précieuse et effectivement avec les WMi, tous prêts mâchés par falsam, ce fut du gâteau !