Api getshortpathname ne marche pas, grr

Résolu
tump
Messages postés
82
Date d'inscription
dimanche 25 juillet 2004
Statut
Membre
Dernière intervention
6 avril 2006
- 13 août 2005 à 16:50
Charles Racaud
Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
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 :-)

12 réponses

Charles Racaud
Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
35
13 août 2005 à 23:14
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.
3
cs_CanisLupus
Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Membre
Dernière intervention
13 mars 2006
18
13 août 2005 à 17:25
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 !?
0
cs_CanisLupus
Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Membre
Dernière intervention
13 mars 2006
18
13 août 2005 à 17:29
Oups, je crois qu'un espace a sauté entre new et string.

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
0
Charles Racaud
Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
35
13 août 2005 à 17:40
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_MasterHack
Messages postés
586
Date d'inscription
jeudi 18 septembre 2003
Statut
Membre
Dernière intervention
13 février 2008
2
13 août 2005 à 21:09
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
0
tump
Messages postés
82
Date d'inscription
dimanche 25 juillet 2004
Statut
Membre
Dernière intervention
6 avril 2006
1
13 août 2005 à 22:59
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 :-)
0
tump
Messages postés
82
Date d'inscription
dimanche 25 juillet 2004
Statut
Membre
Dernière intervention
6 avril 2006
1
13 août 2005 à 23:03
si ça peut vous eclairer,

GetShortPathName(strFileName, strPath, 164) me renvoi 2814749767106560

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


<HR>

Life is short...Learn more
Copy Rights <> Rights to Copy
0
cs_MasterHack
Messages postés
586
Date d'inscription
jeudi 18 septembre 2003
Statut
Membre
Dernière intervention
13 février 2008
2
14 août 2005 à 01:03
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
0
Charles Racaud
Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
35
14 août 2005 à 01:15
"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.
0
tump
Messages postés
82
Date d'inscription
dimanche 25 juillet 2004
Statut
Membre
Dernière intervention
6 avril 2006
1
14 août 2005 à 01:21
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 :-)
0
Charles Racaud
Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
35
14 août 2005 à 01:26
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.
0