[..] Désactiver un bouton

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Ramzi
Niveau 1
Niveau 1
Messages : 10
Enregistré le : lun. 11 mai 2009 17:35
Status : Hors ligne

[..] Désactiver un bouton

#1

Message par Ramzi »

Bonjour tout le monde,

ma question et la suivante: Est-ce qu'il est possible à l'aide d'un scripte de faire désactiver ou griser les deux boutons (Réduire et Agrandir) d'une fenêtre.
Merci
bonne journée
Modifié en dernier par ani le jeu. 14 mai 2009 11:24, modifié 1 fois.
Raison : Ajout de la balise [..] dans le titre
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] Désactiver un bouton

#2

Message par Iste »

Une fenetre crée par ton script ? oui
Faut regarder dans les style (apres un rapide coup doeil j'ai pas retrouvé le style en question)

Par contre,pour une fenetre autre. Ca va etre dur, voir peut etre impossible

Il faudrait peut etre penser a un script qui restore la fenetre automatiquement
Signez ici
Ramzi
Niveau 1
Niveau 1
Messages : 10
Enregistré le : lun. 11 mai 2009 17:35
Status : Hors ligne

Re: [..] Désactiver un bouton

#3

Message par Ramzi »

Bonjour Iste,

cette fenêtre qui m'intéresse n'est pas une fenêtre d'un scripte!!!!!!!!!!!!
et pour la solution "restaure la fenêtre" tu peut me donner le scripte qui fait cette opération.

merci
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [..] Désactiver un bouton

#4

Message par sylvanie »

Bonjour,
normalement un appel à la fonction EnableMenuItem de user32.dll permet ceci. En pratique ça marche bien avec la croixde fermeture et les menu "classiques" présents dans une barre, mais il semble que les boutons de réductions et agrandissement sont un peu rétissants.

Par contre la fonction RemoveMenu de la même dll neutralise bien les actions de ces boutons.

Voici un petit exple qui agit sur scite lui même si on le lance depuis cet éditeur bien-sûr ...
► Afficher le texte
Pas de panique, une fermeture et une réouverture de l'appli remets bien sûr les boutons fonctionnels...
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Ramzi
Niveau 1
Niveau 1
Messages : 10
Enregistré le : lun. 11 mai 2009 17:35
Status : Hors ligne

Re: [..] Désactiver un bouton

#5

Message par Ramzi »

Bonjour,
merci sylvanie pour ton aide, mais le probléme c'est que j'ai rein compris :roll:
en plus l'éxecution de scripte donne des erreur
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [..] Désactiver un bouton

#6

Message par sylvanie »

Pour l'explication en plus simplifiée :
- il existe un appel (EnableMenuItem) à une dll qui permet entre autre de neutraliser des contrôles (boutons/menus) pour tout type de fenêtre (ou presque)
- pas de chance ça ne marche pas pour les boutons réduire/restaurer comme tu le souhaites
- mais il existe une autre fonction (RemoveMenu), qui marche, permettant de neutraliser l'action qui se cache dérière un bouton/menu. Du coups le bouton est là, mais il ne fait plus rien


pour l'erreur, il faudrait en dire un peu plus ... un petit copier coller du message d'erreur serait bienvenu
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11798
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Désactiver un bouton

#7

Message par Tlem »

J'ai trouvé une solution sur le forum Anglais.
Le script d'origine à été créé par SmOke_N.

Code : Tout sélectionner

#include <GUIConstantsEx.au3>

ShellExecute("notepad.exe")
WinWait("Sans titre - Bloc-notes")

$hGUI = WinGetHandle("Sans titre - Bloc-notes")
_WinRemoveMinMaxBox($hGUI)


Func _WinRemoveMinMaxBox($h_wnd)
    Local Const $GWL__STYLE = -16
    Local Const $WS__MAXIMIZEBOX = 0x0010000
    Local Const $WS__MINIMIZEBOX = 0x0020000
  
    If IsString($h_wnd) Then $h_wnd = WinGetHandle($h_wnd)
  
    Local $a_old_style = DllCall("user32.dll", "int", "GetWindowLong", "hwnd", $h_wnd, "int", $GWL__STYLE)
    If @error Then Return SetError(1, 0, 0)
  
    Local $i_style = 0
    If BitAND($a_old_style[0], $WS__MAXIMIZEBOX) Then $i_style = BitOR($i_style, $WS__MAXIMIZEBOX)
    If BitAND($a_old_style[0], $WS__MINIMIZEBOX) Then $i_style = BitOR($i_style, $WS__MINIMIZEBOX)
  
    If Not $i_style Then Return $a_old_style[0]
  
    Local $a_set_window = DllCall("user32.dll", "int", "SetWindowLong", "hwnd", $h_wnd, "int", $GWL__STYLE, "long", $a_old_style[0] - $i_style)
    If @error Then Return SetError(2, 0, 0)
  
   ; Cheap way to refresh the title bar
    WinSetTitle($h_wnd, "", WinGetTitle($h_wnd))
  
    Return $a_set_window[0]
EndFunc
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [..] Désactiver un bouton

#8

Message par sylvanie »

ouah ! Elle est très bien cette méthode ^^
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Ramzi
Niveau 1
Niveau 1
Messages : 10
Enregistré le : lun. 11 mai 2009 17:35
Status : Hors ligne

Re: [..] Désactiver un bouton

#9

Message par Ramzi »

Bonjour,
Merci beaucoup Tlem et sylvanie, vraiment ce dernier code et très intéressent :D

Bonne journée
A bientôt
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11798
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Désactiver un bouton

#10

Message par Tlem »

@Ramzi
Puisque votre question est résolue, vous pouvez ré-éditer votre premier message pour mettre la balise qui va bien [R]. :wink:
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Ramzi
Niveau 1
Niveau 1
Messages : 10
Enregistré le : lun. 11 mai 2009 17:35
Status : Hors ligne

Re: [..] Désactiver un bouton

#11

Message par Ramzi »

Bonjour,
mais avec des fenêtre du Bureau à distance ce code ne marche pas,et je ce pas pourquoi !!!!!!!!!!!!! :roll:
Bon week-end
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11798
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Désactiver un bouton

#12

Message par Tlem »

Sans doute parce qu'ils ne sont pas dans la barre du menu système.
Vous parlez bien des boutons dans la barre centrale en haut ?
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Ramzi
Niveau 1
Niveau 1
Messages : 10
Enregistré le : lun. 11 mai 2009 17:35
Status : Hors ligne

Re: [..] Désactiver un bouton

#13

Message par Ramzi »

Bonjour,
oui je parle des bouton réduire et agrandir de cette fenêtre Image
y a t'il une solution à ce problème???
Merci d'avance
bonne journée
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11798
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Désactiver un bouton

#14

Message par Tlem »

Il me semble que vous pouvez paramétrer l'affichage ou non de cette barre.
Par contre, comme ce n'est pas une barre de fenêtre classique, je doute que vous puissiez faire quelque chose pour masquer les fonctions à l'aide d'un programme externe.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Répondre