Déclaration de SHSetFolderPath [Résolu]

Signaler
Messages postés
2375
Date d'inscription
jeudi 12 juillet 2001
Statut
Modérateur
Dernière intervention
15 décembre 2018
-
Messages postés
2375
Date d'inscription
jeudi 12 juillet 2001
Statut
Modérateur
Dernière intervention
15 décembre 2018
-
Bonjour amis CSharpiens,

D'après la msdn en vb.net je déclare SHSetFolderPath de cette manière:

Private
Declare
Unicode
Function SHSetFolderPathW
Lib
"shell32"
Alias
"#232" (
ByVal csidl
As
Integer,
ByVal hToken
As
Integer,
ByVal dwFlags
As
Integer,
ByVal pszPath
As IntPtr)
As
Integer

En C# je ne vois pas comment la déclarer.
Quelqu'un à t-il une idée ?

Merci

6 réponses

Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
38
Ouaip j'ai vu ça qu'après..

[ DllImport( "Shell32.dll", CharSet = CharSet.Unicode, EntryPoint = "#232" ) ]
private static extern int SHSetFolderPath( int csidl, IntPtr hToken, uint flags, string path );
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
38
Salut,

Pour le dernier paramètre ça depend si la chaine est en entrée ou en entree/sortie..

[ DllImport( "Shell32.dll", CharSet = CharSet.Unicode ) ]
private static extern int SHSetFolderPath( int csidl, IntPtr hToken, uint flags, string path );
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
38
lol je viens de lire ça dans la MSDN.. bon attends alors..

Remarks



SHSetFolderPath is not exported by name from Shell32.dll. To use the function, you must call GetProcAddress with ordinal 231 for SHSetFolderPathA (for ANSI strings) or ordinal 232 for SHSetFolderPathW (for Unicode strings) to obtain a function pointer.



It is recommended that the paths be expressed as Unicode strings because folder names may contain Unicode characters not expressible in ANSI.
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
38
Ca devrait passer :

[ DllImport( "Shell32.dll", EntryPoint = "#232" ) ]
private static extern int SHSetFolderPathW( int csidl, IntPtr hToken, uint flags, string path );
Messages postés
2375
Date d'inscription
jeudi 12 juillet 2001
Statut
Modérateur
Dernière intervention
15 décembre 2018
22
Sa aurait été simple si la déclaration pour SHSetFolderPath se faisait de cette manière en c#.
Mais il est bien dit dans la msdn que SHSetFolderPath dans Shell32 n'a pas de point d'entrée par ce nom.
C'est pourquoi j'ai utiliser l'ordinal 232 dans ma déclaration vb.
Messages postés
2375
Date d'inscription
jeudi 12 juillet 2001
Statut
Modérateur
Dernière intervention
15 décembre 2018
22
Lol sa passe ta 2ième solution.
J'y comprend plus rien je l'avais déclarée de cette manière et sa ne passais pas....
Ah les mystères....