OVH Cloud OVH Cloud

Plantage lors de l'install, DLL en cause

3 réponses
Avatar
Alain MENARD
Salut à tous,

Il y a quelques temps, je vous avais demandé comment enlever les guillemets
de l'objet COMMAND.

Pierre m'avait répondu ceci :

Private Declare Sub PathUnquoteSpaces Lib "shlwapi.dll" Alias _
"PathUnquoteSpacesA" (ByVal lpsz As String)

Private Const MAX_PATH = 260

Public Function PathRemoveQuotes(ByRef Path As String)

Dim sBuffer As String

sBuffer = Path & String$(MAX_PATH - Len(Path), vbNullChar)

Call PathUnquoteSpaces(sBuffer)

PathRemoveQuotes = left$(sBuffer, InStr(sBuffer, vbNullChar) - 1)

End Function


Il se trouve que c'est la DLL SHLWAPI.DLL qui fait planter Win98 SE. L'un de
mes clients a fait de multiples tests et c'est ce fichier qui est en cause.

Mon client après l'installation copie dans répertoire system SON fichier
SHLWAPI.DLL et ça marche !

Dans mon install je l'installe de cette façon.

Source: "C:\WINDOWS\SYSTEM\SHLWAPI.DLL"; DestDir: "{sys}"; Flags:
restartreplace sharedfile

Alors ma question est la suivante :

Ya t'il une solution sans cette DLL pour enlever les guillemets ?

Ou alors comment savoir si mon fichier SHLWAPI.DLL aurait une mauvaise
version ?


--

Amicalement

Alain MENARD

Pour me joindre : amenard@vision-tech.fr

3 réponses

Avatar
ng
Salut,

Essai cette sub que j'avais ecrit pour une autre question :

Public Function Split34(ByVal sCh As String) As String()
Dim i As Integer, GuillemetOuvert As Boolean
Dim sCar As String * 1, sArgEnCours As String
Dim nInd As Integer, tblArg() As String
sCh = sCh & " "
For i = 1 To Len(sCh)
sCar = Mid$(sCh, i, 1)
If sCar = """" Then
GuillemetOuvert = Not GuillemetOuvert
Else
If sCar = " " And Not GuillemetOuvert Then
If EstTableauVide(tblArg) Then
nInd = 0
ReDim tblArg(0)
Else
nInd = UBound(tblArg) + 1
ReDim Preserve tblArg(nInd)
End If
tblArg(nInd) = sArgEnCours
sArgEnCours = ""
Else
sArgEnCours = sArgEnCours & sCar
End If
End If
Next
Split34 = tblArg
End Function
Public Function EstTableauVide(tblTest() As String) As Boolean
On Error GoTo errFin
Dim sTest As Integer
sTest = UBound(tblTest)
EstTableauVide = False
Exit Function
errFin::
EstTableauVide = True
End Function

elle permet de récupérer les différents arguments en tenant compte des
guillemets


ou sinon :

dim Cmd as string
Cmd = Replace(Trim$(Command$), Chr$(34), "", , , vbTextCompare)

Je pense qu'il n'est absolument pas utile d'utiliser une DLL pour cela...

Nicolas.

"Alain MENARD" a écrit dans le message de news:
3f1475a9$0$25195$
Salut à tous,

Il y a quelques temps, je vous avais demandé comment enlever les


guillemets
de l'objet COMMAND.

Pierre m'avait répondu ceci :

Private Declare Sub PathUnquoteSpaces Lib "shlwapi.dll" Alias _
"PathUnquoteSpacesA" (ByVal lpsz As String)

Private Const MAX_PATH = 260

Public Function PathRemoveQuotes(ByRef Path As String)

Dim sBuffer As String

sBuffer = Path & String$(MAX_PATH - Len(Path), vbNullChar)

Call PathUnquoteSpaces(sBuffer)

PathRemoveQuotes = left$(sBuffer, InStr(sBuffer, vbNullChar) - 1)

End Function


Il se trouve que c'est la DLL SHLWAPI.DLL qui fait planter Win98 SE. L'un


de
mes clients a fait de multiples tests et c'est ce fichier qui est en


cause.

Mon client après l'installation copie dans répertoire system SON fichier
SHLWAPI.DLL et ça marche !

Dans mon install je l'installe de cette façon.

Source: "C:WINDOWSSYSTEMSHLWAPI.DLL"; DestDir: "{sys}"; Flags:
restartreplace sharedfile

Alors ma question est la suivante :

Ya t'il une solution sans cette DLL pour enlever les guillemets ?

Ou alors comment savoir si mon fichier SHLWAPI.DLL aurait une mauvaise
version ?


--

Amicalement

Alain MENARD

Pour me joindre :




Avatar
François Picalausa
Bonjour/soir,

Le fichier shlwapi.dll est un fichier système qu'il ne faut pas remplacer...

En version 4.70.0.115, il se trouvait dans Windows 95

La version minimale requise est cependant la 4.71, présente sous
NT: Windows 2000, Windows NT 4.0 with Internet Explorer 4.0 et plus
9x: Windows 98, Windows 95 with Internet Explorer 4.0 et plus

Donc, il faudraitafficher une message box disant à l'utilisateur que le
programme ne tournera pas si la version (APIs GetFileVersionInfo etVer
QueryValue) est inférieure à la 4.70 (possible sous win 95 et NT4) et de
demander l'installation d'IE 4 ou plus.

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com


Alain MENARD wrote:
Salut à tous,

Il y a quelques temps, je vous avais demandé comment enlever les
guillemets de l'objet COMMAND.

Pierre m'avait répondu ceci :

Private Declare Sub PathUnquoteSpaces Lib "shlwapi.dll" Alias _
"PathUnquoteSpacesA" (ByVal lpsz As String)

Private Const MAX_PATH = 260

Public Function PathRemoveQuotes(ByRef Path As String)

Dim sBuffer As String

sBuffer = Path & String$(MAX_PATH - Len(Path), vbNullChar)

Call PathUnquoteSpaces(sBuffer)

PathRemoveQuotes = left$(sBuffer, InStr(sBuffer, vbNullChar) - 1)

End Function


Il se trouve que c'est la DLL SHLWAPI.DLL qui fait planter Win98 SE.
L'un de mes clients a fait de multiples tests et c'est ce fichier qui
est en cause.

Mon client après l'installation copie dans répertoire system SON
fichier SHLWAPI.DLL et ça marche !

Dans mon install je l'installe de cette façon.

Source: "C:WINDOWSSYSTEMSHLWAPI.DLL"; DestDir: "{sys}"; Flags:
restartreplace sharedfile

Alors ma question est la suivante :

Ya t'il une solution sans cette DLL pour enlever les guillemets ?

Ou alors comment savoir si mon fichier SHLWAPI.DLL aurait une mauvaise
version ?


Avatar
Alain MENARD
Salut ng et François,

Une panne Internet m'a empêché de lire les news aujourd'hui.

Merci pour vos réponses à tous deux. Content que le problème soit résolu.


--

Amicalement

Alain MENARD

Pour me joindre :

"François Picalausa" a écrit dans le message de
news:
Bonjour/soir,

Le fichier shlwapi.dll est un fichier système qu'il ne faut pas


remplacer...

En version 4.70.0.115, il se trouvait dans Windows 95

La version minimale requise est cependant la 4.71, présente sous
NT: Windows 2000, Windows NT 4.0 with Internet Explorer 4.0 et plus
9x: Windows 98, Windows 95 with Internet Explorer 4.0 et plus

Donc, il faudraitafficher une message box disant à l'utilisateur que le
programme ne tournera pas si la version (APIs GetFileVersionInfo etVer
QueryValue) est inférieure à la 4.70 (possible sous win 95 et NT4) et de
demander l'installation d'IE 4 ou plus.

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com


Alain MENARD wrote:
> Salut à tous,
>
> Il y a quelques temps, je vous avais demandé comment enlever les
> guillemets de l'objet COMMAND.
>
> Pierre m'avait répondu ceci :
>
> Private Declare Sub PathUnquoteSpaces Lib "shlwapi.dll" Alias _
> "PathUnquoteSpacesA" (ByVal lpsz As String)
>
> Private Const MAX_PATH = 260
>
> Public Function PathRemoveQuotes(ByRef Path As String)
>
> Dim sBuffer As String
>
> sBuffer = Path & String$(MAX_PATH - Len(Path), vbNullChar)
>
> Call PathUnquoteSpaces(sBuffer)
>
> PathRemoveQuotes = left$(sBuffer, InStr(sBuffer, vbNullChar) - 1)
>
> End Function
>
>
> Il se trouve que c'est la DLL SHLWAPI.DLL qui fait planter Win98 SE.
> L'un de mes clients a fait de multiples tests et c'est ce fichier qui
> est en cause.
>
> Mon client après l'installation copie dans répertoire system SON
> fichier SHLWAPI.DLL et ça marche !
>
> Dans mon install je l'installe de cette façon.
>
> Source: "C:WINDOWSSYSTEMSHLWAPI.DLL"; DestDir: "{sys}"; Flags:
> restartreplace sharedfile
>
> Alors ma question est la suivante :
>
> Ya t'il une solution sans cette DLL pour enlever les guillemets ?
>
> Ou alors comment savoir si mon fichier SHLWAPI.DLL aurait une mauvaise
> version ?