1

Тема: AHK: Выполнять если control и class удовлетворяют требованиям

#IfWinActive ahk_class TTOTAL_CMD
SetKeyDelay, 0
MButton::
    KeyWait, MButton
    send {LButton}
    KeyWait, LButton
    Send {F3}
return

Получается что этот скрипт выполняется только в окне с классом TTOTAL_CMD, но надо, чтобы он выполнялся только в определенных участках, имеющих значение control: TMyListBox1 и TMyListBox2

2

Re: AHK: Выполнять если control и class удовлетворяют требованиям

MouseGetPos может определять, над каким контролом указатель мыши.

3 (изменено: Ark, 2011-02-03 17:34:47)

Re: AHK: Выполнять если control и class удовлетворяют требованиям

~MButton::
    id:=class
    MouseGetPos, , , id, control
    WinGetClass, class, ahk_id %id%
        If (control = "TMyListBox1") and (class = "TTOTAL_CMD")
            Send {LButton}{F3}
Return

Вроде разобрался частично. А как добавить второй control: TMyListBox2 для обработки?

4

Re: AHK: Выполнять если control и class удовлетворяют требованиям

Вот так, например:

If (control = "TMyListBox1" or control = "TMyListBox2") and (class = "TTOTAL_CMD")

5 (изменено: Ark, 2011-03-06 12:31:39)

Re: AHK: Выполнять если control и class удовлетворяют требованиям

Сегодня с этим возникли ранее не замеченные проблемы.

Итак начну с не большего описания скрипта, которое возможно и не надо. При нажатии на файл средней кнопкой в окне Total Commander, происходит нажатие на нем левой кнопкой и затем нажатие F3, чтобы открыть файл ,встроенным в Total Commander просмоторщиком .

И собственно проблема.
Есть файл, который находится на TMyListBox1 и выделен курсором. При нажатии "средней кнопкой мыши" на файл, расположенный на панели TMyListBox2, все равно открывается выделенный файл на панели TMyListBox1. Если выделить файл на панели TMyListBox2 и нажать "средней кнопкой мыши" на файл расположенный на панели TMyListBox1, то откроется нужный файл с панели TMyListBox1.

Вообщем при нажатии на панели TMyListBox2 средней кнопкой, нажатие левой кнопкой не происходит и сразу выполняется нажатие F3. Но при нажатии на панели TMyListBox1 все работает нормально.

~MButton::
    id:=class
    MouseGetPos, , , id, control
    WinGetClass, class, ahk_id %id%
        If (control = "TMyListBox1" or control = "TMyListBox2") and (class = "TTOTAL_CMD")
            Send {LButton}{F3}
Return

Странно, только что включил комп и всё работает нормально.