OVH Cloud OVH Cloud

Dossiers spéciaux sous win 98

8 réponses
Avatar
scraper
bonsoir à tous

petit souçi rencontré avec la fonction SHGetSpecialFolderLocation sous win
98 ...

il semble que certaines constantes de cette fonction ne soient pas
supportées ???!

comme par exemple CSIDL_PROGRAM_FILES ?

je précise que pour m'en assurer, j'ai démarré un nouveau projet dans VB
sous win98, dans lequel j'ai collé l'exemple de API-Guide, et quelques
constantes dont j'aurais eu besoin :

'----
Const CSIDL_PROGRAM_FILES = &H26
Const CSIDL_PROGRAM_FILES_COMMON = &H2B
Const CSIDL_SYSTEM = &H25
Const CSIDL_WINDOWS = &H24
Const MAX_PATH = 260

Private Type SHITEMID
cb As Long
abID As Byte
End Type
Private Type ITEMIDLIST
mkid As SHITEMID
End Type
Private Declare Function SHGetSpecialFolderLocation Lib "shell32.dll" (ByVal
hwndOwner As Long, ByVal nFolder As Long, pidl As ITEMIDLIST) As Long
Private Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias
"SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long

Public Function GetSpecialfolder(CSIDL As Long) As String
Dim r As Long
Dim IDL As ITEMIDLIST
'Get the special folder
r = SHGetSpecialFolderLocation(100, CSIDL, IDL)
If r = NOERROR Then
'Create a buffer
Path$ = Space$(MAX_PATH )
'Get the path from the IDList
r = SHGetPathFromIDList(ByVal IDL.mkid.cb, ByVal Path$)
'Remove the unnecessary chr$(0)'s
GetSpecialfolder = Left$(Path, InStr(Path, Chr$(0)) - 1)
Exit Function
End If
GetSpecialfolder = ""
End Function

Private Sub Form_Load()

MsgBox GetSpecialfolder(CSIDL_PROGRAM_FILES)

End Sub


est ce normal ??

si oui, comment puis je faire pour récupérer les infos dont j'ai besoin ...
(emplacement de Program Files, de Fichiers Communs, etc ...

merci de votre attention


:-)



--

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

scraper

8 réponses

Avatar
Fred
Dans son message %23FMIe%
scraper nous dit :

bonsoir à tous

petit souçi rencontré avec la fonction SHGetSpecialFolderLocation
sous win 98 ...

il semble que certaines constantes de cette fonction ne soient pas
supportées ???!

comme par exemple CSIDL_PROGRAM_FILES ?



Bonsoir scraper :-)

As-tu vu ceci ?
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/programmersguide/versions.asp

La constante qui te pose problème est donnée pour la version 5.0


--
Fred
http://www.cerbermail.com/?3kA6ftaCvT
Avatar
Fred
Dans son message
Fred nous dit :

Peut-être une solution avec cette fonction ?

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/functions/shgetfolderpath.asp
(http://minilien.fr/a0k08f)

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT
Avatar
Picalausa François
Hello

CSIDL_PROGRAM_FILES n'est supporté que depuis la version 5 du shell :
CSIDL_PROGRAM_FILES (0x0026)
Version 5.0. The Program Files folder. A typical path is C:Program Files.

Or, la version 5 de shell32 n'est pas distribuée, apparement, sous windows
98:
Version 5.80 of Comctl32.dll and version 5.0 of Shlwapi.dll are distributed
with Internet Explorer 5. They will be found on all systems on which
Internet Explorer 5 is installed, except Windows 2000. Internet Explorer 5
does not update the Shell, so version 5.0 of Shell32.dll will not be found
on Windows NT, Windows 95, or Windows 98 systems. Version 5.0 of Shell32.dll
will be distributed with Windows 2000 and Windows Me, along with version 5.0
of Shlwapi.dll, and version 5.81 of Comctl32.dll.

Dans l'installeur fournit avec VB (P&D wizard), valeur est lue directement à
partir du registre (HKLMSOFTWAREMicrosoftWindowsCurrentVersion)

--
Picalausa François
"scraper" a écrit dans le message de news:
%23FMIe%
bonsoir à tous

petit souçi rencontré avec la fonction SHGetSpecialFolderLocation sous win
98 ...

il semble que certaines constantes de cette fonction ne soient pas
supportées ???!

comme par exemple CSIDL_PROGRAM_FILES ?

je précise que pour m'en assurer, j'ai démarré un nouveau projet dans VB
sous win98, dans lequel j'ai collé l'exemple de API-Guide, et quelques
constantes dont j'aurais eu besoin :

'----
Const CSIDL_PROGRAM_FILES = &H26
Const CSIDL_PROGRAM_FILES_COMMON = &H2B
Const CSIDL_SYSTEM = &H25
Const CSIDL_WINDOWS = &H24
Const MAX_PATH = 260

Private Type SHITEMID
cb As Long
abID As Byte
End Type
Private Type ITEMIDLIST
mkid As SHITEMID
End Type
Private Declare Function SHGetSpecialFolderLocation Lib "shell32.dll"
(ByVal hwndOwner As Long, ByVal nFolder As Long, pidl As ITEMIDLIST) As
Long
Private Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias
"SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As
Long

Public Function GetSpecialfolder(CSIDL As Long) As String
Dim r As Long
Dim IDL As ITEMIDLIST
'Get the special folder
r = SHGetSpecialFolderLocation(100, CSIDL, IDL)
If r = NOERROR Then
'Create a buffer
Path$ = Space$(MAX_PATH )
'Get the path from the IDList
r = SHGetPathFromIDList(ByVal IDL.mkid.cb, ByVal Path$)
'Remove the unnecessary chr$(0)'s
GetSpecialfolder = Left$(Path, InStr(Path, Chr$(0)) - 1)
Exit Function
End If
GetSpecialfolder = ""
End Function

Private Sub Form_Load()

MsgBox GetSpecialfolder(CSIDL_PROGRAM_FILES)

End Sub


est ce normal ??

si oui, comment puis je faire pour récupérer les infos dont j'ai besoin
... (emplacement de Program Files, de Fichiers Communs, etc ...

merci de votre attention


:-)



--

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

scraper


Avatar
scraper
Bonjour Picalausa François, dans le message
news:%
tu disais :


Hello

CSIDL_PROGRAM_FILES n'est supporté que depuis la version 5 du shell :
CSIDL_PROGRAM_FILES (0x0026)
Version 5.0. The Program Files folder. A typical path is C:Program
Files.
Or, la version 5 de shell32 n'est pas distribuée, apparement, sous
windows 98:
Version 5.80 of Comctl32.dll and version 5.0 of Shlwapi.dll are
distributed with Internet Explorer 5. They will be found on all
systems on which Internet Explorer 5 is installed, except Windows
2000. Internet Explorer 5 does not update the Shell, so version 5.0
of Shell32.dll will not be found on Windows NT, Windows 95, or
Windows 98 systems. Version 5.0 of Shell32.dll will be distributed
with Windows 2000 and Windows Me, along with version 5.0 of
Shlwapi.dll, and version 5.81 of Comctl32.dll.
Dans l'installeur fournit avec VB (P&D wizard), valeur est lue
directement à partir du registre
(HKLMSOFTWAREMicrosoftWindowsCurrentVersion)



merci à vous deux !

ce que tu expliques ci dessus correspond sensiblement à l'URL que m'a
indiquée Fred

effectivement, en vérifiant, la version de shell32.dll est bien < 5 !

la question que je me pose donc :

dois je récupérer les infos dans le Registre ?
ou dois je essayer d'updater ce fichier shell32.dll (risqué, non ?)

merci de vos avis :-)




--

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

scraper
Avatar
scraper
Bonjour Fred, dans le message
news:OF7A%
tu disais :


Dans son message
Fred nous dit :

Peut-être une solution avec cette fonction ?

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/functions/shgetfolderpath.asp
(http://minilien.fr/a0k08f)



j'ai bien noté tout ça ...
effectivement, pour le fichier shell32.dll, il est < 5 ...
devrais je l'updater ?

sinon, je vais essayer de voir si je peux me débrouiller avec cette
fonction, et les lectures dans le Registre



merci :-)


--

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

scraper
Avatar
Fred
Dans son message uD%
scraper nous dit :

Bonjour Fred, dans le message
news:OF7A%
tu disais :


Dans son message
Fred nous dit :

Peut-être une solution avec cette fonction ?

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/functions/shgetfolderpath.asp
(http://minilien.fr/a0k08f)



j'ai bien noté tout ça ...
effectivement, pour le fichier shell32.dll, il est < 5 ...
devrais je l'updater ?

sinon, je vais essayer de voir si je peux me débrouiller avec cette
fonction, et les lectures dans le Registre



merci :-)



Fais un essai avec cette autre fonction. Je ne sais pas si j'interprète
bien ce qui est écrit, mais il semble que cela passe aussi sur des
systèmes plus anciens (avec SHFolder.dll dans ce cas). Et SHfolder.dll
est redistribuable.

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT
Avatar
scraper
Bonjour Fred, dans le message
news:%
tu disais :

sinon, je vais essayer de voir si je peux me débrouiller avec cette
fonction, et les lectures dans le Registre



merci :-)



Fais un essai avec cette autre fonction. Je ne sais pas si
j'interprète bien ce qui est écrit, mais il semble que cela passe
aussi sur des systèmes plus anciens (avec SHFolder.dll dans ce cas).
Et SHfolder.dll est redistribuable.



yep !

le problème (si j'ai bien survolé ? je vais voir plus en profondeur dans la
soirée) est que certains CSIDL sont supportés, mais pas tous

faut aussi que je contrôle si ceux dont j'ai besoin sont sur la liste

je vois ça et je reviens

merci en tout cas

à+ :-)



--

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

scraper
Avatar
scraper
Bonjour Fred, dans le message
news:%
tu disais :

Fais un essai avec cette autre fonction. Je ne sais pas si
j'interprète bien ce qui est écrit, mais il semble que cela passe
aussi sur des systèmes plus anciens (avec SHFolder.dll dans ce cas).
Et SHfolder.dll est redistribuable.



c'est fait, et ça fonctionne !
par chance (pour une fois !) toutes les constantes dont j'avais besoin sont
supportées par cette fonction
quant à la dll Shfolder, elle est présente nativement sur win98, et sa
version supporte cette fonction

donc, tout est bien ..

nickel, je te remercie :-)




--

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

scraper