[..] Barre de lancement rapide dans une icône de notification

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
franco
Niveau 7
Niveau 7
Messages : 342
Enregistré le : lun. 03 oct. 2011 22:37
Localisation : Liévin
Status : Hors ligne

[..] Barre de lancement rapide dans une icône de notification

#1

Message par franco »

Bonjoir 8)

Je vous explique d'abord le topo. :mrgreen:


1. Je n'aime pas avoir des raccourcis, ni sur le bureau, ni sur la barre des tâches.
2. Oui, il existe la barre de lancement rapide... Mais personnellement, je n'aime pas l'aspect.
3. J'ai pas une grosse résolution d'écran.

J'ai donc testé des logiciels qui peuvent me permettre de lister des raccourcis dans une icône de notification.
Exemple : Quick Pop Menu (que j'utilise, SyMenu, etc...

Et là, j'ai eu un flash :D :D
Et pourquoi ne pas lister le dossier lié à la barre de lancement rapide. Bah oui, c'est juste un dossier...

Donc, dans l'optique, j'ai souhaité donc lister les raccourcis lnk dans une icône de notification.


Comme ceci :
$dossier_lr = @AppDataDir & '\Microsoft\Internet Explorer\Quick Launch'

#include <TrayConstants.au3>
#include <GUIConstantsEx.au3>
#include <ButtonConstants.au3>
#include <WindowsConstants.au3>


Opt("TrayMenuMode", 3)


$search = FileFindFirstFile($dossier_lr & "\*.lnk")

While 1
    $file = FileFindNextFile($search)
    If @error Then ExitLoop
   $item = TrayCreateItem( $file)
WEnd


TrayCreateItem("")
Local $SystrayEXIT = TrayCreateItem("Quitter")



While 1
   Switch TrayGetMsg()
      Case $SystrayEXIT
         Exit

      Case $item
         $choix = TrayItemGetText ( $item )
         MsgBox(0,'',$choix)

   EndSwitch
WEnd
Je pensais juste afficher, dans un msgbox, l'intitulé de l'item choisi....

Mais que nenni, ça ne fonctionne pas comme ça....
Hélas, car sinon, je n'aurais pas besoin qu'on me guide. :mrgreen:


Petite question : existe-t-il un moyen d'afficher, quand je clique sur un item quelconque, son beau petit texte ?


Merci d'avance.
Bonne journée (ou soirée, c'est selon :P )
L'entraide, c'est mon dada ;)
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2086
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: [..] Barre de lancement rapide dans une icône de notification

#2

Message par TommyDDR »

Cela fonctionne très bien chez moi.
Par contre, ça ne peut fonctionner qu'avec le dernier item de la liste car vous réaffectez la valeur de $item à chaque fois.

Voici la version en passant par un tableau :
-> J'ai ajouté un peu de rigueur en ajoutant "Opt("MustDeclareVars", 1)" qui lancera une erreur si vous utilisez des variables qui n'ont pas été explicitement déclarée (Local, Global, Dim) auparavant.
$dossier_lr = @AppDataDir & '\Microsoft\Internet Explorer\Quick Launch'

Opt("TrayMenuMode", 3)
Opt("MustDeclareVars", 1)

Global $search = FileFindFirstFile($dossier_lr & "\*.lnk")
Global $item[0]

While 1
    Local $file = FileFindNextFile($search)
    If @error Then ExitLoop
   Local $index = UBound($item, 1)
   ReDim $item[$index+1]
   $item[$index] = TrayCreateItem( $file)
WEnd

TrayCreateItem("")
Local $SystrayEXIT = TrayCreateItem("Quitter")

While 1
   Local $msg = TrayGetMsg()
   If($msg == $SystrayEXIT) Then
      Exit
   Else
      For $i = 0 To UBound($item, 1) - 1
         If($msg == $item[$i]) Then
            Local $choix = TrayItemGetText($item[$i])
            MsgBox(0,'',$choix)
            ExitLoop
         EndIf
      Next
   EndIf
WEnd
J'en profite pour vous mettre la même version en mode évènementiel (activable avec : Opt("TrayOnEventMode", 1)), que je trouve beaucoup plus lisible et pratique que le mode par message.
Le mode consiste à gérer automatiquement l'association d'une fonction au clic sur un élément grâce aux fonctions TrayItemSetOnEvent et GUIOnEvent et GUICtrlOnEvent servant respectivement à gérer les éléments du tray, de la fenêtre (fermer, minimiser, restaurer, agrandir) et des controles.
Dans votre cas, seul celui concernant le tray est utile, et à l'intérieur de la fonction appelée vous avez accès à la macro @TRAY_ID qui contient l'id de l'élément (@GUI_CtrlId quand vous êtes dans une fonction appelé par un GUICtrlOnEvent).

Voici ce que ça donne :
$dossier_lr = @AppDataDir & '\Microsoft\Internet Explorer\Quick Launch'

Opt("TrayMenuMode", 3)
Opt("MustDeclareVars", 1)
Opt("GUIOnEventMode", 1)
Opt("TrayOnEventMode", 1)

Global $search = FileFindFirstFile($dossier_lr & "\*.lnk")
Global $item[0]

While 1
    Local $file = FileFindNextFile($search)
    If @error Then ExitLoop
   Local $index = UBound($item, 1)
   ReDim $item[$index+1]
   $item[$index] = TrayCreateItem( $file)
   TrayItemSetOnEvent($item[$index], clicLink)
WEnd
TrayCreateItem("")
Local $SystrayEXIT = TrayCreateItem("Quitter")
TrayItemSetOnEvent($SystrayEXIT, quit)

While 1
   Sleep(10)
WEnd

Func clicLink()
   For $i = 0 To UBound($item, 1) - 1
      If($item[$i] == @TRAY_ID) Then
         Local $choix = TrayItemGetText($item[$i])
         MsgBox(0,'',$choix)
      EndIf
   Next
EndFunc


Func quit()
   Exit
EndFunc
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Avatar du membre
franco
Niveau 7
Niveau 7
Messages : 342
Enregistré le : lun. 03 oct. 2011 22:37
Localisation : Liévin
Status : Hors ligne

Re: [..] Barre de lancement rapide dans une icône de notification

#3

Message par franco »

Lu'

Wow ! Un grand merci à toi...

Je peux encore t'embêter ? :mrgreen:


En fait, je voulais mettre aussi des icônes pour chaque Item...
Et vu qu'il s'agit de raccourci, je sais comment trouver l'icône ( FileGetShortcut )


Je pensais - surement naïvement - que TraySetIcon pouvait le faire.
Mais bon, c'était trop simple, c'est juste pour l'icone du systray...

J'ai des recherches à faire, concernant cela...
J'ai trouvé surement des pistes, mais qui datent de 2008... ^^


Allez, zé parti :D


Encore merci.


PS : voici le script (bon, j'ai pas modifié grand chose)
$dossier_lr = @AppDataDir & '\Microsoft\Internet Explorer\Quick Launch'

Opt("TrayMenuMode", 3)
Opt("MustDeclareVars", 1)
Opt("GUIOnEventMode", 1)
Opt("TrayOnEventMode", 1)

Global $search = FileFindFirstFile($dossier_lr & "\*.lnk")
Global $item[0]

While 1
    Local $file = FileFindNextFile($search)
    If @error Then ExitLoop
        Local $index = UBound($item, 1)

        ReDim $item[$index+1]
        $item[$index] = TrayCreateItem( StringTrimRight($file,4))
        TrayItemSetOnEvent($item[$index], clicLink)
WEnd
TrayCreateItem("")
Local $SystrayEXIT = TrayCreateItem("Quitter")
TrayItemSetOnEvent($SystrayEXIT, quit)

While 1
        Sleep(10)
WEnd

Func clicLink()

        For $i = 0 To UBound($item, 1) - 1

                If($item[$i] == @TRAY_ID) Then
                        Local $choix = $dossier_lr & '\'&TrayItemGetText($item[$i])& '.lnk'
                        ShellExecute($choix)
            EndIf
           
      Next
     
EndFunc



Func quit()
        Exit
EndFunc

++
L'entraide, c'est mon dada ;)
Eagle334
Niveau 1
Niveau 1
Messages : 2
Enregistré le : jeu. 08 juin 2017 10:53
Status : Hors ligne

Re: [..] Barre de lancement rapide dans une icône de notification

#4

Message par Eagle334 »

Bonsoir,

Ce sujet pourrait t'intéresser je pense.

Création automatique de menu avec un fichier ini ou txt.

Un TrayMenu très bien conçu et pratique. Tu peux le modifier à ta guise car je l'ai moi même fait. (je l'ai modifié afin de pouvoir automatiser la création du MenuAuto.txt et j'ai aussi créé une GUI afin de mettre les raccourcis dans le traymenu, bon y'a des trucs que je comprends pas vraiment des fois mais je ne suis pas un as de la programmation.)

Merci à jl56 et zeshrek pour le lanceur!!!

PS: si tu le souhaites, je peux te montrer ce que j'ai fait.
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2086
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: [..] Barre de lancement rapide dans une icône de notification

#5

Message par TommyDDR »

Je dois vous avouer que je n'ai jamais essayé de jouer avec les icones dans le tray.

Sinon, avez-vous entendu parler de Launchy ?
Il se présente sous cette forme :
launchy.png
launchy.png (27.06 Kio) Vu 2098 fois
Il est paramétrable en lui indiquant quels dossiers / extensions scanner.
Vous faites alt+espace (raccourci paramétrable), vous commencez à taper ce que vous voulez "scite" et il vous propose les programmes qu'il a trouvé.
Plus un programme est lancé via launchy, moins vous avez à écrire de lettres.
On peut même associer directement un mot clé à un fichier / url.

Vous l'aurez compris, je l'utilise tout le temps ^^
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Eagle334
Niveau 1
Niveau 1
Messages : 2
Enregistré le : jeu. 08 juin 2017 10:53
Status : Hors ligne

Re: [..] Barre de lancement rapide dans une icône de notification

#6

Message par Eagle334 »

Jamais entendu parler...

Mais ça m'intéresse beaucoup, auriez-vous un lien pour pouvoir le récupérer?
Et si possible la source aussi, j'en demande peut-être un peu trop.

Merci d'avance.
Avatar du membre
franco
Niveau 7
Niveau 7
Messages : 342
Enregistré le : lun. 03 oct. 2011 22:37
Localisation : Liévin
Status : Hors ligne

Re: [..] Barre de lancement rapide dans une icône de notification

#7

Message par franco »

Salut.

En fait, je connais bien les "launcher". Launchy, Listary, etc...

Mais je voulais juste trouver une alternative à quick launch, la fameuse barre de lancement rapide.
Car je n'ai pas un pc fixe, mais un pc portable. Ce n'est donc pas une grosse résolution.

J'utilise pour ma part Quick Pop Menu (voire SyMenu).

Et j'aime bien avoir une barre de tâches vide, et avoir une icône de notification où je pourrais stocker mes raccourcis.


Bon, maintenant, j'ai fait divers tests, diverses, sur comment bien ( mieux ) exploiter le dossier du lancement rapide.
Car la fameuse barre de lancement rapide, c'est juste un dossier où on peut stocker divers raccourcis...


Donc, je me suis demandé :
1. Et si je pouvais afficher le dit dossier, mais incrusté dans une GUI ? ===> mes recherches m'ont données quoi faire.
2. Et si je pouvais rajouter - et adapté - le script que TommyDDR m'avait donné ==> c'est chose faite...

Bon, il y a encore une anomalie... Rien de bien grave (bien qu'agaçant mdr).



Je voulais donc "intégré" le contenu du dossier dans une interface => La recherche en FR n'a rien donnée, j'ai donc effectuée cette recherche en anglais...

Ma recherche : www.google.fr/search?q=autoit+embed+win ... rer+in+GUI
Ma trouvaille : https://www.autoitscript.com/forum/topi ... ent=427911
Mon script qui en découle :
► Afficher le texteSCRIPT
Maintenant, FUSION avec le script de départ (via le tray)
Script :
► Afficher le texteSCRIPT
Ce script, fonctionne en lui même...

Il y a juste un défaut.
Pour faire simple :
1. j'utilise le simple clic pour afficher les raccourcis dans l'icône de notification.
2. j'utilise le double clic pour m'afficher dans le "dossier" (via un _IECreateEmbedded) les raccourcis.

Le souci : quand je double clique, on voit d'abord le contenu de l'icône de notification, puis disparait, avoir d'avoir le "dossier".

Que faut-il faire pour le double clic n'affiche que la chose demandée ?


PS : j'ai aussi une erreur lié à IE quand j'essaye de quitter.
"C:\Program Files (x86)\AutoIt3\Include\IE.au3" (2604) : ==> The requested action with this object has failed.:
$oObject.quit()
$oObject^ ERROR
Vu que ça n'affecte pas le programme, peut-être que je devrais laisser tel quel.



Note :
Pour Launchy ce n'est pas codé en AutoIt.

Tu le trouveras ici : https://www.launchy.net

Et pour les fichiers (ini / txt), j'avais déjà vu ça.
Mais pour ce que je veux en faire, je m'en passerais.

Par contre, quand il s'agit de plus gros projets, avec un ini au poil, oui, ça fait le taf. ^^





Encore merci :D
++
L'entraide, c'est mon dada ;)
Répondre