cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 2015
-
15 févr. 2006 à 19:53
cs_Fremarx
Messages postés53Date d'inscriptionvendredi 31 mars 2006StatutMembreDernière intervention23 août 2010
-
23 août 2010 à 17:28
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
cs_Fremarx
Messages postés53Date d'inscriptionvendredi 31 mars 2006StatutMembreDernière intervention23 août 2010 23 août 2010 à 17:28
merci a tous cela m'a été d'une grande utilité
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 17 janv. 2008 à 22:01
dingue de voir que ce module est "propriétaire"...
c'est une simple redisposition du code exemple fournis par Microsoft en exemple de l'API !
voilà ce que j'avais fait de cet exemple (URL dans les commentaires)
Public Const PROCESSOR_ARCHITECTURE_IA64 As Long = 6
Public Const PROCESSOR_ARCHITECTURE_AMD64 As Long = 9
Public Const VER_NT_DOMAIN_CONTROLLER As Long = &H2
Public Const VER_NT_SERVER As Long = &H3
Public Const VER_NT_WORKSTATION As Long = &H1
Public Const VER_PLATFORM_WIN32_NT As Long = 2
Public Const VER_PLATFORM_WIN32_WINDOWS As Long = 1
Public Const VER_PLATFORM_WIN32s As Long = 0
Public Const VER_SUITE_DATACENTER As Long = &H80
Public Const VER_SUITE_ENTERPRISE As Long = &H2
Public Const VER_SUITE_PERSONAL As Long = &H200
Public Const VER_SUITE_BLADE As Long = &H400
Public Const SM_SERVERR2 = 89
Public Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128 ' Maintenance string for PSS usage
End Type
Public Type OSVERSIONINFOEX
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128 ' Maintenance string for PSS usage
wServicePackMajor As Integer
wServicePackMinor As Integer
wSuiteMask As Integer
wProductType As Byte
wReserved As Byte
End Type
Public Type SYSTEM_INFO
wProcessorArchitecture As Long
dwPageSize As Long
lpMinimumApplicationAddress As Long
lpMaximumApplicationAddress As Long
dwActiveProcessorMask As Long
dwNumberOrfProcessors As Long
dwProcessorType As Long
dwAllocationGranularity As Long
wProcessorLevel As Integer
wProcessorRevision As Integer
End Type
If Not bOsVersionInfoEx Then
lpOSVI.dwOSVersionInfoSize = Len(lpOSVI_old)
If 0 = GetVersionEx(lpOSVI) Then
GetOSVersion = "Unknown OS"
Exit Function
End If
End If
Select Case lpOSVI.dwPlatformId
Case VER_PLATFORM_WIN32_NT
'# Test for the specific product.
If (lpOSVI.dwMajorVersion 6 And lpOSVI.dwMinorVersion 0) Then
If (lpOSVI.wProductType = VER_NT_WORKSTATION) Then
sBuffer = "Vista "
Else
sBuffer = "Server ""Longhorn"" "
End If
ElseIf (lpOSVI.dwMajorVersion 5 And lpOSVI.dwMinorVersion 2) Then
hProc_GetNativeSI = GetProcAddress(GetModuleHandle("kernel32.dll"), "GetNativeSystemInfo")
If (hProc_GetNativeSI <> 0) Then
GetNativeSystemInfo lpSI
End If
If (GetSystemMetrics(SM_SERVERR2)) Then
sBuffer = "Microsoft Windows Server 2003 ""R2"" "
ElseIf (lpOSVI.wProductType VER_NT_WORKSTATION And lpSI.wProcessorArchitecture PROCESSOR_ARCHITECTURE_AMD64) Then
sBuffer = "XP Professional x64 Edition "
Else
sBuffer = "Server 2003, "
End If
ElseIf (lpOSVI.dwMajorVersion 5 And lpOSVI.dwMinorVersion 1) Then
sBuffer = "XP "
ElseIf (lpOSVI.dwMajorVersion 5 And lpOSVI.dwMinorVersion 0) Then
sBuffer = "2000 "
ElseIf (lpOSVI.dwMajorVersion <= 4) Then
sBuffer = "NT "
End If
If bOsVersionInfoEx Then
'# Test for the workstation type.
If (lpOSVI.wProductType = VER_NT_WORKSTATION And lpSI.wProcessorArchitecture <> PROCESSOR_ARCHITECTURE_AMD64) Then
If (lpOSVI.dwMajorVersion = 4) Then
sBuffer = sBuffer & "Workstation 4.0 "
ElseIf (CBool(lpOSVI.wSuiteMask And VER_SUITE_PERSONAL)) Then
sBuffer = sBuffer & "Home Edition "
Else
sBuffer = sBuffer & "Professional "
End If
'# Test for the server type.
ElseIf (lpOSVI.wProductType VER_NT_SERVER Or lpOSVI.wProductType VER_NT_DOMAIN_CONTROLLER) Then
If (lpOSVI.dwMajorVersion 5 And lpOSVI.dwMinorVersion 2) Then
If (lpSI.wProcessorArchitecture = PROCESSOR_ARCHITECTURE_IA64) Then
If (CBool(lpOSVI.wSuiteMask And VER_SUITE_DATACENTER)) Then
sBuffer = sBuffer & "Datacenter Edition for Itanium-based Systems"
ElseIf (CBool(lpOSVI.wSuiteMask And VER_SUITE_ENTERPRISE)) Then
sBuffer = sBuffer & "Enterprise Edition for Itanium-based Systems"
End If
ElseIf (lpSI.wProcessorArchitecture = PROCESSOR_ARCHITECTURE_AMD64) Then
If (CBool(lpOSVI.wSuiteMask And VER_SUITE_DATACENTER)) Then
sBuffer = sBuffer & "Datacenter x64 Edition "
ElseIf (CBool(lpOSVI.wSuiteMask And VER_SUITE_ENTERPRISE)) Then
sBuffer = sBuffer & "Enterprise x64 Edition "
Else
sBuffer = sBuffer & "Standard x64 Edition "
End If
Else
If (CBool(lpOSVI.wSuiteMask And VER_SUITE_DATACENTER)) Then
sBuffer = sBuffer & "Datacenter Edition "
ElseIf (CBool(lpOSVI.wSuiteMask And VER_SUITE_ENTERPRISE)) Then
sBuffer = sBuffer & "Enterprise Edition "
ElseIf (lpOSVI.wSuiteMask = VER_SUITE_BLADE) Then
sBuffer = sBuffer & "Web Edition "
Else
sBuffer = sBuffer & "Standard Edition "
End If
End If
ElseIf (lpOSVI.dwMajorVersion 5 And lpOSVI.dwMinorVersion 0) Then
If (CBool(lpOSVI.wSuiteMask And VER_SUITE_DATACENTER)) Then
sBuffer = sBuffer & "Datacenter Server "
ElseIf (CBool(lpOSVI.wSuiteMask And VER_SUITE_ENTERPRISE)) Then
sBuffer = sBuffer & "Advanced Server "
Else
sBuffer = sBuffer & "Server "
End If
Else '# Windows NT 4.0
If (CBool(lpOSVI.wSuiteMask And VER_SUITE_ENTERPRISE)) Then
sBuffer = sBuffer & "Server 4.0, Enterprise Edition "
Else
sBuffer = sBuffer & "Server 4.0 "
End If
End If
End If
End If
'# Test for the Windows Me/98/95.
Case VER_PLATFORM_WIN32_WINDOWS:
If (lpOSVI.dwMajorVersion 4 And lpOSVI.dwMinorVersion 0) Then
sBuffer = "95 "
If (AscW(lpOSVI.szCSDVersion) 67 Or AscW(lpOSVI.szCSDVersion) 66) Then
sBuffer = sBuffer & "OSR2 "
End If
ElseIf (lpOSVI.dwMajorVersion 4 And lpOSVI.dwMinorVersion 10) Then
sBuffer = "98 "
If (AscW(lpOSVI.szCSDVersion) 65 Or AscW(lpOSVI.szCSDVersion) 66) Then
sBuffer = sBuffer & "SE "
End If
ElseIf (lpOSVI.dwMajorVersion 4 And lpOSVI.dwMinorVersion 90) Then
sBuffer = "Millennium Edition"
End If
Case VER_PLATFORM_WIN32s
sBuffer = "Microsoft Win32s"
End Select
GetOSVersion = Trim$(sBuffer)
End Function
bouv
Messages postés1411Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention 3 mars 20191 6 avril 2007 à 14:54
humm ??? A quel moment as tu ce message ?
cs_fkionline
Messages postés2Date d'inscriptionsamedi 10 février 2007StatutMembreDernière intervention16 avril 2007 6 avril 2007 à 11:23
j'ai essayer ce petit pg mais il me dit que ErrPtnr n'est pas déclaré.comment dois_je faire?
bouv
Messages postés1411Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention 3 mars 20191 17 juil. 2006 à 09:05
Merci mais qu'entends tu par étoffer d'avantage.
Aurazed
Messages postés36Date d'inscriptionjeudi 16 février 2006StatutMembreDernière intervention26 mai 2008 17 juil. 2006 à 08:28
L'idée est bien, mais tu devrais l'étoffer d'avantage.
Bonne continuation ;-)
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 19 févr. 2006 à 14:17
...la récupération de la ligne y est de la même manière ("form.proc." .. erl())
la possibilité de laisser le choix, ce n'est pas l'orientation de ma source (garder la trace en log à analyser ultérieurement ; en transparence pour l'utilisateur)
@+ ;)
bouv
Messages postés1411Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention 3 mars 20191 19 févr. 2006 à 09:56
PCPT>>Effectivement je viens de voir ta source et c'est vraiment pas mal.
Cependant, il manque à mon gout :
- la récupération de la ligne qui contient l'erreur (si numérotée bien sur)
- La possibilité de laisser l'utilisateur choisir entre (ignorer, annuler, fermer le prog, recommencer).
Pour la MAJ des anciens projet, je voulais mettre ça en place sur un assez gros prog que j'ai fait et je me suis dit que cela irai plus vite de programmer çà que de tout reprendre. Mission réussi, bien que cela ai été quand même un peu long d'analyser la structure de chaque fichier.
Bonne prog
++
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 18 févr. 2006 à 12:39
salut,
ouai c'est pas mal en effet. je préfère néanmoins ma version ^^...
la mise à jour des anciens projets, pas bête, çà j'aime bien! (pas testé)
++
PCPT [AFCK]
bouv
Messages postés1411Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention 3 mars 20191 17 févr. 2006 à 16:48
Je viens d'ajouter une petite appli pour mettre à jour vos anciens codes sources.
Désolé pas beaucoup de commentaire mais un vrai gain de temps...
Laissez vos commentaires
bouv
Messages postés1411Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention 3 mars 20191 17 févr. 2006 à 13:06
OK, en fait la seule partie sous licence etait le module modWindowsVersion.
bouv
Messages postés1411Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention 3 mars 20191 16 févr. 2006 à 11:16
Jack>>Je n'ai pas trouvé l'adresse du site d'où vient la source. Pourrais-tu me la donner afin que je supprime le zip et que je mette cette adresse à la place.
bouv
Messages postés1411Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention 3 mars 20191 15 févr. 2006 à 23:20
Oups, j'ai pas pris le soin de vérifier. PDFCreator est open source donc je pensais que je pouvais en prendre une partie.
Au lieu de supprimer purement et simplement. on peut peut-etre mettre le lien vers le site d'origine non ?
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 15 févr. 2006 à 19:53
Salut
Le principe n'est pas mal du tout.
L'interface est un peu chargée, les rapports et log aussi, mais c'est une question de gout.
Dommage que le site d'où vient la source n'autorise que l'utilisation de ce code dans des applications MAIS pas la duplication et la publication sur le WWW.
23 août 2010 à 17:28
17 janv. 2008 à 22:01
c'est une simple redisposition du code exemple fournis par Microsoft en exemple de l'API !
voilà ce que j'avais fait de cet exemple (URL dans les commentaires)
Public Const PROCESSOR_ARCHITECTURE_IA64 As Long = 6
Public Const PROCESSOR_ARCHITECTURE_AMD64 As Long = 9
Public Const VER_NT_DOMAIN_CONTROLLER As Long = &H2
Public Const VER_NT_SERVER As Long = &H3
Public Const VER_NT_WORKSTATION As Long = &H1
Public Const VER_PLATFORM_WIN32_NT As Long = 2
Public Const VER_PLATFORM_WIN32_WINDOWS As Long = 1
Public Const VER_PLATFORM_WIN32s As Long = 0
Public Const VER_SUITE_DATACENTER As Long = &H80
Public Const VER_SUITE_ENTERPRISE As Long = &H2
Public Const VER_SUITE_PERSONAL As Long = &H200
Public Const VER_SUITE_BLADE As Long = &H400
Public Const SM_SERVERR2 = 89
Public Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128 ' Maintenance string for PSS usage
End Type
Public Type OSVERSIONINFOEX
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128 ' Maintenance string for PSS usage
wServicePackMajor As Integer
wServicePackMinor As Integer
wSuiteMask As Integer
wProductType As Byte
wReserved As Byte
End Type
Public Type SYSTEM_INFO
wProcessorArchitecture As Long
dwPageSize As Long
lpMinimumApplicationAddress As Long
lpMaximumApplicationAddress As Long
dwActiveProcessorMask As Long
dwNumberOrfProcessors As Long
dwProcessorType As Long
dwAllocationGranularity As Long
wProcessorLevel As Integer
wProcessorRevision As Integer
End Type
'# Permet d'obtenir la version de Windows. (ex: "XP" , "98 SE" ou "NT 4.0")
'# portage du code de MSDN : http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/getting_the_system_version.asp
Public Function GetOSVersion() As String
Dim lpOSVI As OSVERSIONINFOEX
Dim lpOSVI_old As OSVERSIONINFO
Dim lpSI As SYSTEM_INFO
Dim bOsVersionInfoEx As Boolean
Dim sBuffer As String
Dim hProc_GetNativeSI As Long
lpOSVI.dwOSVersionInfoSize = Len(lpOSVI)
bOsVersionInfoEx = GetVersionEx(lpOSVI)
If Not bOsVersionInfoEx Then
lpOSVI.dwOSVersionInfoSize = Len(lpOSVI_old)
If 0 = GetVersionEx(lpOSVI) Then
GetOSVersion = "Unknown OS"
Exit Function
End If
End If
Select Case lpOSVI.dwPlatformId
Case VER_PLATFORM_WIN32_NT
'# Test for the specific product.
If (lpOSVI.dwMajorVersion 6 And lpOSVI.dwMinorVersion 0) Then
If (lpOSVI.wProductType = VER_NT_WORKSTATION) Then
sBuffer = "Vista "
Else
sBuffer = "Server ""Longhorn"" "
End If
ElseIf (lpOSVI.dwMajorVersion 5 And lpOSVI.dwMinorVersion 2) Then
hProc_GetNativeSI = GetProcAddress(GetModuleHandle("kernel32.dll"), "GetNativeSystemInfo")
If (hProc_GetNativeSI <> 0) Then
GetNativeSystemInfo lpSI
End If
If (GetSystemMetrics(SM_SERVERR2)) Then
sBuffer = "Microsoft Windows Server 2003 ""R2"" "
ElseIf (lpOSVI.wProductType VER_NT_WORKSTATION And lpSI.wProcessorArchitecture PROCESSOR_ARCHITECTURE_AMD64) Then
sBuffer = "XP Professional x64 Edition "
Else
sBuffer = "Server 2003, "
End If
ElseIf (lpOSVI.dwMajorVersion 5 And lpOSVI.dwMinorVersion 1) Then
sBuffer = "XP "
ElseIf (lpOSVI.dwMajorVersion 5 And lpOSVI.dwMinorVersion 0) Then
sBuffer = "2000 "
ElseIf (lpOSVI.dwMajorVersion <= 4) Then
sBuffer = "NT "
End If
If bOsVersionInfoEx Then
'# Test for the workstation type.
If (lpOSVI.wProductType = VER_NT_WORKSTATION And lpSI.wProcessorArchitecture <> PROCESSOR_ARCHITECTURE_AMD64) Then
If (lpOSVI.dwMajorVersion = 4) Then
sBuffer = sBuffer & "Workstation 4.0 "
ElseIf (CBool(lpOSVI.wSuiteMask And VER_SUITE_PERSONAL)) Then
sBuffer = sBuffer & "Home Edition "
Else
sBuffer = sBuffer & "Professional "
End If
'# Test for the server type.
ElseIf (lpOSVI.wProductType VER_NT_SERVER Or lpOSVI.wProductType VER_NT_DOMAIN_CONTROLLER) Then
If (lpOSVI.dwMajorVersion 5 And lpOSVI.dwMinorVersion 2) Then
If (lpSI.wProcessorArchitecture = PROCESSOR_ARCHITECTURE_IA64) Then
If (CBool(lpOSVI.wSuiteMask And VER_SUITE_DATACENTER)) Then
sBuffer = sBuffer & "Datacenter Edition for Itanium-based Systems"
ElseIf (CBool(lpOSVI.wSuiteMask And VER_SUITE_ENTERPRISE)) Then
sBuffer = sBuffer & "Enterprise Edition for Itanium-based Systems"
End If
ElseIf (lpSI.wProcessorArchitecture = PROCESSOR_ARCHITECTURE_AMD64) Then
If (CBool(lpOSVI.wSuiteMask And VER_SUITE_DATACENTER)) Then
sBuffer = sBuffer & "Datacenter x64 Edition "
ElseIf (CBool(lpOSVI.wSuiteMask And VER_SUITE_ENTERPRISE)) Then
sBuffer = sBuffer & "Enterprise x64 Edition "
Else
sBuffer = sBuffer & "Standard x64 Edition "
End If
Else
If (CBool(lpOSVI.wSuiteMask And VER_SUITE_DATACENTER)) Then
sBuffer = sBuffer & "Datacenter Edition "
ElseIf (CBool(lpOSVI.wSuiteMask And VER_SUITE_ENTERPRISE)) Then
sBuffer = sBuffer & "Enterprise Edition "
ElseIf (lpOSVI.wSuiteMask = VER_SUITE_BLADE) Then
sBuffer = sBuffer & "Web Edition "
Else
sBuffer = sBuffer & "Standard Edition "
End If
End If
ElseIf (lpOSVI.dwMajorVersion 5 And lpOSVI.dwMinorVersion 0) Then
If (CBool(lpOSVI.wSuiteMask And VER_SUITE_DATACENTER)) Then
sBuffer = sBuffer & "Datacenter Server "
ElseIf (CBool(lpOSVI.wSuiteMask And VER_SUITE_ENTERPRISE)) Then
sBuffer = sBuffer & "Advanced Server "
Else
sBuffer = sBuffer & "Server "
End If
Else '# Windows NT 4.0
If (CBool(lpOSVI.wSuiteMask And VER_SUITE_ENTERPRISE)) Then
sBuffer = sBuffer & "Server 4.0, Enterprise Edition "
Else
sBuffer = sBuffer & "Server 4.0 "
End If
End If
End If
End If
sBuffer = sBuffer & StrFormat("{0} (Build {1})", Left$(lpOSVI.szCSDVersion, InStr(lpOSVI.szCSDVersion, vbNullChar) - 1), lpOSVI.dwBuildNumber And &HFFFF)
'# Test for the Windows Me/98/95.
Case VER_PLATFORM_WIN32_WINDOWS:
If (lpOSVI.dwMajorVersion 4 And lpOSVI.dwMinorVersion 0) Then
sBuffer = "95 "
If (AscW(lpOSVI.szCSDVersion) 67 Or AscW(lpOSVI.szCSDVersion) 66) Then
sBuffer = sBuffer & "OSR2 "
End If
ElseIf (lpOSVI.dwMajorVersion 4 And lpOSVI.dwMinorVersion 10) Then
sBuffer = "98 "
If (AscW(lpOSVI.szCSDVersion) 65 Or AscW(lpOSVI.szCSDVersion) 66) Then
sBuffer = sBuffer & "SE "
End If
ElseIf (lpOSVI.dwMajorVersion 4 And lpOSVI.dwMinorVersion 90) Then
sBuffer = "Millennium Edition"
End If
Case VER_PLATFORM_WIN32s
sBuffer = "Microsoft Win32s"
End Select
GetOSVersion = Trim$(sBuffer)
End Function
6 avril 2007 à 14:54
6 avril 2007 à 11:23
17 juil. 2006 à 09:05
17 juil. 2006 à 08:28
Bonne continuation ;-)
19 févr. 2006 à 14:17
la possibilité de laisser le choix, ce n'est pas l'orientation de ma source (garder la trace en log à analyser ultérieurement ; en transparence pour l'utilisateur)
@+ ;)
19 févr. 2006 à 09:56
Cependant, il manque à mon gout :
- la récupération de la ligne qui contient l'erreur (si numérotée bien sur)
- La possibilité de laisser l'utilisateur choisir entre (ignorer, annuler, fermer le prog, recommencer).
Pour la MAJ des anciens projet, je voulais mettre ça en place sur un assez gros prog que j'ai fait et je me suis dit que cela irai plus vite de programmer çà que de tout reprendre. Mission réussi, bien que cela ai été quand même un peu long d'analyser la structure de chaque fichier.
Bonne prog
++
18 févr. 2006 à 12:39
ouai c'est pas mal en effet. je préfère néanmoins ma version ^^...
la mise à jour des anciens projets, pas bête, çà j'aime bien! (pas testé)
++
PCPT [AFCK]
17 févr. 2006 à 16:48
Désolé pas beaucoup de commentaire mais un vrai gain de temps...
Laissez vos commentaires
17 févr. 2006 à 13:06
J'ai donc supprimé le code qu'il contient.
Pensez à télécharger ce code à cette adresse :
http://vbnet.mvps.org/index.html?code/system/getversionex.htm
16 févr. 2006 à 23:11
16 févr. 2006 à 18:49
Le lien se trouve dans ta source : Dans le modWindowsVersions
http://vbnet.mvps.org/terms/pages/terms.htm
16 févr. 2006 à 11:16
15 févr. 2006 à 23:20
Au lieu de supprimer purement et simplement. on peut peut-etre mettre le lien vers le site d'origine non ?
15 févr. 2006 à 19:53
Le principe n'est pas mal du tout.
L'interface est un peu chargée, les rapports et log aussi, mais c'est une question de gout.
Dommage que le site d'où vient la source n'autorise que l'utilisation de ce code dans des applications MAIS pas la duplication et la publication sur le WWW.
Désolé, il va falloir supprimer cette source.