Bonjour,
Comment obtenir la version de RichEdit utilisée sur un PC ?
Merci
Version imprimable
Bonjour,
Comment obtenir la version de RichEdit utilisée sur un PC ?
Merci
Depuis un programme ou bien à la main ?
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... :?
Ok Merci !
Le code Purebasic pour tester la version de la DLL :
Code:
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()