Page 1 sur 1

[R] Lister cibles raccourcis du bureau

Posté : ven. 04 oct. 2013 19:54
par cbourree
Bonjour,
je croie avoir tout tester pour régler ce problème http://autoitscript.fr/forum/viewtopic.php?f=3&t=11770 mais je ne sais vraiment pas comment faire alors j'ai décider de contourner le problème !!! Puisqu’il est impossible de lancer mon programme au démarrage je vais forcer l'utilisateur à lancer mon programme !!! Fin bref si j'ouvre un autre poste c'est bien que mon autre problème à je croie jamais été abordé sur le forum ... Je voudrais donc faire un petit programme qui commence par récupérer la listes des raccourcis présent sur le bureau ainsi que le raccourcis vers lequel il pointe (sans utiliser déplacer la souris) ... Et j'avoue que je sèche aussi totalement ...

Merci encore d'avance ;)

Re: [R]Lister cibles raccourcis du bureau

Posté : ven. 04 oct. 2013 21:25
par cbourree
J'ai trouver la solution :)

Code : Tout sélectionner

#include<Array.au3>
#include"_FileListToArrayEx.au3"
Global $MAX_PROPERTIES = 500 ; Maximum par test = 40

$ar_Array = _FileListToArrayEx ("C:\Users\François\Desktop\", "*.lnk", 1, 2)
Dim $fichier[UBound($ar_Array)][2]
$l = 0
For $i = 1 To UBound($ar_Array) - 1
    $cible = getFichierPropriete($ar_Array[$i], "Cible du lien")
    If $cible <> "" And StringInStr($cible, ".exe") Then
        $fichier[$l][0] = $ar_Array[$i]
        $fichier[$l][1] = $cible
        $l+=1
    EndIf
Next
_ArrayDisplay($fichier, "Liste fichier")



Func getFichierPropriete($chemin, $propriete)
    If Not FileExists($chemin) Then
        SetError(1)
    ElseIf IsInt($propriete) And Int($propriete) <= $MAX_PROPERTIES Then
        SetError(2)
    Else
        Local $shell = ObjCreate("shell.application"), $lastSlash = StringInStr($chemin, "\", 0, -1)
        Local $repertoire = $shell.NameSpace(StringLeft($chemin, $lastSlash))
        Local $fichier = $repertoire.Parsename(StringTrimLeft($chemin, $lastSlash))
        If IsInt($propriete) Then
            SetExtended($propriete)
            Return $repertoire.GetDetailsOf($fichier, $propriete)
        Else
            For $i = 0 to $MAX_PROPERTIES
                If $propriete <> "" And $repertoire.GetDetailsOf($repertoire.Items, $i) = $propriete Then
                    SetExtended($i)
                    Return $repertoire.GetDetailsOf($fichier, $i)
                EndIf
            Next
            SetError(3)
        EndIf
    EndIf
    Return ""
EndFunc
 
Ce script me retourne un tableau $fichier avec en [$i][0] le nom et en [$i][1] la cible :)

Re: [R]Lister cibles raccourcis du bureau

Posté : sam. 05 oct. 2013 11:44
par Tlem
cbourree a écrit :J'ai trouver la solution
En 1H30, c'est cool, mais vous auriez du faire votre recherche avant de poser la question !!!

Re: [R] Lister cibles raccourcis du bureau

Posté : sam. 05 oct. 2013 18:17
par cbourree
"En 1h30" Après que j'ai poster !! J'avais déjà trouvé cette fonction mais elle m'affichait les 64 premières propriétés et donc oui il m'a fallut 1 heure 30 pour me rendre compte qu'on pouvais modifier le nombre de propriétés à afficher ... Alors que bon suffit que quelqu'un passe là au bon moment et c'est fait en 5 mins ... Et aussi pour les futures personnes qui auront le même problème que moi ...

Re: [..] Lister cibles raccourcis du bureau

Posté : jeu. 17 oct. 2013 19:13
par cbourree
Voilà même si j'ai trouvé une solution pour contourner le problème, j'aimerai savoir pourquoi ma super fonction getFichierPropriete ne me retourne pas l'extension du fichier cible quand je n'ai pas les droits admins ?

Re: [R/..] Lister cibles raccourcis du bureau

Posté : jeu. 17 oct. 2013 21:50
par jguinch
Le code que tu as posté n'est pas fonctionnel, comment veux-tu qu'on t'aide ?

Re: [..] Lister cibles raccourcis du bureau

Posté : dim. 20 oct. 2013 01:28
par lesolutionneur
C'est simple, c'est parce que les 3/4 des raccourcis sont dans le dossier bureau partagé entre les différents utilisateurs et qui par conséquent ne sont pas modifiables par un utilisateur normal !

Edit : ah non c'est pour la lecture, mais c'est normal qu'ils ne soient pas affichés étant donnée qu'ils ne sont pas présents dans ton bureau mais dans le bureau partagé (de mémoire C:\Documents and Settings\All Users\Desktop sous XP et C:\Users\Public\Desktop sous Seven et Eight)

Edit 2 : désolé j'ai mal lu ta question je crois

Re: [..] Lister cibles raccourcis du bureau

Posté : mar. 22 oct. 2013 10:31
par cbourree
@lesolutionieur Le problème n'est pas la récupération des raccourcis ;) Mais uniquement de leur cible. Voici donc mon script (fonctionne uniquement chez moi)
► Afficher le texte
Et maintenant au lycée quand avec cette fonction je met comme $MAX_PROPERTIES 64 ou 200 il ne m'affiche que les 40 premières

Code : Tout sélectionner

Func getFichierListeProprietes($chemin)
    Local $resultat[1][3] = [[0,"",""]]
    $resultat[0][0] = 0
    If FileExists($chemin) Then
        Local $shell = ObjCreate("shell.application"), $lastSlash = StringInStr($chemin, "\", 0, -1)
        Local $repertoire = $shell.NameSpace(StringLeft($chemin, $lastSlash))
        Local $fichier = $repertoire.Parsename(StringTrimLeft($chemin, $lastSlash))
        For $i = 0 to $MAX_PROPERTIES
            If $repertoire.GetDetailsOf($repertoire.Items, $i) <> "" Then
                ReDim $resultat[UBound($resultat)+1][3]
                $resultat[0][0] = UBound($resultat)-1
                $resultat[$resultat[0][0]][0] = $repertoire.GetDetailsOf($repertoire.Items, $i)
                $resultat[$resultat[0][0]][1] = $i
                $resultat[$resultat[0][0]][2] = $repertoire.GetDetailsOf($fichier, $i)
            EndIf
        Next
    EndIf
    Return $resultat
EndFunc

Merci d'avance

Re: [..] Lister cibles raccourcis du bureau

Posté : mar. 22 oct. 2013 16:24
par jguinch
Tu es parti d'un script VBScript ? Ca y ressemble ....

Je ne sais pas ce qui ne va pas dans ton script, mais je peux te proposer un code (peut-être) plus simple :
► Afficher le texte_ListShorCuts

Re: [..] Lister cibles raccourcis du bureau

Posté : mar. 22 oct. 2013 18:43
par cbourree
Merci beaucoup ... <3 Il faut vrmt que j'apprenne à faire une recherche

Re: [..] Lister cibles raccourcis du bureau

Posté : mer. 23 oct. 2013 22:30
par jguinch
-> Un petit [R] si c'est résolu :wink:
Effectivement, il faut faire des recherches (bien que tu n'aurais pas trouvé cette fonction puisque je viens de la poster), mais il faut aussi et surtout lire la doc, voir un peu toutes les fonctions, à quoi elles servent et tester les exemples.
Ici, tu avais juste besoin de savoir qu'il y avait une fonction toute faite (FileGetShortcut) qui permet d'obtenir les propriétés d'un raccourci.
A+

Re: [..] Lister cibles raccourcis du bureau

Posté : lun. 04 nov. 2013 17:50
par cbourree
Un petit [r] quand ça fonctionnera ...
Encore une fois cette fonction fonctionne parfaitement chez moi mais pas au lycée en effet votre fonction me retourne 0 ... alors que _FileListToArrayEx(@DesktopCommonDir & "\", "*.lnk", 1, 2) (dans le code fourni précédemment) qui utilise aussi FileFindFirstFile fonctionne. Je suis certain de ne pas avoir fait d'erreur dans le chemin ... Bon en adaptant votre fonction avec _filelisttoarrayex ça devrait fonctionner ... Du moins je l’espère ...
Merci encore

Re: [..] Lister cibles raccourcis du bureau

Posté : lun. 04 nov. 2013 19:18
par jguinch
Tu n'aurais pas fais _ListShorCuts(@DesktopCommonDir & "\", "*.lnk") au lieu de _ListShorCuts(@DesktopCommonDir) au lycée ?
Une petite confusion peut-être...?
J'utilise ça sur 3000 postes, ça marche bien.

Re: [..] Lister cibles raccourcis du bureau

Posté : lun. 04 nov. 2013 21:26
par mikell
Ben maintenant avec mon OS préhistorique ça fait 3001 :wink:

Re: [..] Lister cibles raccourcis du bureau

Posté : lun. 04 nov. 2013 21:29
par jguinch
merci mikell pour le retour.
Sur les 3000, j'en ai quand même la moitié en XP, faut pas croire :wink:

Re: [..] Lister cibles raccourcis du bureau

Posté : jeu. 14 nov. 2013 12:36
par cbourree
Presque, je m'était contenter d'un copier coller de votre code pour tester la fonction car j'avais un long TP devant moi ... Et donc utiliser @DesktopDir à la place de @DesktopCommonDir.
J'avais oublier que les deux existaient :'(
Merci encore ;)

edit : ça fonctionne :)