OVH Cloud OVH Cloud

[VB6] Connaître la version du runtime

19 réponses
Avatar
Peltchag
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 :)

9 réponses

1 2
Avatar
scraper
Bonjour Kiriasse, dans le message
news:42e7758e$0$881$
tu disais :


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 ?



tu devrais (ceci dit sans aucune polémique ;-) te pencher sur les
paramétrages de *ton* logiciel de courrier ....

il semble que ce soit le codage que tu appliques aux messages entrants qui
génère les problèmes de lecture auxquels tu fais référence ...

tu pourras t'en rendre compte aisément sur cette capture ....
(à chaque fois que tu réponds, et que tu ne rectifies pas le codage, les
signes cabalistiques apparaissent :-)



http://scraper.chez.tiscali.fr/tempo/codage.jpg



--

Adresse invalide
Merci de répondre sur le forum ...
http://scraper.chez.tiscali.fr

scraper
Avatar
Peltchag
j'avais bien compris le sens de la remarque ne vous inquiétez (j'ai mis un
accent la, merci de me dire si il s'affiche bien, ou si on voit le code du
caractere) pas, bien au contraire, je trouve votre attitude tres sympathique
:)

pour le fichier Setup.lst, j'ai bien ce qu'il me faut (pas d'inquietude du
cote des composants/references, j'ai pris que ce dont j'ai besoin), merci
beaucoup !
une derniere question :
je vois dans ce fichier le composant MDAC_TYP.EXE, qui, si je ne me trompe
pas, correspond a l'acces aux bases de donnees (je travaille avec une base
access 2000). le probleme, c'est que je ne vais pas executer cette
application a chaque lancement, d'autant plus qu'elle genere un message
d'erreur quand les fichiers MDAC sont deja installes !
y a t'il un moyen de palier a ce probleme ?

PS : dans les options du navigateur, on ne peut pas changer grand chose au
codage des caracteres, le seul jeu de caracteres convenable et accessible est
: "base sur le latin"

"Kiriasse" a écrit :

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 !




Avatar
Jean-Marc
"scraper" a écrit dans le message de
news:
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)




Hop, voila qui est fait :-)

--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ;
Avatar
Jean-Marc
"scraper" a écrit dans le message de
news:
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 ne peux qu'approuver ceci, sans aucune attaque personelle. Il me semble
naturel et plein de bon sens d'appliquer l'adage "Si tu vas à Rome, fais
comme
les Romains" ...

> 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à ...



Moi non plus. Simplement, il est vrai que lorsque l'on est en train
d'essayer de trouver une solution à un problème technique, on est moins
enclin à veiller au respect de l'étiquette et de la netiquette. De plus,
les contributeurs de ce forum sont (en moyenne) sans doute plus attachés
à la résolution de leurs problèmes que le contributeur "de base" de
fr.soc.complots/religion/philo/aquariophilie ...

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 -


là,
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"



Tout à fait. Je suppose que vous connaissez le petit exemple suivant:

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?









Bon, retour à la programmation? J'ai une question sur Winsock
qui ne semble pas trouver réponse :-))

--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ;
Avatar
Michel
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
Avatar
Michel
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+
Avatar
Peltchag
"Michel" a écrit :

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+




c'est peut etre parce que je passe par le client web, mais je ne vois pas le
module.
si possible, merci de Copier/Coller le code, car je n'ai pas acces au client
de news depuis mon lieu de travail :(

merci bcp en tout cas !
Avatar
Michel
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
Avatar
Peltchag
"Michel" a écrit :

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




pile poil ce qu'il me faut ca !
merci beaucoup :)
1 2