N.B. Ma précédente remarque au sujet du codage de vos messages
n'était pas destinée à vous faire de la peine ou à vous faire un
reproche (je ne me permettrais pas cela). Je suis pour ma part très
tolérant quant à la façon de présenter ses contributions mais,
s'agissant du codage des caractères, le fait de pas adopter le codage
Latin qui est celui pratiqué par une énorme majorité sur les forums
francophones pose des problèmes de lecture. Je ne sais pas comment on
peut résoudre le problème quand on se connecte depuis l'interface
WEB. Peut-être dans les options Internet ?
N.B. Ma précédente remarque au sujet du codage de vos messages
n'était pas destinée à vous faire de la peine ou à vous faire un
reproche (je ne me permettrais pas cela). Je suis pour ma part très
tolérant quant à la façon de présenter ses contributions mais,
s'agissant du codage des caractères, le fait de pas adopter le codage
Latin qui est celui pratiqué par une énorme majorité sur les forums
francophones pose des problèmes de lecture. Je ne sais pas comment on
peut résoudre le problème quand on se connecte depuis l'interface
WEB. Peut-être dans les options Internet ?
N.B. Ma précédente remarque au sujet du codage de vos messages
n'était pas destinée à vous faire de la peine ou à vous faire un
reproche (je ne me permettrais pas cela). Je suis pour ma part très
tolérant quant à la façon de présenter ses contributions mais,
s'agissant du codage des caractères, le fait de pas adopter le codage
Latin qui est celui pratiqué par une énorme majorité sur les forums
francophones pose des problèmes de lecture. Je ne sais pas comment on
peut résoudre le problème quand on se connecte depuis l'interface
WEB. Peut-être dans les options Internet ?
Oui, le fichier Setup.lst prévoit tous les fichiers nécessaires y compris
bien sûr le « runtime » sensu stricto.
Le problème qui se pose est plutôt l'inverse : l'assistant de VB prévoit
quelquefois (par suite d'une erreur du programmeur dans le menu « Projet /
Références » et « Projet / Composants ») des fichiers qui ne sont pas
nécessaires.
N.B. Ma précédente remarque au sujet du codage de vos messages n'était pas
destinée à vous faire de la peine ou à vous faire un reproche (je ne me
permettrais pas cela). Je suis pour ma part très tolérant quant à la façon
de présenter ses contributions mais, s'agissant du codage des caractères, le
fait de pas adopter le codage Latin qui est celui pratiqué par une énorme
majorité sur les forums francophones pose des problèmes de lecture. Je ne
sais pas comment on peut résoudre le problème quand on se connecte depuis
l'interface WEB. Peut-être dans les options Internet ?
Cordialement.
Kiriasse
== >
"Peltchag"
> desole, mais je suis connecte depuis l'interface web, ca doit etre ca qui
> cause probleme.
>
> en tout cas, je vais regarder tout ca :)
>
> d'ailleurs, est ce que le fichier d'empactage prevoit aussi les fichiers
> du
> runtime ? serait ce ca la section bootstrap files ?
>
> merci pour l'aide en tout cas !
Oui, le fichier Setup.lst prévoit tous les fichiers nécessaires y compris
bien sûr le « runtime » sensu stricto.
Le problème qui se pose est plutôt l'inverse : l'assistant de VB prévoit
quelquefois (par suite d'une erreur du programmeur dans le menu « Projet /
Références » et « Projet / Composants ») des fichiers qui ne sont pas
nécessaires.
N.B. Ma précédente remarque au sujet du codage de vos messages n'était pas
destinée à vous faire de la peine ou à vous faire un reproche (je ne me
permettrais pas cela). Je suis pour ma part très tolérant quant à la façon
de présenter ses contributions mais, s'agissant du codage des caractères, le
fait de pas adopter le codage Latin qui est celui pratiqué par une énorme
majorité sur les forums francophones pose des problèmes de lecture. Je ne
sais pas comment on peut résoudre le problème quand on se connecte depuis
l'interface WEB. Peut-être dans les options Internet ?
Cordialement.
Kiriasse
== >
"Peltchag"
> desole, mais je suis connecte depuis l'interface web, ca doit etre ca qui
> cause probleme.
>
> en tout cas, je vais regarder tout ca :)
>
> d'ailleurs, est ce que le fichier d'empactage prevoit aussi les fichiers
> du
> runtime ? serait ce ca la section bootstrap files ?
>
> merci pour l'aide en tout cas !
Oui, le fichier Setup.lst prévoit tous les fichiers nécessaires y compris
bien sûr le « runtime » sensu stricto.
Le problème qui se pose est plutôt l'inverse : l'assistant de VB prévoit
quelquefois (par suite d'une erreur du programmeur dans le menu « Projet /
Références » et « Projet / Composants ») des fichiers qui ne sont pas
nécessaires.
N.B. Ma précédente remarque au sujet du codage de vos messages n'était pas
destinée à vous faire de la peine ou à vous faire un reproche (je ne me
permettrais pas cela). Je suis pour ma part très tolérant quant à la façon
de présenter ses contributions mais, s'agissant du codage des caractères, le
fait de pas adopter le codage Latin qui est celui pratiqué par une énorme
majorité sur les forums francophones pose des problèmes de lecture. Je ne
sais pas comment on peut résoudre le problème quand on se connecte depuis
l'interface WEB. Peut-être dans les options Internet ?
Cordialement.
Kiriasse
== >
"Peltchag"
> desole, mais je suis connecte depuis l'interface web, ca doit etre ca qui
> cause probleme.
>
> en tout cas, je vais regarder tout ca :)
>
> d'ailleurs, est ce que le fichier d'empactage prevoit aussi les fichiers
> du
> runtime ? serait ce ca la section bootstrap files ?
>
> merci pour l'aide en tout cas !
Bonjour Jean-Marc, dans le message
news:42e766be$0$1075$
tu disais :
> Pour les utilisateurs d'Outlook Express, on configure ceci de la
> façon suivante:
oui, mais ce n'est pas son cas ;-)
>>>X-MimeOLE: Produced By Microsoft MimeOLE V6.00.3790.0
> Menu "Outils",
> Sous Menu "Options...",
> Onglet "Envois"
> Bouton "Paramètres internationaux..."
>
> Choisir -> "Europe occidentale (ISO)"
mieux : Latin9 (iso)
Bonjour Jean-Marc, dans le message
news:42e766be$0$1075$ba620e4c@news.skynet.be
tu disais :
> Pour les utilisateurs d'Outlook Express, on configure ceci de la
> façon suivante:
oui, mais ce n'est pas son cas ;-)
>>>X-MimeOLE: Produced By Microsoft MimeOLE V6.00.3790.0
> Menu "Outils",
> Sous Menu "Options...",
> Onglet "Envois"
> Bouton "Paramètres internationaux..."
>
> Choisir -> "Europe occidentale (ISO)"
mieux : Latin9 (iso)
Bonjour Jean-Marc, dans le message
news:42e766be$0$1075$
tu disais :
> Pour les utilisateurs d'Outlook Express, on configure ceci de la
> façon suivante:
oui, mais ce n'est pas son cas ;-)
>>>X-MimeOLE: Produced By Microsoft MimeOLE V6.00.3790.0
> Menu "Outils",
> Sous Menu "Options...",
> Onglet "Envois"
> Bouton "Paramètres internationaux..."
>
> Choisir -> "Europe occidentale (ISO)"
mieux : Latin9 (iso)
Bonjour Kiriasse, dans le message
news:42e77306$0$22280$
tu disais :
> Pour le reste des préceptes du « bon usage »
> auquel vous renvoyez, personnellement, je m'en bats l'½il, ce qui
> conduit quelques imbéciles à qualifier de temps en temps ce que
> j'écris de « quotage de goret » et autres stupidités du même genre.
ce qui prouve le peu de cas que tu fais des usages de la communauté à
laquelle tu prétends t'intégrer
> Je vois d'ailleurs que sur le présent forum on est beaucoup plus
> tolérant. Sans doute parce que les programmeurs ont quelque chose de
> précis à dire. Cordialement.
je ne dirai pas celà ...
habituellement, je suis attaché à la réponse dans le texte et sous la
citation
il apparait sur ce forum que beaucoup (et certainement la plupart du temps
par flemme ou ignorance des subtilités de leur logiciel de messagerie -
je vais m'attirer des amis) préfèrent répondre au dessus, ce qui est peut
être plus pratique mais assurément moins "naturel"
ah ok!Parce que ça renverse l'ordre naturel de lecture!Oui mais pourquoi?Parce que ça rend les choses difficiles à lire...
Pourquoi est ce que c'est mal de répondre en haut?
Bonjour Kiriasse, dans le message
news:42e77306$0$22280$8fcfb975@news.wanadoo.fr
tu disais :
> Pour le reste des préceptes du « bon usage »
> auquel vous renvoyez, personnellement, je m'en bats l'½il, ce qui
> conduit quelques imbéciles à qualifier de temps en temps ce que
> j'écris de « quotage de goret » et autres stupidités du même genre.
ce qui prouve le peu de cas que tu fais des usages de la communauté à
laquelle tu prétends t'intégrer
> Je vois d'ailleurs que sur le présent forum on est beaucoup plus
> tolérant. Sans doute parce que les programmeurs ont quelque chose de
> précis à dire. Cordialement.
je ne dirai pas celà ...
habituellement, je suis attaché à la réponse dans le texte et sous la
citation
il apparait sur ce forum que beaucoup (et certainement la plupart du temps
par flemme ou ignorance des subtilités de leur logiciel de messagerie -
je vais m'attirer des amis) préfèrent répondre au dessus, ce qui est peut
être plus pratique mais assurément moins "naturel"
ah ok!
Parce que ça renverse l'ordre naturel de lecture!
Oui mais pourquoi?
Parce que ça rend les choses difficiles à lire...
Pourquoi est ce que c'est mal de répondre en haut?
Bonjour Kiriasse, dans le message
news:42e77306$0$22280$
tu disais :
> Pour le reste des préceptes du « bon usage »
> auquel vous renvoyez, personnellement, je m'en bats l'½il, ce qui
> conduit quelques imbéciles à qualifier de temps en temps ce que
> j'écris de « quotage de goret » et autres stupidités du même genre.
ce qui prouve le peu de cas que tu fais des usages de la communauté à
laquelle tu prétends t'intégrer
> Je vois d'ailleurs que sur le présent forum on est beaucoup plus
> tolérant. Sans doute parce que les programmeurs ont quelque chose de
> précis à dire. Cordialement.
je ne dirai pas celà ...
habituellement, je suis attaché à la réponse dans le texte et sous la
citation
il apparait sur ce forum que beaucoup (et certainement la plupart du temps
par flemme ou ignorance des subtilités de leur logiciel de messagerie -
je vais m'attirer des amis) préfèrent répondre au dessus, ce qui est peut
être plus pratique mais assurément moins "naturel"
ah ok!Parce que ça renverse l'ordre naturel de lecture!Oui mais pourquoi?Parce que ça rend les choses difficiles à lire...
Pourquoi est ce que c'est mal de répondre en haut?
Existe-t-il une fonction qui puisse permettre de savoir quelle est la version
du runtime installée sur le poste client ?
merci de votre aide :)
Existe-t-il une fonction qui puisse permettre de savoir quelle est la version
du runtime installée sur le poste client ?
merci de votre aide :)
Existe-t-il une fonction qui puisse permettre de savoir quelle est la version
du runtime installée sur le poste client ?
merci de votre aide :)
Peltchag a écrit :Existe-t-il une fonction qui puisse permettre de savoir quelle est la
version du runtime installée sur le poste client ?
merci de votre aide :)
Je crois que l'on a oublié la question... question bon usage copies revoir
Il doit y avoir une API pour ton besoin je fais le tour du propriétaire
et je reviens
Peltchag a écrit :
Existe-t-il une fonction qui puisse permettre de savoir quelle est la
version du runtime installée sur le poste client ?
merci de votre aide :)
Je crois que l'on a oublié la question... question bon usage copies revoir
Il doit y avoir une API pour ton besoin je fais le tour du propriétaire
et je reviens
Peltchag a écrit :Existe-t-il une fonction qui puisse permettre de savoir quelle est la
version du runtime installée sur le poste client ?
merci de votre aide :)
Je crois que l'on a oublié la question... question bon usage copies revoir
Il doit y avoir une API pour ton besoin je fais le tour du propriétaire
et je reviens
Michel a écrit :
> Peltchag a écrit :
>
>> Existe-t-il une fonction qui puisse permettre de savoir quelle est la
>> version du runtime installée sur le poste client ?
>>
>> merci de votre aide :)
>
>
> Je crois que l'on a oublié la question... question bon usage copies revoir
>
> Il doit y avoir une API pour ton besoin je fais le tour du propriétaire
> et je reviens
bon voici un p'tit module qui te donnera tout sur un exec meme la version.
A+
Michel a écrit :
> Peltchag a écrit :
>
>> Existe-t-il une fonction qui puisse permettre de savoir quelle est la
>> version du runtime installée sur le poste client ?
>>
>> merci de votre aide :)
>
>
> Je crois que l'on a oublié la question... question bon usage copies revoir
>
> Il doit y avoir une API pour ton besoin je fais le tour du propriétaire
> et je reviens
bon voici un p'tit module qui te donnera tout sur un exec meme la version.
A+
Michel a écrit :
> Peltchag a écrit :
>
>> Existe-t-il une fonction qui puisse permettre de savoir quelle est la
>> version du runtime installée sur le poste client ?
>>
>> merci de votre aide :)
>
>
> Je crois que l'on a oublié la question... question bon usage copies revoir
>
> Il doit y avoir une API pour ton besoin je fais le tour du propriétaire
> et je reviens
bon voici un p'tit module qui te donnera tout sur un exec meme la version.
A+
Peltchag a écrit :Existe-t-il une fonction qui puisse permettre de savoir quelle est la
version du runtime installée sur le poste client ?
merci de votre aide :)
Je crois que l'on a oublié la question... question bon usage copies revoir
Il doit y avoir une API pour ton besoin je fais le tour du propriétaire
et je reviens
Peltchag a écrit :
Existe-t-il une fonction qui puisse permettre de savoir quelle est la
version du runtime installée sur le poste client ?
merci de votre aide :)
Je crois que l'on a oublié la question... question bon usage copies revoir
Il doit y avoir une API pour ton besoin je fais le tour du propriétaire
et je reviens
Peltchag a écrit :Existe-t-il une fonction qui puisse permettre de savoir quelle est la
version du runtime installée sur le poste client ?
merci de votre aide :)
Je crois que l'on a oublié la question... question bon usage copies revoir
Il doit y avoir une API pour ton besoin je fais le tour du propriétaire
et je reviens
Michel a écrit :
> Peltchag a écrit :
>
>> Existe-t-il une fonction qui puisse permettre de savoir quelle est la
>> version du runtime installée sur le poste client ?
>>
>> merci de votre aide :)
>
>
> Je crois que l'on a oublié la question... question bon usage copies revoir
>
> Il doit y avoir une API pour ton besoin je fais le tour du propriétaire
> et je reviens
Bin non j'ai juste oublié le copie/coller
J'espere que cela fera 'la rue Michel...' comme disait De Gaulle
Une Form avec quelques textbox
Private Sub Command1_Click()
If Len(Dir$(Trim$(Me.Text1.Text), 6)) > 0 Then
' file found
Me.Text2.Text = FileInfo(Me.Text1.Text).CompanyName
' to avoid running the api's all the time the info has been cashed
Me.Text3.Text = FileInfo.FileDescription
Me.Text4.Text = FileInfo.FileVersion
Me.Text5.Text = FileInfo.InternalName
Me.Text6.Text = FileInfo.LegalCopyright
Me.Text7.Text = FileInfo.OrigionalFileName
Me.Text8.Text = FileInfo.ProductName
Me.Text9.Text = FileInfo.ProductVersion
Else
' file not found
MsgBox "File not found", vbOKOnly, "Problem"
End If
End Sub
Private Sub Form_Load()
' Me.Text1.Text = "C:UserApplIrFani_view32.exe"
Me.Text1.Text = "J:ADACACCF2002_2Launcher.exe"
End Sub
Le module
Declare Function GetFileVersionInfo Lib "Version.dll" Alias _
"GetFileVersionInfoA" (ByVal lptstrFilename As String, _
ByVal dwhandle As Long, ByVal dwlen As Long, lpData As Any) As Long
Declare Function GetFileVersionInfoSize Lib "Version.dll" Alias _
"GetFileVersionInfoSizeA" (ByVal lptstrFilename As String, _
lpdwHandle As Long) As Long
Declare Function VerQueryValue Lib "Version.dll" Alias "VerQueryValueA" ( _
pBlock As Any, ByVal lpSubBlock As String, lplpBuffer As Any, _
puLen As Long) As Long
Declare Function GetSystemDirectory Lib "kernel32" Alias _
"GetSystemDirectoryA" (ByVal Path As String, ByVal cbBytes As Long) As Long
Declare Sub MoveMemory Lib "kernel32" Alias "RtlMoveMemory" (dest As Any, _
ByVal Source As Long, ByVal Length As Long)
Declare Function lstrcpy Lib "kernel32" Alias "lstrcpyA" ( _
ByVal lpString1 As String, ByVal lpString2 As Long) As Long
Public Type FILEPROPERTIE
CompanyName As String
FileDescription As String
FileVersion As String
InternalName As String
LegalCopyright As String
OrigionalFileName As String
ProductName As String
ProductVersion As String
End Type
Public Function FileInfo(Optional ByVal PathWithFilename As String) As FILEPROPERTIE
' return file-properties of given file (EXE , DLL , OCX)
Static BACKUP As FILEPROPERTIE ' backup info for next call without filename
If Len(PathWithFilename) = 0 Then
FileInfo = BACKUP
Exit Function
End If
Dim lngBufferlen As Long
Dim lngDummy As Long
Dim lngRc As Long
Dim lngVerPointer As Long
Dim lngHexNumber As Long
Dim bytBuffer() As Byte
Dim bytBuff(255) As Byte
Dim strBuffer As String
Dim strLangCharset As String
Dim strVersionInfo(7) As String
Dim strTemp As String
Dim intTemp As Integer
' size
lngBufferlen = GetFileVersionInfoSize(PathWithFilename, lngDummy)
If lngBufferlen > 0 Then
ReDim bytBuffer(lngBufferlen)
lngRc = GetFileVersionInfo(PathWithFilename, 0&, lngBufferlen, bytBuffer(0))
If lngRc <> 0 Then
lngRc = VerQueryValue(bytBuffer(0), "VarFileInfoTranslation", _
lngVerPointer, lngBufferlen)
If lngRc <> 0 Then
'lngVerPointer is a pointer to four 4 bytes of Hex number,
'first two bytes are language id, and last two bytes are code
'page. However, strLangCharset needs a string of
'4 hex digits, the first two characters correspond to the
'language id and last two the last two character correspond
'to the code page id.
MoveMemory bytBuff(0), lngVerPointer, lngBufferlen
lngHexNumber = bytBuff(2) + bytBuff(3) * &H100 + _
bytBuff(0) * &H10000 + bytBuff(1) * &H1000000
strLangCharset = Hex(lngHexNumber)
'now we change the order of the language id and code page
'and convert it into a string representation.
'For example, it may look like 040904E4
'Or to pull it all apart:
'04------ = SUBLANG_ENGLISH_USA
'--09---- = LANG_ENGLISH
' ----04E4 = 1252 = Codepage for Windows:Multilingual
Do While Len(strLangCharset) < 8
strLangCharset = "0" & strLangCharset
Loop
' assign propertienames
strVersionInfo(0) = "CompanyName"
strVersionInfo(1) = "FileDescription"
strVersionInfo(2) = "FileVersion"
strVersionInfo(3) = "InternalName"
strVersionInfo(4) = "LegalCopyright"
strVersionInfo(5) = "OriginalFileName"
strVersionInfo(6) = "ProductName"
strVersionInfo(7) = "ProductVersion"
' loop and get fileproperties
For intTemp = 0 To 7
strBuffer = String$(255, 0)
strTemp = "StringFileInfo" & strLangCharset _
& "" & strVersionInfo(intTemp)
lngRc = VerQueryValue(bytBuffer(0), strTemp, _
lngVerPointer, lngBufferlen)
If lngRc <> 0 Then
' get and format data
lstrcpy strBuffer, lngVerPointer
strBuffer = Mid$(strBuffer, 1, InStr(strBuffer, Chr(0)) - 1)
strVersionInfo(intTemp) = strBuffer
Else
' property not found
strVersionInfo(intTemp) = "?"
End If
Next intTemp
End If
End If
End If
' assign array to user-defined-type
FileInfo.CompanyName = strVersionInfo(0)
FileInfo.FileDescription = strVersionInfo(1)
FileInfo.FileVersion = strVersionInfo(2)
FileInfo.InternalName = strVersionInfo(3)
FileInfo.LegalCopyright = strVersionInfo(4)
FileInfo.OrigionalFileName = strVersionInfo(5)
FileInfo.ProductName = strVersionInfo(6)
FileInfo.ProductVersion = strVersionInfo(7)
BACKUP = FileInfo
End Function
Michel a écrit :
> Peltchag a écrit :
>
>> Existe-t-il une fonction qui puisse permettre de savoir quelle est la
>> version du runtime installée sur le poste client ?
>>
>> merci de votre aide :)
>
>
> Je crois que l'on a oublié la question... question bon usage copies revoir
>
> Il doit y avoir une API pour ton besoin je fais le tour du propriétaire
> et je reviens
Bin non j'ai juste oublié le copie/coller
J'espere que cela fera 'la rue Michel...' comme disait De Gaulle
Une Form avec quelques textbox
Private Sub Command1_Click()
If Len(Dir$(Trim$(Me.Text1.Text), 6)) > 0 Then
' file found
Me.Text2.Text = FileInfo(Me.Text1.Text).CompanyName
' to avoid running the api's all the time the info has been cashed
Me.Text3.Text = FileInfo.FileDescription
Me.Text4.Text = FileInfo.FileVersion
Me.Text5.Text = FileInfo.InternalName
Me.Text6.Text = FileInfo.LegalCopyright
Me.Text7.Text = FileInfo.OrigionalFileName
Me.Text8.Text = FileInfo.ProductName
Me.Text9.Text = FileInfo.ProductVersion
Else
' file not found
MsgBox "File not found", vbOKOnly, "Problem"
End If
End Sub
Private Sub Form_Load()
' Me.Text1.Text = "C:UserApplIrFani_view32.exe"
Me.Text1.Text = "J:ADACACCF2002_2Launcher.exe"
End Sub
Le module
Declare Function GetFileVersionInfo Lib "Version.dll" Alias _
"GetFileVersionInfoA" (ByVal lptstrFilename As String, _
ByVal dwhandle As Long, ByVal dwlen As Long, lpData As Any) As Long
Declare Function GetFileVersionInfoSize Lib "Version.dll" Alias _
"GetFileVersionInfoSizeA" (ByVal lptstrFilename As String, _
lpdwHandle As Long) As Long
Declare Function VerQueryValue Lib "Version.dll" Alias "VerQueryValueA" ( _
pBlock As Any, ByVal lpSubBlock As String, lplpBuffer As Any, _
puLen As Long) As Long
Declare Function GetSystemDirectory Lib "kernel32" Alias _
"GetSystemDirectoryA" (ByVal Path As String, ByVal cbBytes As Long) As Long
Declare Sub MoveMemory Lib "kernel32" Alias "RtlMoveMemory" (dest As Any, _
ByVal Source As Long, ByVal Length As Long)
Declare Function lstrcpy Lib "kernel32" Alias "lstrcpyA" ( _
ByVal lpString1 As String, ByVal lpString2 As Long) As Long
Public Type FILEPROPERTIE
CompanyName As String
FileDescription As String
FileVersion As String
InternalName As String
LegalCopyright As String
OrigionalFileName As String
ProductName As String
ProductVersion As String
End Type
Public Function FileInfo(Optional ByVal PathWithFilename As String) As FILEPROPERTIE
' return file-properties of given file (EXE , DLL , OCX)
Static BACKUP As FILEPROPERTIE ' backup info for next call without filename
If Len(PathWithFilename) = 0 Then
FileInfo = BACKUP
Exit Function
End If
Dim lngBufferlen As Long
Dim lngDummy As Long
Dim lngRc As Long
Dim lngVerPointer As Long
Dim lngHexNumber As Long
Dim bytBuffer() As Byte
Dim bytBuff(255) As Byte
Dim strBuffer As String
Dim strLangCharset As String
Dim strVersionInfo(7) As String
Dim strTemp As String
Dim intTemp As Integer
' size
lngBufferlen = GetFileVersionInfoSize(PathWithFilename, lngDummy)
If lngBufferlen > 0 Then
ReDim bytBuffer(lngBufferlen)
lngRc = GetFileVersionInfo(PathWithFilename, 0&, lngBufferlen, bytBuffer(0))
If lngRc <> 0 Then
lngRc = VerQueryValue(bytBuffer(0), "VarFileInfoTranslation", _
lngVerPointer, lngBufferlen)
If lngRc <> 0 Then
'lngVerPointer is a pointer to four 4 bytes of Hex number,
'first two bytes are language id, and last two bytes are code
'page. However, strLangCharset needs a string of
'4 hex digits, the first two characters correspond to the
'language id and last two the last two character correspond
'to the code page id.
MoveMemory bytBuff(0), lngVerPointer, lngBufferlen
lngHexNumber = bytBuff(2) + bytBuff(3) * &H100 + _
bytBuff(0) * &H10000 + bytBuff(1) * &H1000000
strLangCharset = Hex(lngHexNumber)
'now we change the order of the language id and code page
'and convert it into a string representation.
'For example, it may look like 040904E4
'Or to pull it all apart:
'04------ = SUBLANG_ENGLISH_USA
'--09---- = LANG_ENGLISH
' ----04E4 = 1252 = Codepage for Windows:Multilingual
Do While Len(strLangCharset) < 8
strLangCharset = "0" & strLangCharset
Loop
' assign propertienames
strVersionInfo(0) = "CompanyName"
strVersionInfo(1) = "FileDescription"
strVersionInfo(2) = "FileVersion"
strVersionInfo(3) = "InternalName"
strVersionInfo(4) = "LegalCopyright"
strVersionInfo(5) = "OriginalFileName"
strVersionInfo(6) = "ProductName"
strVersionInfo(7) = "ProductVersion"
' loop and get fileproperties
For intTemp = 0 To 7
strBuffer = String$(255, 0)
strTemp = "StringFileInfo" & strLangCharset _
& "" & strVersionInfo(intTemp)
lngRc = VerQueryValue(bytBuffer(0), strTemp, _
lngVerPointer, lngBufferlen)
If lngRc <> 0 Then
' get and format data
lstrcpy strBuffer, lngVerPointer
strBuffer = Mid$(strBuffer, 1, InStr(strBuffer, Chr(0)) - 1)
strVersionInfo(intTemp) = strBuffer
Else
' property not found
strVersionInfo(intTemp) = "?"
End If
Next intTemp
End If
End If
End If
' assign array to user-defined-type
FileInfo.CompanyName = strVersionInfo(0)
FileInfo.FileDescription = strVersionInfo(1)
FileInfo.FileVersion = strVersionInfo(2)
FileInfo.InternalName = strVersionInfo(3)
FileInfo.LegalCopyright = strVersionInfo(4)
FileInfo.OrigionalFileName = strVersionInfo(5)
FileInfo.ProductName = strVersionInfo(6)
FileInfo.ProductVersion = strVersionInfo(7)
BACKUP = FileInfo
End Function
Michel a écrit :
> Peltchag a écrit :
>
>> Existe-t-il une fonction qui puisse permettre de savoir quelle est la
>> version du runtime installée sur le poste client ?
>>
>> merci de votre aide :)
>
>
> Je crois que l'on a oublié la question... question bon usage copies revoir
>
> Il doit y avoir une API pour ton besoin je fais le tour du propriétaire
> et je reviens
Bin non j'ai juste oublié le copie/coller
J'espere que cela fera 'la rue Michel...' comme disait De Gaulle
Une Form avec quelques textbox
Private Sub Command1_Click()
If Len(Dir$(Trim$(Me.Text1.Text), 6)) > 0 Then
' file found
Me.Text2.Text = FileInfo(Me.Text1.Text).CompanyName
' to avoid running the api's all the time the info has been cashed
Me.Text3.Text = FileInfo.FileDescription
Me.Text4.Text = FileInfo.FileVersion
Me.Text5.Text = FileInfo.InternalName
Me.Text6.Text = FileInfo.LegalCopyright
Me.Text7.Text = FileInfo.OrigionalFileName
Me.Text8.Text = FileInfo.ProductName
Me.Text9.Text = FileInfo.ProductVersion
Else
' file not found
MsgBox "File not found", vbOKOnly, "Problem"
End If
End Sub
Private Sub Form_Load()
' Me.Text1.Text = "C:UserApplIrFani_view32.exe"
Me.Text1.Text = "J:ADACACCF2002_2Launcher.exe"
End Sub
Le module
Declare Function GetFileVersionInfo Lib "Version.dll" Alias _
"GetFileVersionInfoA" (ByVal lptstrFilename As String, _
ByVal dwhandle As Long, ByVal dwlen As Long, lpData As Any) As Long
Declare Function GetFileVersionInfoSize Lib "Version.dll" Alias _
"GetFileVersionInfoSizeA" (ByVal lptstrFilename As String, _
lpdwHandle As Long) As Long
Declare Function VerQueryValue Lib "Version.dll" Alias "VerQueryValueA" ( _
pBlock As Any, ByVal lpSubBlock As String, lplpBuffer As Any, _
puLen As Long) As Long
Declare Function GetSystemDirectory Lib "kernel32" Alias _
"GetSystemDirectoryA" (ByVal Path As String, ByVal cbBytes As Long) As Long
Declare Sub MoveMemory Lib "kernel32" Alias "RtlMoveMemory" (dest As Any, _
ByVal Source As Long, ByVal Length As Long)
Declare Function lstrcpy Lib "kernel32" Alias "lstrcpyA" ( _
ByVal lpString1 As String, ByVal lpString2 As Long) As Long
Public Type FILEPROPERTIE
CompanyName As String
FileDescription As String
FileVersion As String
InternalName As String
LegalCopyright As String
OrigionalFileName As String
ProductName As String
ProductVersion As String
End Type
Public Function FileInfo(Optional ByVal PathWithFilename As String) As FILEPROPERTIE
' return file-properties of given file (EXE , DLL , OCX)
Static BACKUP As FILEPROPERTIE ' backup info for next call without filename
If Len(PathWithFilename) = 0 Then
FileInfo = BACKUP
Exit Function
End If
Dim lngBufferlen As Long
Dim lngDummy As Long
Dim lngRc As Long
Dim lngVerPointer As Long
Dim lngHexNumber As Long
Dim bytBuffer() As Byte
Dim bytBuff(255) As Byte
Dim strBuffer As String
Dim strLangCharset As String
Dim strVersionInfo(7) As String
Dim strTemp As String
Dim intTemp As Integer
' size
lngBufferlen = GetFileVersionInfoSize(PathWithFilename, lngDummy)
If lngBufferlen > 0 Then
ReDim bytBuffer(lngBufferlen)
lngRc = GetFileVersionInfo(PathWithFilename, 0&, lngBufferlen, bytBuffer(0))
If lngRc <> 0 Then
lngRc = VerQueryValue(bytBuffer(0), "VarFileInfoTranslation", _
lngVerPointer, lngBufferlen)
If lngRc <> 0 Then
'lngVerPointer is a pointer to four 4 bytes of Hex number,
'first two bytes are language id, and last two bytes are code
'page. However, strLangCharset needs a string of
'4 hex digits, the first two characters correspond to the
'language id and last two the last two character correspond
'to the code page id.
MoveMemory bytBuff(0), lngVerPointer, lngBufferlen
lngHexNumber = bytBuff(2) + bytBuff(3) * &H100 + _
bytBuff(0) * &H10000 + bytBuff(1) * &H1000000
strLangCharset = Hex(lngHexNumber)
'now we change the order of the language id and code page
'and convert it into a string representation.
'For example, it may look like 040904E4
'Or to pull it all apart:
'04------ = SUBLANG_ENGLISH_USA
'--09---- = LANG_ENGLISH
' ----04E4 = 1252 = Codepage for Windows:Multilingual
Do While Len(strLangCharset) < 8
strLangCharset = "0" & strLangCharset
Loop
' assign propertienames
strVersionInfo(0) = "CompanyName"
strVersionInfo(1) = "FileDescription"
strVersionInfo(2) = "FileVersion"
strVersionInfo(3) = "InternalName"
strVersionInfo(4) = "LegalCopyright"
strVersionInfo(5) = "OriginalFileName"
strVersionInfo(6) = "ProductName"
strVersionInfo(7) = "ProductVersion"
' loop and get fileproperties
For intTemp = 0 To 7
strBuffer = String$(255, 0)
strTemp = "StringFileInfo" & strLangCharset _
& "" & strVersionInfo(intTemp)
lngRc = VerQueryValue(bytBuffer(0), strTemp, _
lngVerPointer, lngBufferlen)
If lngRc <> 0 Then
' get and format data
lstrcpy strBuffer, lngVerPointer
strBuffer = Mid$(strBuffer, 1, InStr(strBuffer, Chr(0)) - 1)
strVersionInfo(intTemp) = strBuffer
Else
' property not found
strVersionInfo(intTemp) = "?"
End If
Next intTemp
End If
End If
End If
' assign array to user-defined-type
FileInfo.CompanyName = strVersionInfo(0)
FileInfo.FileDescription = strVersionInfo(1)
FileInfo.FileVersion = strVersionInfo(2)
FileInfo.InternalName = strVersionInfo(3)
FileInfo.LegalCopyright = strVersionInfo(4)
FileInfo.OrigionalFileName = strVersionInfo(5)
FileInfo.ProductName = strVersionInfo(6)
FileInfo.ProductVersion = strVersionInfo(7)
BACKUP = FileInfo
End Function