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

tump 82 Messages postés dimanche 25 juillet 2004Date d'inscription 6 avril 2006 Dernière intervention - 13 août 2005 à 16:50 - Dernière réponse : Charles Racaud 3181 Messages postés dimanche 15 février 2004Date d'inscription 9 avril 2017 Dernière intervention
- 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

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

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
Charles Racaud 3181 Messages postés dimanche 15 février 2004Date d'inscription 9 avril 2017 Dernière intervention - 13 août 2005 à 17:40
0
Utile
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.
cs_MasterHack 586 Messages postés jeudi 18 septembre 2003Date d'inscription 13 février 2008 Dernière intervention - 13 août 2005 à 21:09
0
Utile
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
tump 82 Messages postés dimanche 25 juillet 2004Date d'inscription 6 avril 2006 Dernière intervention - 13 août 2005 à 22:59
0
Utile
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 :-)
tump 82 Messages postés dimanche 25 juillet 2004Date d'inscription 6 avril 2006 Dernière intervention - 13 août 2005 à 23:03
0
Utile
si ça peut vous eclairer,

GetShortPathName(strFileName, strPath, 164) me renvoi 2814749767106560

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


<HR>

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