Page 1 sur 1
[R] Récuperer le numero de serie de l'ecran.
Posté : lun. 22 mars 2010 16:48
par Voor0ck
Bonjour,
Avec ce bout de code, je peux recuperer le serial number du PC :
Code : Tout sélectionner
;Fonction pour recuperer le serial number
Func _Get_SN()
Local $colItems = ""
$colItems = $objWMIService.ExecQuery("Select * from Win32_BIOS")
For $objItem in $colItems
Local $item = $objItem.SerialNumber
FileWriteLine($file1,"S/N du PC : " & $Item)
Next
EndFunc
Existe il un equivalent pour recuperer le serial number de l'écran ?
Par avance, merci.
Re: [..] Récuperer le numero de serie de l'ecran.
Posté : lun. 22 mars 2010 17:30
par jl56
Bonjour
J'avais pal mal recherché cette info et j'avais trouvé ceci
► Afficher le texte
Code : Tout sélectionner
$wbemFlagReturnImmediately = 0x10
$wbemFlagForwardOnly = 0x20
;~ Opt("MustDeclareVars", 1)
Global $strComputer,$objWMIService,$colItems,$j,$edidarray
_StrComputer()
If Ping($strComputer, 200) = 0 Then
MsgBox(0, "Error", $strComputer & " could not be reached, please enter another.")
_StrComputer()
EndIf
_ObjWMI()
Func _ObjWMI()
Global $objWMIService = ObjGet ("winmgmts:\\" & $strComputer & "\root\CIMV2")
_ObjWMICheck()
EndFunc
Func _ObjWMICheck()
If $objWMIService = "" Then
MsgBox(0, "WMI Error", "WMI not running on " & $strComputer & ", please enter another computer name.")
_StrComputer()
_ObjWMI()
EndIf
EndFunc
$colItems = $objWMIService.ExecQuery ("SELECT * FROM Win32_DesktopMonitor", "WQL", _
$wbemFlagReturnImmediately + $wbemFlagForwardOnly)
$j = 0
$msg = ""
If IsObj ($colItems) Then
For $objItem In $colItems
$PNPDeviceID = $objItem.PNPDeviceID
$screenwidth = $objItem.ScreenWidth
If $screenwidth = 0 Then ExitLoop
$monedid = RegRead("\\" & $strComputer & "\HKEY_LOCAL_MACHINE\System\CurrentControlSet\Enum\" & $PNPDeviceID & "\Device Parameters", "EDID")
Dim $edidarray[StringLen($monedid) ]
$edidarray[0]= (StringLen($monedid) / 2) + 1
For $i = 1 To StringLen($monedid) Step 2
$j = $j + 1
$edidarray[$j] = Dec(StringMid($monedid, $i, 2))
Next
Next
$ser = _FindMonitorSerial()
$name = _FindMonitorName()
MsgBox(0, "Monitor Information", "Monitor Name: " & $name & @CRLF & "Serial Number: " & $ser)
Else
MsgBox(0, "WMI Output", "No WMI Objects Found for class: " & "Win32_DesktopMonitor")
EndIf
Func _FindMonitorSerial()
$sernumstr = ""
$sernum = 0
For $i = 1 To (UBound($edidarray) / 2) - 4
If $edidarray[$i] = "0" And $edidarray[$i + 1] = "0" And $edidarray[$i + 2] = "0" And $edidarray[$i + 3] = "255" And $edidarray[$i + 4] = "0" Then
$sernum = $i + 4
EndIf
Next
If $sernum <> 0 Then
$endstr = 0
$sernumstr = ""
For $i = 1 To 13
If $edidarray[$sernum + $i] = "10" Then
$endstr = 1
Else
If $endstr = 0 Then
$sernumstr = $sernumstr & Chr($edidarray[$sernum + $i])
EndIf
EndIf
Next
Else
$sernumstr = ""
EndIf
Return $sernumstr
EndFunc
Func _FindMonitorName()
$name = 0
For $i = 1 To (UBound($edidarray) / 2) - 4
If $edidarray[$i] = "0" And $edidarray[$i + 1] = "0" And $edidarray[$i + 2] = "252" And $edidarray[$i + 3] = "0" Then
$name = $i + 3
EndIf
Next
If $name <> 0 Then
$endstr = 0
$namestr = ""
For $i = 1 To 13
If $edidarray[$name + $i] = "10" Then
$endstr = 1
Else
If $endstr = 0 Then
$namestr = $namestr & Chr($edidarray[$name + $i])
EndIf
EndIf
Next
Else
$namestr = ""
EndIf
Return $namestr
EndFunc
Func _StrComputer()
Global $strComputer = InputBox("Computer Name", "Enter Computer Name:", StringLower(@ComputerName), "", 100, 120)
If @error = 1 Then Exit
EndFunc
Par contre cela fonctionne uniquement avec des pc et écran plutot de marque
ou la carte mere et le bios gere la norme edid de l'écran
A+ JL56
Re: [..] Récuperer le numero de serie de l'ecran.
Posté : mar. 23 mars 2010 10:11
par Voor0ck
Enorme
Merci jl56.
Re: [R] Récuperer le numero de serie de l'ecran.
Posté : mer. 22 mai 2013 12:34
par amchiche
svp de l'aide
je cherche a faire une petite aplication php qui reccupere les infos du pc sur le quel je l'execute
le bute cé de me facilité la recolte d'infor de chaque pc pour les stocker dans un fichier txt
une page d'execution recolte.php
un fichier stock stock.txt
les infos a deccuperer
utiliser WMIC cspproducte pour avoir seci :
C:\wmic csproduct >c:\info.txt
ensuite dans le fichier info.txt tu trouve sa :
Caption Description IdentifyingNumber Name SKUNumber UUID Vendor Version
Produit système informatique Produit système informatique 2203257407 8958 DDADDF64-627D-DE11-B106-00262887A613 LENOVO Lenovo G550
voila mon mail :
cvfaf23@gmail.com merci pour tout
Re: [R] Récuperer le numero de serie de l'ecran.
Posté : jeu. 07 janv. 2016 15:57
par Makadamm
Bonjour j'ai eu a récupérer le num de série de l'écran, et le script de jl56 ne fonctionne pas sur mon pc, malgré EDID dans enum présent.
Voici l'erreur :
Code : Tout sélectionner
>"C:\Program Files (x86)\AutoIt3\SciTE\..\autoit3.exe" /ErrorStdOut "F:\AATéléchargement\serial_auto.au3"
"F:\AATéléchargement\serial_auto.au3" (37) : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:
$edidarray[0]= (StringLen($monedid) / 2) + 1
^ ERROR
>Exit code: 1 Time: 1.38
Voici une solution que j'ai trouvé qui fonctionne.
Code : Tout sélectionner
#include <String.au3>
$wbemFlagReturnImmediately = 0x10
$wbemFlagForwardOnly = 0x20
$colItems = ""
$strComputer = "localhost"
$objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_DesktopMonitor", "WQL", _
$wbemFlagReturnImmediately + $wbemFlagForwardOnly)
$j = 0
If IsObj($colItems) then
Local $Object_Flag = 0
For $objItem In $colItems
$PNPDeviceID = $objItem.PNPDeviceID
$123 = RegRead("HKEY_LOCAL_MACHINE\System\CurrentControlSet\Enum\" & $PNPDeviceID & "\Device Parameters", "EDID")
$456 = StringMid($123, 229, 20)
$789 = _HexToString($456)
ExitLoop
Next
Else
Endif
MsgBox(64, "", "Numéro de série écran : " & $789 )