Bonjour,
Comment obtenir la version de RichEdit utilisée sur un PC ?
Merci
Bonjour,
Comment obtenir la version de RichEdit utilisée sur un PC ?
Merci
Depuis un programme ou bien à la main ?
"La forme même des Pyramides prouve que de tous temps, les ouvriers n'ont jamais pensé qu'à en faire de moins en moins."
G. CLEMENCEAU
Disons à partir d'un code...
Soit via une commande WinAPI... soit un test de fichier... peu m'importe !
Peut etre en testant la version de la DLL ?
Ou l'existence d'un DLL ?
On peut s'en sortir en farfouillant dans les DLLs système :
RICHED32.DLL (à partir de W95) -> richedit 1.0
RICHED20.DLL 5.0 (à partir de W98/NT4) -> richedit 2.0
RICHED20.DLL 5.30 (à partir de W2K/ME) -> richedit 3.0
MSFTEDIT.DLL (à partir de WXP SP1) -> richedit 4.1+
Attention : ceci n'est pas documenté par M$, donc pas officiel, donc pas garanti... Ceci dit, il n'y a, à ma connaissance, pas d'autre méthode, donc à toi de voir...
"La forme même des Pyramides prouve que de tous temps, les ouvriers n'ont jamais pensé qu'à en faire de moins en moins."
G. CLEMENCEAU
Ok Merci !
Le code Purebasic pour tester la version de la DLL :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57 Procedure.s GetFileVersionInfo(File.s) Protected iLibrary.l, iFunctionInfo.l, iFunctionSize.l, iFunctionQry.l, *HoldVersion.l, HoldResult.l, HoldBuffer.l, HoldEmpty.l Protected HoldString.s, HoldReturn.s Protected *HoldInfo.VS_FIXEDFILEINFO iLibrary = OpenLibrary(#PB_Any, "version.dll") If iLibrary iFunctionInfo = GetFunction(iLibrary, "GetFileVersionInfoA") iFunctionSize = GetFunction(iLibrary, "GetFileVersionInfoSizeA") iFunctionQry = GetFunction(iLibrary, "VerQueryValueA") If iFunctionInfo And iFunctionSize And iFunctionQry HoldBuffer = CallFunctionFast(iFunctionSize, @File, @HoldEmpty) HoldReturn = Space(HoldBuffer) HoldResult = CallFunctionFast(iFunctionInfo, File, 0, HoldBuffer, @HoldReturn) HoldResult = CallFunctionFast(iFunctionQry, @HoldReturn, "\", @HoldEmpty, @HoldBuffer) *HoldInfo = AllocateMemory(SizeOf(VS_FIXEDFILEINFO)) CopyMemory(HoldEmpty, *HoldInfo, SizeOf(VS_FIXEDFILEINFO)) HoldString = Str(*HoldInfo\dwFileVersionMS >> 16 & $FFFF) + "." + Str(*HoldInfo\dwFileVersionMS & $FFFF) + "." + Str(*HoldInfo\dwFileVersionLS >> 16 & $FFFF) + "." + Str(*HoldInfo\dwFileVersionLS & $FFFF) CloseLibrary(iLibrary) FreeMemory(*HoldInfo) HoldReturn = Space(0) If HoldResult ProcedureReturn HoldString Else ProcedureReturn "" EndIf EndIf CloseLibrary(iLibrary) EndIf EndProcedure ProcedureDLL.s GetRichEditVersion() Protected path_system.s, dir.s path_system= GetEnvironmentVariable("Path") For i=1 To CountString(GetEnvironmentVariable("Path"),";")+1 dir = StringField(GetEnvironmentVariable("Path"),i,";") If Right(dir,1)<>"\" dir+"\" EndIf ; MSFTEDIT.DLL (à partir de WXP SP1) -> richedit 4.1+ If FileSize(dir+"MSFTEDIT.DLL")>0 ProcedureReturn "4.1" ElseIf FileSize(dir+"RICHED20.DLL")>0 version.s=GetFileVersionInfo(dir+"RICHED20.DLL") ; RICHED20.DLL 5.30 (à partir de W2K/ME) -> richedit 3.0 If Right(version,3)="5.3" ProcedureReturn "3.0" ; RICHED20.DLL 5.0 (à partir de W98/NT4) -> richedit 2.0 ElseIf Right(version,3)="5.0" ProcedureReturn "2.0" EndIf ; RICHED32.DLL (à partir de W95) -> richedit 1.0 ElseIf FileSize(dir+"RICHED32.DLL")>0 ProcedureReturn "1.0" EndIf Next EndProcedure Debug GetRichEditVersion()
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager