[R] Affichage du titre et handle de la fenêtre active via un traymenu / trayitem

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

[R] Affichage du titre et handle de la fenêtre active via un traymenu / trayitem  

#1

Message par franco »

Bonjour ou Bonsoir.

Pour ceux qui ne savent pas... Je joue sur PC. ^^ (Mais on s'en fout ^^)...


Je préfère jouer en mode fenêtré...
J'utilisais un outil (Sizer) me permettant de redimensionner la fenêtre désirée (dans le mode fenêtre n'est pas disponible d'origine).

J'en ai eu marre d'utiliser un outil fait par un tiers, sachant que je sais comment redimensionner une fenêtre... Avec affichage des fenêtre dans une listview... etc.

Là, je veux faire juste une icône de notification.
Et je désire donc modifier la taille de la fenêtre ACTIVE.

Donc, étape n°1 : afficher le titre et le handle de la fenêtre via l’icône de notification...

https://www.autoitscript.fr/autoit3/doc ... tState.htm => $WIN_STATE_ACTIVE (8) = La fenêtre est active

J'ai donc créé ce script :
#NoTrayIcon
#include <MsgBoxConstants.au3>
#include <TrayConstants.au3>; Required for the $TRAY_ICONSTATE_SHOW constant.

Opt("TrayMenuMode", 3) ; The default tray menu items will not be shown and items are not checked when selected. These are options 1 and 2 for TrayMenuMode.

   Local $ChRes = TrayCreateMenu("Redimensionner la fenêtre active :") ; Create a tray menu sub menu with two sub items.


   Dim $res[21]
   $res[1] = TrayCreateItem("320x200", $ChRes)
   $res[2] = TrayCreateItem("640x350", $ChRes)
   $res[3] = TrayCreateItem("640x480", $ChRes)
   $res[4] = TrayCreateItem("800x600", $ChRes)
   $res[5] = TrayCreateItem("1024x768", $ChRes)
   $res[6] = TrayCreateItem("1152x864", $ChRes)
   $res[7] = TrayCreateItem("1280x720", $ChRes)
   $res[8] = TrayCreateItem("1280x1024", $ChRes)
   $res[9] = TrayCreateItem("1366x768", $ChRes)
   $res[10] = TrayCreateItem("1400x1050", $ChRes)
   $res[11] = TrayCreateItem("1440x900", $ChRes)
   $res[12] = TrayCreateItem("1600x1024", $ChRes)
   $res[13] = TrayCreateItem("1600x1200", $ChRes)
   $res[14] = TrayCreateItem("1680x1050", $ChRes)
   $res[15] = TrayCreateItem("1920x1080", $ChRes)
   $res[16] = TrayCreateItem("1920x1200", $ChRes)
   $res[17] = TrayCreateItem("2048x1536", $ChRes)
   $res[18] = TrayCreateItem("2560x1440", $ChRes)
   $res[19] = TrayCreateItem("2560x1600", $ChRes)
   $res[20] = TrayCreateItem("3840x2160", $ChRes)

   TrayCreateItem("") ; Create a separator line.

   Local $idAbout = TrayCreateItem("About")
   TrayCreateItem("") ; Create a separator line.

   Local $idExit = TrayCreateItem("Exit")

   TraySetState($TRAY_ICONSTATE_SHOW) ; Show the tray menu.

   While 1     
      Switch TrayGetMsg()

         Case $res[1]
            $resolution = TrayItemGetText($res[1])
            _RedimActivFen($resolution)
         Case $res[2]
            $resolution = TrayItemGetText($res[2])
            _RedimActivFen($resolution)
         Case $res[3]
            $resolution = TrayItemGetText($res[3])
            _RedimActivFen($resolution)
         Case $res[4]
            $resolution = TrayItemGetText($res[4])
            _RedimActivFen($resolution)
         Case $res[5]
            $resolution = TrayItemGetText($res[5])
            _RedimActivFen($resolution)
         Case $res[6]
            $resolution = TrayItemGetText($res[6])
            _RedimActivFen($resolution)
         Case $res[7]
            $resolution = TrayItemGetText($res[7])
            _RedimActivFen($resolution)
         Case $res[8]
            $resolution = TrayItemGetText($res[8])
            _RedimActivFen($resolution)
         Case $res[9]
            $resolution = TrayItemGetText($res[9])
            _RedimActivFen($resolution)
         Case $res[10]
            $resolution = TrayItemGetText($res[10])
            _RedimActivFen($resolution)
         Case $res[11]
            $resolution = TrayItemGetText($res[11])
            _RedimActivFen($resolution)
         Case $res[12]
            $resolution = TrayItemGetText($res[12])
            _RedimActivFen($resolution)
         Case $res[13]
            $resolution = TrayItemGetText($res[13])
            _RedimActivFen($resolution)
         Case $res[14]
            $resolution = TrayItemGetText($res[14])
            _RedimActivFen($resolution)
         Case $res[15]
            $resolution = TrayItemGetText($res[15])
            _RedimActivFen($resolution)
         Case $res[16]
            $resolution = TrayItemGetText($res[16])
            _RedimActivFen($resolution)
         Case $res[17]
            $resolution = TrayItemGetText($res[17])
            _RedimActivFen($resolution)
         Case $res[18]
            $resolution = TrayItemGetText($res[18])
            _RedimActivFen($resolution)
         Case $res[19]
            $resolution = TrayItemGetText($res[19])
            _RedimActivFen($resolution)
         Case $res[20]
            $resolution = TrayItemGetText($res[20])
            _RedimActivFen($resolution)

         Case $idExit ; Exit the loop.
            Exit
           
      EndSwitch
   WEnd


Func _RedimActivFen($resolution)


   Local $aList = WinList()
   $TitreFen = ""
   $HandleFen = ""

      For $i = 1 To $aList[0][0]
         If $aList[$i][0] <> ""  And BitAND(WinGetState($aList[$i][1]), 8) Then
            $TitreFen = $aList[$i][0]
            $HandleFen = $aList[$i][1]
         EndIf
      Next

   MsgBox(0, $TitreFen, $HandleFen)

EndFunc   ;==>_RedimActivFen
Mais j'obtiens à chaque fois ceci :
- Titre de la fenêtre : AutoIt V3
- Handle de la fenêtre : 0x00000000001F08E6

Le Handle change... Ce qui doit être normal je pense.

Quoiqu'il en soit, le souci - je pense - est qu'il récupère les informations de l'icône de notification, et non la fenêtre active.


Pouvez-vous m'aider à éclaircir ceci ? 8)

PS : cela va aussi me servir pour zieuter youtube en Fenêtre également (et pas que).


merci à tous.
Et bonne soirée (ou journée :P)


@plusche.
Modifié en dernier par franco le lun. 27 mars 2017 15:55, modifié 1 fois.
L'entraide, c'est mon dada ;)
Avatar du membre
franco
Niveau 7
Niveau 7
Messages : 343
Enregistré le : lun. 03 oct. 2011 22:37
Localisation : Liévin
Status : Hors ligne

[R] Affichage du titre et handle de la fenêtre active via un traymenu / trayitem

#2

Message par franco »

Bonjour.

Souci résolu. ;)

Via cette piste : https://www.autoitscript.com/forum/topi ... ent=346251

En effet, fallait mettre comme paramètre "2" pour BitAND(WinGetState, dans une boucle while 1 / Wend.
Et sortir illico presto (^^) de la boucle pour ne garder qu'en mémoire le bon titre et handle de la fenêtre.

Du coup, ma fonction devient :
Func _RedimActivFen($resolution)
   
   $ListeFen = WinList()
   While 1
      For $i = 1 To $ListeFen[0][0]
         If $ListeFen[$i][0] <> "" And BitAND(WinGetState($ListeFen[$i][1]), 2) Then
            $TitreFen = $ListeFen[$i][0]
            $HandleFen = $ListeFen[$i][1]
            ExitLoop
         EndIf
      Next
      ExitLoop
   WEnd
   MsgBox(0, $TitreFen, $HandleFen)

EndFunc   ;==>_RedimActivFen
Content je suis, je peux continuer.
++ :mrgreen:
L'entraide, c'est mon dada ;)
Répondre