1

Тема: AHK: Запустить сценарий AHK по клику в окне Firefox

Как можно сделать, чтобы при клике ПКМ на определённом элементе окна Firefox запускался сценарий AHK?
Я сейчас запускаю его горячей клавишей, но хотелось бы привязать его к мышиному клику.

2

Re: AHK: Запустить сценарий AHK по клику в окне Firefox

Всё окно Firefox - один большой элемент управления (контрол). Скорее всего придётся использовать команду  ImageSearch, чтобы проверить наличие изображения нужного элемента под курсором.

3

Re: AHK: Запустить сценарий AHK по клику в окне Firefox

Жаль. С ImageSearch я не справлюсь - не тот уровень владения сабжем.

4 (изменено: KepocuH, 2013-05-28 09:42:54)

Re: AHK: Запустить сценарий AHK по клику в окне Firefox

Прошу прощения за оффтоп. Написал ответ, потом понял, что глупость сморозил, хотел удалить сообщение, и не могу найти, как это сделать. Подскажите, а? ))

5

Re: AHK: Запустить сценарий AHK по клику в окне Firefox

OFF:

Обычно на форумах такого не предусмотрено, и в таких случаях пост, как правило, заменяется на "del" или "."

6

Re: AHK: Запустить сценарий AHK по клику в окне Firefox

Обычно на форумах такого не предусмотрено, и в таких случаях пост, как правило, заменяется на "del" или "." smile

Не согласен. Последне сообщение считаю возможным стирать в течении определенного времени (минут 10-20) и если после него уже не было ответа.

7

Re: AHK: Запустить сценарий AHK по клику в окне Firefox

Расширение FireGestures может в помощь? Я как то тоже думал над этим. Делал так: В таймере сканирую буфер обмена, как только там появляется ссылка, то запускаю скрипт. А сцылка помещается в буфер при жесте вниз.

8

Re: AHK: Запустить сценарий AHK по клику в окне Firefox

Zohann пишет:

Расширение FireGestures может в помощь? Я как то тоже думал над этим. Делал так: В таймере сканирую буфер обмена, как только там появляется ссылка, то запускаю скрипт. А сцылка помещается в буфер при жесте вниз.

Я, к сожалению, ничего не понял... Какая ссылка?
Мне надо, чтобы скрипт запускался при клике на какой-то из иконок в панели навигации.

9

Re: AHK: Запустить сценарий AHK по клику в окне Firefox

Может проще добавить свою иконку?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

10

Re: AHK: Запустить сценарий AHK по клику в окне Firefox

Очень интересная идея. Но мне не понятно, как сделать

...чтобы кнопка добавлялась не по хоткею, а при появлении окна?

Там даётся ответ:

creature.ws пишет:

Либо «ждите окно» постоянно, либо отслеживайте HSHELL_WINDOWACTIVATED.

Но мне это ни о чём не говорит...

11

Re: AHK: Запустить сценарий AHK по клику в окне Firefox

Жалко. Задумка очень хорошая, но каждый раз создавать кнопку заново - мне не подходит.


Спрошу уж заодно здесь, чтоб не плодить темы, как в  AutoHotkey создать обычный alert, в котором можно было бы выделить и скопировать часть текста?  В MsgBox этого не сделаешь.

12

Re: AHK: Запустить сценарий AHK по клику в окне Firefox

Создать окно командой Gui, вставить в него контрол Edit.

13

Re: AHK: Запустить сценарий AHK по клику в окне Firefox

newbius пишет:

Но мне это ни о чём не говорит..

Сорри за предыдущий мой пост, был неправ, удалил.



Global WinClass := "OperaWindowClass"

IfWinExist ahk_class %WinClass%
    CreateButton(WinExist("ahk_class " WinClass)) 
DllCall("RegisterShellHookWindow", "UInt", A_ScriptHwnd)
OnMessage(DllCall("RegisterWindowMessage", "str", "SHELLHOOK"), "ShellProc")
return   ;   Конец секции авто выполнения

ShellProc(nCode, wParam)    {
    If (nCode = 1)
    {
        WinGetClass, Class, % "ahk_id " wParam
        If Class = %WinClass%
            CreateButton(wParam)
    } 
} 

CreateButton(Hwnd)    {
    Gui, BN: Margin, 0,0
    Gui, BN: Color, D3DAED
    Gui, BN: +Hwndhgui -Caption +E0x08000000
    Gui, BN: Add, Picture, Icon138 gBN1 x5 w32 h-1, Shell32.dll
    Gui, BN: Add, Picture, Icon160 gBN2 yp x+10 wp h-1, Shell32.dll
    Gui, BN: Add, Picture, Icon133 gBN3 yp x+10 wp h-1, Shell32.dll
    DllCall("SetParent", "uint", hgui, "uint", Hwnd)
    Gui, BN: Show, NA x1 y1
    return

    BN1:
        ToolTip % A_ThisLabel
        return 
    BN2:
        ToolTip % A_ThisLabel
        Return
    BN3:
        ToolTip % A_ThisLabel
        return 
}

Код действителен для одного целевого окна указанного класса.
WinClass подставьте свой. Можете добавить код в свой повседневный скрипт (у меня так).

Здесь в функци ShellProc отслеживается не активацию, а факт создания (nCode = 1) окна. Если окон несколько, то самый простой способ это написать nCode = 4. Тогда будет отслеживание активации окна, и переброс созданных кнопок. Иначе, создавать массив и индексировать Gui при создании.
Координаты кнопки укажите в строке: Gui, BN: Show, NA x1 y1

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

14 (изменено: newbius, 2013-06-20 21:17:17)

Re: AHK: Запустить сценарий AHK по клику в окне Firefox

serzh82saratov
Спасибо за скрипт!
Только он у меня, к сожалению, очень нестабильно работает. Я установил nCode = 4

При открытии нового окна Firefox кнопка на него переходит, при закрытии возвращается в первое окно. Но после нескольких срабатываний кнопка имеет обыкновение сворачиваться на панель задач и если её оттуда развернуть, иконки кнопки видны по 2 и даже по 3 штуки

15

Re: AHK: Запустить сценарий AHK по клику в окне Firefox

Приведите ваш код.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

16 (изменено: newbius, 2013-06-20 23:01:33)

Re: AHK: Запустить сценарий AHK по клику в окне Firefox

serzh82saratov пишет:

Приведите ваш код.

Вот

Global WinClass := "MozillaWindowClass"

IfWinExist ahk_class %WinClass%
    CreateButton(WinExist("ahk_class " WinClass)) 
DllCall("RegisterShellHookWindow", "UInt", A_ScriptHwnd)
OnMessage(DllCall("RegisterWindowMessage", "str", "SHELLHOOK"), "ShellProc")
return   ;   Конец секции авто выполнения

ShellProc(nCode, wParam)    {
    If (nCode = 4)
    {
        WinGetClass, Class, % "ahk_id " wParam
        If Class = %WinClass%
            CreateButton(wParam)
    } 
} 

CreateButton(Hwnd)    {
    Gui, BN: Margin, 0,0
    Gui, BN: Color, D3DAED
    Gui, BN: +Hwndhgui -Caption +E0x08000000
    Gui, BN: Add, Picture, Icon138 gBN1 x5 w16 h-1, Shell32.dll
    Gui, BN: Add, Picture, Icon160 gBN2 yp x+10 wp h-1, Shell32.dll
    Gui, BN: Add, Picture, Icon133 gBN3 yp x+10 wp h-1, Shell32.dll
    DllCall("SetParent", "uint", hgui, "uint", Hwnd)
    Gui, BN: Show, NA x500 y5
    return

    BN1:
       ToolTip % A_ThisLabel
        return 
    BN2:
        ToolTip % A_ThisLabel
        Return
    BN3:
        ToolTip % A_ThisLabel
        return 
}

Upd
Хочу уточнить: под "новыми окнами" я имел в виду вспомогательные окна Firefox - консоль ошибок, Scratchpad и пр.
WinClass у них тот же, что и у основного окна.

Не знаю, имеет ли это значение.

17

Re: AHK: Запустить сценарий AHK по клику в окне Firefox

кнопка имеет обыкновение сворачиваться на панель задач и если её оттуда развернуть, иконки кнопки видны по 2 и даже по 3 штуки

Можете описать более подробно.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

18 (изменено: newbius, 2013-06-20 23:38:36)

Re: AHK: Запустить сценарий AHK по клику в окне Firefox

serzh82saratov пишет:

Можете описать более подробно.

После нескольких удачных переходов из окна в другое окно, кнопка исчезает с положенного места и появляется на панели задач как свёрнутое приложение
http://pixator.ru/image-2C6A_51C35A1C.jpg


Если кликнуть по этому значку, в левом нижнем углу над кнопкой "Пуск" появляется шапка окна 
http://pixator.ru/image-D202_51C3552F.jpg



Если ещё раз кликнуть, кнопка появляется на своём законном месте, на панели меню браузера, но имеет такой вид:
http://pixator.ru/image-49C3_51C3552F.jpg


Я подправил свой предыдущий пост, уточнил, о каких окнах речь.

19 (изменено: serzh82saratov, 2013-06-21 10:30:56)

Re: AHK: Запустить сценарий AHK по клику в окне Firefox

Попробуйте так:


Global WinClass := "OperaWindowClass"

IfWinExist ahk_class %WinClass%
    CreateButton(WinExist("ahk_class " WinClass)) 
DllCall("RegisterShellHookWindow", "UInt", A_ScriptHwnd)
OnMessage(DllCall("RegisterWindowMessage", "str", "SHELLHOOK"), "ShellProc")
return   ;   Конец секции авто выполнения

ShellProc(nCode, wParam)    {
    If (nCode = 4)
    {
        WinGetClass, Class, % "ahk_id " wParam
        If Class = %WinClass%
            CreateButton(wParam)
    } 
} 

CreateButton(Hwnd)    {
    IfWinNotExist ahk_id %hgui%
    {
        Gui, BN: Margin, 0,0
        Gui, BN: Color, D3DAED
        Gui, BN: +Hwndhgui  +ToolWindow -Caption +E0x08000000
        Gui, BN: Add, Picture, Icon138 gBN1 x5 w16 h-1, Shell32.dll
        Gui, BN: Add, Picture, Icon160 gBN2 yp x+10 wp h-1, Shell32.dll
        Gui, BN: Add, Picture, Icon133 gBN3 yp x+10 wp h-1, Shell32.dll
    }
    DllCall("SetParent", "uint", hgui, "uint", Hwnd)
    Gui, BN: Show, NA x500 y5
    return

    BN1:
       ToolTip % A_ThisLabel
        return 
    BN2:
        ToolTip % A_ThisLabel
        Return
    BN3:
        ToolTip % A_ThisLabel
        return 
}

Если в дочерних окнах кнопки ненужны, то здесь:


ShellProc(nCode, wParam)    {
    If (nCode = 4)
    {
        WinGetClass, Class, ahk_id %wParam% 
        WinGet, Style, Style, ahk_id %wParam%
        If !(Style & 0x40000000) && (Class = WinClass) 
            CreateButton(wParam)
    } 
} 

ещё проверяйте что окно родительское.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

20

Re: AHK: Запустить сценарий AHK по клику в окне Firefox

serzh82saratov пишет:

Попробуйте так:

А вот это работает как часы!

Спасибо большое!

21

Re: AHK: Запустить сценарий AHK по клику в окне Firefox

newbius пишет:
Zohann пишет:

Расширение FireGestures может в помощь? Я как то тоже думал над этим. Делал так: В таймере сканирую буфер обмена, как только там появляется ссылка, то запускаю скрипт. А сцылка помещается в буфер при жесте вниз.

Я, к сожалению, ничего не понял... Какая ссылка?
Мне надо, чтобы скрипт запускался при клике на какой-то из иконок в панели навигации.

Я думал вам надо запускать скрипт при клике на странице браузера.