Ru-Board.club
← Вернуться в раздел «Программы»

» AutoIT работа с PopUp menu

Автор: demin_as
Дата сообщения: 07.01.2014 07:11
Помогите пожалуйста нажать кнопку PopUp меню.
Меню динамическое и имеет разное количество кнопок и порядок.
поэтому приходится ориентироваться только на наименование которое у меня и проблема получить.
Просидел всю ночь в интернете, а результатов нет.
последняя надежда на знатоков.

Делаю так:


Код:
#include <WindowsConstants.au3>
#Include <GuiToolBar.au3>
#include <GuiMenu.au3>

Func GetPopUpItem($ItemName)

Local $aPopUp_List = _WinAPI_EnumWindowsPopup()
Local $hWnd = $aPopUp_List[1][0]
Local $sClass = $aPopUp_List[1][1]
If $sClass = "#32768" Then
$hMenu = _SendMessage($hWnd, $MN_GETHMENU, 0, 0)
If _GUICtrlMenu_IsMenu($hMenu) Then
$iCount = _GUICtrlMenu_GetItemCount($hMenu) ;$iCount принимает значение 7
For $j = 0 To $iCount - 1
If not _GUICtrlMenu_GetItemType($hMenu, $j, True) = $MFT_SEPARATOR Then
;_GUICtrlMenu_GetItemType получает значение 256
if _GUICtrlMenu_GetItemText($hMenu, $j) = $ItemName then
;_GUICtrlMenu_GetItemText получает пустое значение
Return $j
endif
EndIf
Next
EndIf
EndIf

; Return $aPopUp_Text
return -1
EndFunc

Func ClickPopUpItem($ItemName)
    
    $cur_pos = MouseGetPos()
    if IsArray($cur_pos) = 0 Then
        Return 0
    EndIf

    if WinExists("[Class:#32768]") = 0 Then
        Return 0
    Else
        $h_win = WinGetHandle("[Class:#32768]")
        if $h_win = "" Then
            Return 0
        EndIf
    
    $hMenu = _SendMessage($h_win, $MN_GETHMENU,0,0)

$it_index = GetPopUpItem($ItemName)
    if $it_index = -1 Then
        Return 0
    EndIf
        
    $it_pos = _GUICtrlMenu_GetItemRect($h_win, $hMenu, $it_index)
    if IsArray($it_pos) = 0 Then
        Return 0
    EndIf
        
        MouseClick("left", $it_pos[0] + ($it_pos[2]-$it_pos[0])/2, $it_pos[1] + ($it_pos[3]-$it_pos[1])/2)
    EndIf
    
MouseMove($cur_pos[0], $cur_pos[1])
    Return 1
EndFunc

Автор: Cheery
Дата сообщения: 07.01.2014 07:15
demin_as
есть же тема, зачем создавать новую?
AutoIT
Автор: demin_as
Дата сообщения: 07.01.2014 07:24
autoit - это не тема, а направление
По вашему мнению создавать тему c#, delphi, mssql или visualstudio это нормально!!?
В данном случае уважаемый Cheery - это тоже самое

Страницы: 1

Предыдущая тема: Самая популярная программа для записи дисков - 2014.


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.