D�termine quel �l�ment de menu est � l'emplacement sp�cifi�
#include <GuiMenu.au3>
_GUICtrlMenu_MenuItemFromPoint ( $hWnd, $hMenu [, $iX = -1 [, $iY = -1]] )
$hWnd | Handle de la fen�tre contenant le menu. Si cette valeur est 0 et $hMenu repr�sente un menu d�roulant, la fonction trouvera la fen�tre du menu. |
$hMenu | Handle du menu contenant les �l�ments qu'il faut tester |
$iX | [optionnel] Position X � tester. Si -1, la position X courante de la souris sera utilis�e. |
$iY | [optionnel] Position Y � tester. Si -1, la position Y courante de la souris sera utilis�e. |
Succ�s: | Retourne la position de base 0 de l'�l�ment de menu � l'emplacement sp�cifi�. |
�chec: | Retourne -1. |
Si $hMenu sp�cifie une barre de menu, les coordonn�es sont les coordonn�es de la fen�tre. Sinon, elles sont les coordonn�es de la zone cliente.
Consultez MenuItemFromPoint dans la librairie MSDN.
#include <GuiMenu.au3> Example() Func Example() Local $hWnd, $hMain, $hFile, $tRect, $tPoint, $iX, $iY, $iIndex ; Ouvre le Bloc-Notes Run("notepad.exe") WinWaitActive("[CLASS:Notepad]") $hWnd = WinGetHandle("[CLASS:Notepad]") $hMain = _GUICtrlMenu_GetMenu($hWnd) $hFile = _GUICtrlMenu_GetItemSubMenu($hMain, 0) ; Ouvre le menu File Send("!f") Sleep(1000) ; D�place la souris sur l'�l�ment de menu Open $tRect = _GUICtrlMenu_GetItemRectEx($hWnd, $hFile, 1) $tPoint = _Lib_PointFromRect($tRect, True) _Lib_GetXYFromPoint($tPoint, $iX, $iY) MouseMove($iX, $iY, 1) Sleep(1000) ; Obtient l'�l�ment de menu � partir de la position actuelle de la souris $iIndex = _GUICtrlMenu_MenuItemFromPoint($hWnd, $hFile) Send("{ESC 2}") Writeln("�l�ment de menu sous le curseur �tait: " & $iIndex) EndFunc ;==>Example ; �crit une ligne de texte dans le Bloc-Notes Func Writeln($sText) ControlSend("[CLASS:Notepad]", "", "Edit1", $sText & @CRLF) EndFunc ;==>Writeln Func _Lib_PointFromRect(ByRef $tRect, $bCenter = True) Local $iX1, $iY1, $iX2, $iY2, $tPoint $iX1 = DllStructGetData($tRect, "Left") $iY1 = DllStructGetData($tRect, "Top") $iX2 = DllStructGetData($tRect, "Right") $iY2 = DllStructGetData($tRect, "Bottom") If $bCenter Then $iX1 = $iX1 + (($iX2 - $iX1) / 2) $iY1 = $iY1 + (($iY2 - $iY1) / 2) EndIf $tPoint = DllStructCreate($tagPOINT) DllStructSetData($tPoint, "X", $iX1) DllStructSetData($tPoint, "Y", $iY1) Return $tPoint EndFunc ;==>_Lib_PointFromRect Func _Lib_GetXYFromPoint(ByRef $tPoint, ByRef $iX, ByRef $iY) $iX = DllStructGetData($tPoint, "X") $iY = DllStructGetData($tPoint, "Y") EndFunc ;==>_Lib_GetXYFromPoint