réduire une fenêtre au niveau inférieur

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
jeanglaude
Niveau 3
Niveau 3
Messages : 32
Enregistré le : sam. 01 mai 2021 10:13
Status : Hors ligne

réduire une fenêtre au niveau inférieur

#1

Message par jeanglaude »

je pose la question parceque après 1 heure de recherche je n'y arrive pas :

je lance une fenetre de chrome, si je ne la met pas au niveau inférieur (ni minimisé, ni maximisé)
le déplacement et redimensionnement ne se fait pas
alors j'ai mis un sleep de 3 secondes pour avoir le temps de cliquer sur l'icone des deux carrés (à gauche de la croix de fermeture de la fenetre)
mais j'aimerais que ca se fasse automatiquement

j'ai essayé beaucoup de chose avec des @SW_... mais rien ne marche
Run('"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"')
Local $hWnd1 = WinWait("[CLASS:Chrome_WidgetWin_1]", "", 5)
sleep(3000)
$hWnd1b = WinGetHandle("Nouvel onglet")
WinMove($hWnd1b, "", 2240, 1, 800, 518, 5)
aussi je ne comprend pas pourquoi je suis obligé de passer par WinGetHandle("Nouvel onglet")
sinon ca ne déplace/redimensionne pas la fenetre, c'est l'onglet que je déplace et pas le programme ?

j'ai un autre problème :
si je lance 2 fenetres chrome : les deux fenetres sont sur [CLASS:Chrome_WidgetWin_1]
et donc il ne déplace/redimensionne pas la bonne fenetre une fois sur deux,
comment éviter ca ?
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2086
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: réduire une fenêtre au niveau inférieur

#2

Message par TommyDDR »

Vos réponses se trouvent dans l'aide AutoIt
Rubrique : WinWait pour votre problème de mauvaise fenêtre une fois sur deux
Rubrique : WinSetState pour votre problème de restauration de fenêtre (ni minimisé, ni maximisé)
j'ai essayé beaucoup de chose avec des @SW_... mais rien ne marche
-> Pas sur que vous ayez tout essayé

L'aide vous apportera vos réponses.

Aide concernant l'accès l'aide :P :
Faites F1 en ayant le curseur sur le nom d'une fonction dans SciTE (il faut que le fichier soit sauvegardé) et vous irez directement à la fonction concernée dans l'aide.
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
jeanglaude
Niveau 3
Niveau 3
Messages : 32
Enregistré le : sam. 01 mai 2021 10:13
Status : Hors ligne

Re: réduire une fenêtre au niveau inférieur

#3

Message par jeanglaude »

par exemple ce code là que j'ai trouvé dans Autoit help
une fois sur deux : la seule chose qu'il fait c'est d'ouvrir notepad, il se passe rien ensuite

quand je check le window info picker sur la fenetre notepad il me dit bien :
Class: Notepad

j'ai fais un msgbox sur le $hWnd il est bien présent, et toujours différent

on dirait que dans certains cas il n'arrive pas à identifier correctement la fenetre

Code : Tout sélectionner


    ; Run Notepad
    Run("notepad.exe")

    ; Wait 10 seconds for the Notepad window to appear.
    Local $hWnd = WinWait("[CLASS:Notepad]", "", 10)

    ; Set the state of the Notepad window to "hide".
    WinSetState($hWnd, "", @SW_HIDE)

    ; Wait for 2 seconds.
    Sleep(2000)

    ; Set the state of the Notepad window to "show".
    WinSetState($hWnd, "", @SW_SHOW)

    ; Wait for 2 seconds.
    Sleep(2000)

    ; Close the Notepad window using the handle returned by WinWait.
    WinClose($hWnd)

jeanglaude
Niveau 3
Niveau 3
Messages : 32
Enregistré le : sam. 01 mai 2021 10:13
Status : Hors ligne

Re: réduire une fenêtre au niveau inférieur

#4

Message par jeanglaude »

ou alors peu être un processus externe qui fait des interférences ??

quand je fais un winmove sur notepad ca marche à chaque fois,
sur chrome ca ne marche pas la plupart du temps : il se passe rien dans 90% des cas

comment c'est possible ??
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2086
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: réduire une fenêtre au niveau inférieur

#5

Message par TommyDDR »

Dans ce genre de cas, mettez
ConsoleWrite($hWnd & @CRLF)
après la ligne
Local $hWnd = WinWait("[CLASS:Notepad]", "", 10)

Et quand vous avez le soucis, sortez AutoIt Window Info et regardez le handle de la fenêtre que vous comptiez cibler, si ça ne correspond pas, c'est que vous avez une seconde fenêtre qui a la classe Notepad.

En général, quand vous avez le handle du fautif, vous pouvez essayer de voir qui c'est :
Local $hwnd = Hwnd(0x0000000000000) ; Insérez votre handle ici
Local $title = WinGetTitle($hwnd)
Local $pos = WinGetPos($hwnd)
Local $state = WinGetState($hwnd)

ConsoleWrite("Title : " & $title & @CRLF)
ConsoleWrite("Pos : " & $pos[0] & ", " & $pos[1] & " | " & $pos[2] & ", " & $pos[3] & @CRLF)
ConsoleWrite("State : " & $state & @CRLF)

WinMove($hwnd, "", 0, 0, 800, 600)
WinSetState(@SW_SHOW)

MsgBox(0, "", "")

WinMove($hwnd, "", $pos[0], $pos[1], $pos[2], $pos[3])
WinSetState($state)
Vous saurez son titre, sa position, son état, vous la déplacerez en 0, 0 pour être sur de la voir et une fois que vous aurez cliqué sur "ok", elle retournera où elle était
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
jeanglaude
Niveau 3
Niveau 3
Messages : 32
Enregistré le : sam. 01 mai 2021 10:13
Status : Hors ligne

Re: réduire une fenêtre au niveau inférieur

#6

Message par jeanglaude »

merci Tommy je vais essayer ca

sinon j'ai trouvé une possibilité de démarrer chrome pour pas qu'il soit en plein écran au départ
c'est un peu du bricolage mais ca marche

il faut créer un raccourci sur le bureau > clique droit > propriétés > executer non pas en fenetre normale, mais réduite

ensuite il faut copier ou déplacer ce raccourci ailleurs que sur le bureau pour pouvoir faire un ShellExecute dessus

Code : Tout sélectionner


ShellExecute("C:\test_lnk\chrome.exe - Raccourci.lnk")

à partir de là WinMove fonctionne bien

par contre c'est un peu contraignant quand je vais devoir faire la même chose sur l'ordi de mon collègue,
parcequ'on travaille pas dans la même ville, je ne peux pas aller derrière lui pour l'assister sur cette manip,
bon je pense quand même qu'il y arrivera avec mes explications
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2086
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: réduire une fenêtre au niveau inférieur

#7

Message par TommyDDR »

Avez vous essayé, une fois le handle obtenu de faire
WinSetState($hwnd, "", @SW_RESTORE)
?
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
jeanglaude
Niveau 3
Niveau 3
Messages : 32
Enregistré le : sam. 01 mai 2021 10:13
Status : Hors ligne

Re: réduire une fenêtre au niveau inférieur

#8

Message par jeanglaude »

je vais essayer ca aussi merci
Répondre