Api getshortpathname ne marche pas, grr [Résolu]

Messages postés
82
Date d'inscription
dimanche 25 juillet 2004
Dernière intervention
6 avril 2006
- 13 août 2005 à 16:50 - Dernière réponse :
Messages postés
3181
Date d'inscription
dimanche 15 février 2004
Dernière intervention
9 avril 2017
- 14 août 2005 à 01:26
bonjour,
je suis en VB.net, j'ai un probleme avec l'API GetShortPathName


Private Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal lBuffer As Long) As Long

Public Function GetShortPath(ByVal strFileName As String) As String
Dim lngRes As Long, strPath As String
strPath = String$(165, 0)
lngRes = GetShortPathName(strFileName, strPath, 164)
GetShortPath = Left$(strPath, lngRes)
End Function

c'est cette methode que je trouve partout,
mais il ne veut pas de String$(165, 0) ni de Left$(strPath, lngRes)

jai essayé en remplacant String$(165, 0) par space$(165) et Left$(strPath, lngRes) par mid(strpath,1,ingres)
mais la fonction me renvoie une erreur

help please
merci

poum :-)
Afficher la suite 

12 réponses

Meilleure réponse
Messages postés
3181
Date d'inscription
dimanche 15 février 2004
Dernière intervention
9 avril 2017
- 13 août 2005 à 23:14
3
Merci
Bonjour,



Je nee comprends pas, ma méthode marche chez moi.

Mais il y à en effet des " " après le chemin du fichier.

Ceci serait t-il mieux ?



Private Declare Function GetShortPathName Lib "kernel32.dll" Alias
"GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath
As String, ByVal cchBuffer As Int32) As Int32



Public Function GetShortPath(ByVal StrFileName As String) As String

Dim strPath As String = Microsoft.VisualBasic.Strings.Space(165)

Dim FileLen As Integer = GetShortPathName(StrFileName, strPath, 164)

strPath = Microsoft.VisualBasic.Left(strPath, FileLen)

Return strPath

End Function



Pour appeller la fonction:

MsgBox("[" & GetShortPath(Application.ExecutablePath) & "]")




ChRB
<hr size="2" width="100%">
Merci de cliquer sur "Réponse acceptée" si une réponse vous convient.

Merci Charles Racaud 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 87 internautes ce mois-ci

Messages postés
3758
Date d'inscription
mardi 23 septembre 2003
Dernière intervention
13 mars 2006
- 13 août 2005 à 17:25
0
Merci
Salut, je n'ai pas vb.net sous la main mais il me semble que :

strPath = String$(165, 0)
doit être remplacé par
strPath = NewString
("0", 165)

pour le left$, tu as vu juste ça n'existe plus et il faut bien le remplacer par
mid(strpath,1,ingres)

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
Messages postés
3758
Date d'inscription
mardi 23 septembre 2003
Dernière intervention
13 mars 2006
- 13 août 2005 à 17:29
0
Merci
Oups, je crois qu'un espace a sauté entre new et string.

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
Messages postés
3181
Date d'inscription
dimanche 15 février 2004
Dernière intervention
9 avril 2017
- 13 août 2005 à 17:40
0
Merci
Bonjour,



Avec ça, ca marche



Private Declare Function GetShortPathName Lib "kernel32" Alias
"GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath
As String, ByVal lBuffer As Long) As Long

Public Function GetShortPath(ByVal StrFileName As String) As String

Dim strPath As String = Microsoft.VisualBasic.Strings.Space(165)

Call GetShortPathName(strFileName, strPath, 164)

Return strPath

End Function


ChRB
<hr size="2" width="100%">
Merci de cliquer sur "Réponse acceptée" si une réponse vous convient.
Messages postés
586
Date d'inscription
jeudi 18 septembre 2003
Dernière intervention
13 février 2008
- 13 août 2005 à 21:09
0
Merci
la nouvelle syntaxe de dexlaration de cet api est:
Private Declare Function GetShortPathName Lib "kernel32.dll" Alias "GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal cchBuffer As Int32) As Int32


<HR>

Life is short...Learn more
Copy Rights <> Rights to Copy
Messages postés
82
Date d'inscription
dimanche 25 juillet 2004
Dernière intervention
6 avril 2006
- 13 août 2005 à 22:59
0
Merci
merci pour votre aide, mais rien n'y fait ...

canislupus : ta methode ne change rien, jai un message d'erreur : loperation arithmetique a provoqué un depassement de capacité patati patata

charles:ta fonction retourne strpath, donc " "
jai essayé avec return GetShortPathName(strFileName, strPath, 164)
mais bon, ça me renvoi "0"

masterhack: long ou int32, ça na aucun effet non plus

je comprend pas, pourtant a partir de vba, ça fonctionne
pourquoi il faut que strpath=" ..." ? a quoi ça sert?

poum :-)
Messages postés
82
Date d'inscription
dimanche 25 juillet 2004
Dernière intervention
6 avril 2006
- 13 août 2005 à 23:03
0
Merci
si ça peut vous eclairer,

GetShortPathName(strFileName, strPath, 164) me renvoi 2814749767106560

poum :-)
Messages postés
586
Date d'inscription
jeudi 18 septembre 2003
Dernière intervention
13 février 2008
- 14 août 2005 à 01:00
0
Merci
je conforme la methode de superchinois, elle marche tres bien


<HR>

Life is short...Learn more
Copy Rights <> Rights to Copy
Messages postés
586
Date d'inscription
jeudi 18 septembre 2003
Dernière intervention
13 février 2008
- 14 août 2005 à 01:03
0
Merci
ops dsl le clipboard etais plein,
je disais que je confirmais la methode de Charles Racaud,ça marche tres bien


<HR>

Life is short...Learn more
Copy Rights <> Rights to Copy
Messages postés
3181
Date d'inscription
dimanche 15 février 2004
Dernière intervention
9 avril 2017
- 14 août 2005 à 01:15
0
Merci
"superchinois" Heureusement que j'ai lu ton
commentaire suivant. Ca m'a bien fait rigoler. J'ai crus que tu m'appelais
comme ça car mon code était du chinois pour toi. Mais bon, bien sûr c'est pour
rire. Je connais un peu les langues asiatiques mais bon ça n’a aucun rapport !
lol


Merci quand même d'avoirs de confirmé mon code



ChRB
<hr size="2" width="100%">
Merci de cliquer sur "Réponse acceptée" si une réponse vous convient.
Messages postés
82
Date d'inscription
dimanche 25 juillet 2004
Dernière intervention
6 avril 2006
- 14 août 2005 à 01:21
0
Merci
merci bcp !

excusez moi, forcement je lui avais donné un mauvais chemin, donc elle me retournait ""
c super, merci de votre patience

euh, si cest pas trop abusé, jaurais une autre petite question :
yaurait pas un controle "feuille word" que je pourrais utiliser dans vb.net,
un peu comme cette textbox, avec les icones et tout pour mettre en page

bonne prog

poum :-)
Messages postés
3181
Date d'inscription
dimanche 15 février 2004
Dernière intervention
9 avril 2017
- 14 août 2005 à 01:26
0
Merci
Bonjour,



Utilise le RichTextBox

Tu trouvera des sources pour son utilisation.



ChRB
<hr size="2" width="100%">
Merci de cliquer sur "Réponse acceptée" si une réponse vous convient.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.