Favoris réseau et cible

cs_toutptit Messages postés 2 Date d'inscription mardi 9 décembre 2003 Statut Membre Dernière intervention 3 septembre 2004 - 30 août 2004 à 15:54
cs_toutptit Messages postés 2 Date d'inscription mardi 9 décembre 2003 Statut Membre Dernière intervention 3 septembre 2004 - 3 sept. 2004 à 21:49
Bonjour,
Avec l'instruction Shelltreeview.path, quand je pointe sur un favori réseau je récupère un chemin du type :
c:\Documents and Settings\(nomutilisateur)\Voisinage réseau\(nom du favori)

Hors, j'ai besoin de la cible : \\(ip ou nom de l'ordinateur)\(Nom du favori)
L'instruction ExpandUNCFileName(Shelltreeview1.path);
ne semble pas fournir la bonne réponse.

Merci de votre aide.

2 réponses

Loulibier Messages postés 309 Date d'inscription jeudi 6 juin 2002 Statut Membre Dernière intervention 24 septembre 2008 2
31 août 2004 à 01:19
Salut toutptit,

Il est tout à fait normal que tu récupères ce Path lorsque tu clique sur des favoris réseau car c'est des raccourcis.

Pour palier à ce problème, il faut que tu saches si le fichier ou répertoire sur lequel sur clique est un raccourci ou non.
Pour cela j'ai trouver sur le site de Michel Bardou une petite function qui fera ton bonheur.

voici le liens de l'exemple utilisé : Site Michel Bardou

Voici le Code à utiliser :
function TrouverNomFichierPointe(FicSource:string):string;
var
  ShellLink   : IShellLink;
  RaccourciWC : array[0..MAX_PATH] of Char;
  pfd         : TWin32FindData;
begin
  ShellLink:=CreateComObject(CLSID_ShellLink) as IShellLink;
  (ShellLink as IPersistFile).Load(StringToOleStr(FicSource),STGM_READ);
  ShellLink.GetPath(RaccourciWC,Max_Path,pfd,SLGP_UNCPRIORITY);
  Result:=String(RaccourciWC);
end;

procedure TForm1.ShellTreeViewClick(Sender: TObject);
var
  sPath : string;
begin
  sPath := TrouverNomFichierPointe(ShellTreeView.Path);

  // Si c'est un raccourcis affiche le chemin contenu dans le raccourci.
  if sPath = '' then
    ShowMessage(ShellTreeView.Path)
  else
    ShowMessage(sPath);
end;


Afin que la function TrouverNomFichierPointe soit opérationnelle, il faut que tu déclares dans les uses les classes suivantes : ShlObj, ComObj, ActiveX.

Bonne Prog,

Olivier.
0
cs_toutptit Messages postés 2 Date d'inscription mardi 9 décembre 2003 Statut Membre Dernière intervention 3 septembre 2004
3 sept. 2004 à 21:49
merci de ta reponse
0
Rejoignez-nous