Закрытие вкладок браузера по их названию.

Обсуждение программ nnCron и nnCron LITE

Закрытие вкладок браузера по их названию.

Postby Aveiro » Thu, 13 Aug 2015, 23:51

Есть программа, которая открывает в браузере адресные ссылки-страницы. Нужно их искать(адрес страницы известен), и если они есть - закрывать. Браузер закрывать полностью нельзя .
Пример:
1.Ищем открытую страницу : mail.ru (может быть не активной)
2. Если нашли-закрываем страницу mail.ru
---------
Возможно реализовать ?

P.s Браузер Chrome
nncron.exe v 1.93b15 Build 1177 08.02.2016
tm.exe v 1.93b15 Build 604 08.02.2016
Aveiro
 
Posts: 222
Joined: Tue, 06 Jul 2010, 21:19

Re: Закрытие вкладок браузера по их названию.

Postby VoidVolker » Fri, 14 Aug 2015, 09:59

Требуются следующие плагины:
extwords
SendInput
Code: Select all
#( Задача_094414082015
NoActive
SingleInstance
CREATE StartTab 256 ALLOT
Action:
\ Хром должен быть активным окном
GetForegroundWindow TO WIN-HWND
Ctrl( [CHAR] T AKEY )Ctrl
300 PAUSE
WIN-HWND GET-WTEXT StartTab PLACE
Ctrl( Tab )Ctrl
200 PAUSE
BEGIN WIN-HWND GET-WTEXT 2DUP StartTab COUNT COMPARE WHILE \ ( a u -- )
    TYPE CR \ На стеке - заголовок вкладки
    Ctrl( Tab )Ctrl
    200 PAUSE
REPEAT
2DROP Ctrl( [CHAR] W AKEY )Ctrl
)#
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Закрытие вкладок браузера по их названию.

Postby mihast » Sat, 15 Aug 2015, 15:53

Я так понял нужен плагин sendinput.spf ?

Все равно ругается на слово GET-WTEXT
Last edited by VoidVolker on Sat, 15 Aug 2015, 16:05, edited 1 time in total.
Reason: Включил bb-код
mihast
 
Posts: 51
Joined: Tue, 23 Aug 2005, 21:14

Re: Закрытие вкладок браузера по их названию.

Postby VoidVolker » Sat, 15 Aug 2015, 16:04

Да, точно, еще и SendInput, а это слово в другом плагине - extwords, ссылка в посте.
А вот так можно закрыть нежелательные вкладки:
Code: Select all
#( Задача_094414082015
NoActive
SingleInstance
CREATE StartTab 256 ALLOT
Action:
\ Хром должен быть активным окном
GetForegroundWindow TO WIN-HWND
Ctrl( [CHAR] T AKEY )Ctrl
300 PAUSE
WIN-HWND GET-WTEXT StartTab PLACE
Ctrl( Tab )Ctrl
200 PAUSE
BEGIN WIN-HWND GET-WTEXT 2DUP StartTab COUNT COMPARE WHILE \ ( a u -- )
    \ TYPE CR \ На стеке - заголовок вкладки
    SCASE
        S" Вкладка 1" SOF Ctrl( [CHAR] W AKEY )Ctrl ENDSOF
        S" Вкладка 2" SOF Ctrl( [CHAR] W AKEY )Ctrl ENDSOF
        S" Вкладка 3" SOF Ctrl( [CHAR] W AKEY )Ctrl ENDSOF
    ENDSCASE
    Ctrl( Tab )Ctrl
    200 PAUSE
REPEAT
2DROP Ctrl( [CHAR] W AKEY )Ctrl
)#

Или использовать регулярные выражения:
Code: Select all
...
S" /(Вкладка .*)|(.* вкладка.)/" RE-MATCH IF Ctrl( [CHAR] W AKEY )Ctrl  THEN
...
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Закрытие вкладок браузера по их названию.

Postby Aveiro » Sat, 15 Aug 2015, 22:10

Спасибо большое!
Но к сожалению у меня не закрывает вкладки... плагины подключены.
nncron.exe v 1.93b15 Build 1177 08.02.2016
tm.exe v 1.93b15 Build 604 08.02.2016
Aveiro
 
Posts: 222
Joined: Tue, 06 Jul 2010, 21:19

Re: Закрытие вкладок браузера по их названию.

Postby VoidVolker » Sat, 15 Aug 2015, 22:51

Возможно нужны паузы:
Code: Select all
#( Задача_094414082015
NoActive
SingleInstance
CREATE StartTab 256 ALLOT
Action:
\ Хром должен быть активным окном
GetForegroundWindow TO WIN-HWND
Ctrl( [CHAR] T AKEY )Ctrl
300 PAUSE
WIN-HWND GET-WTEXT StartTab PLACE
Ctrl( Tab )Ctrl
200 PAUSE
BEGIN WIN-HWND GET-WTEXT 2DUP StartTab COUNT COMPARE WHILE \ ( a u -- )
    \ TYPE CR \ На стеке - заголовок вкладки
    200 PAUSE
    SCASE
        S" Вкладка 1" SOF Ctrl( [CHAR] W AKEY )Ctrl ENDSOF
        S" Вкладка 2" SOF Ctrl( [CHAR] W AKEY )Ctrl ENDSOF
        S" Вкладка 3" SOF Ctrl( [CHAR] W AKEY )Ctrl ENDSOF
    ENDSCASE
    200 PAUSE
    Ctrl( Tab )Ctrl
REPEAT
2DROP Ctrl( [CHAR] W AKEY )Ctrl
)#
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Закрытие вкладок браузера по их названию.

Postby Aveiro » Sun, 16 Aug 2015, 00:10

Пытаюсь начать от простого -закрыть страницу mail.ru :

Code: Select all
#( Задача_094414082015
NoActive
SingleInstance
CREATE StartTab 256 ALLOT
Action:
\ Хром должен быть активным окном
GetForegroundWindow TO WIN-HWND
Ctrl( [CHAR] T AKEY )Ctrl
300 PAUSE
WIN-HWND GET-WTEXT StartTab PLACE
Ctrl( Tab )Ctrl
200 PAUSE
BEGIN WIN-HWND GET-WTEXT 2DUP StartTab COUNT COMPARE WHILE \ ( a u -- )
    \ TYPE CR \ На стеке - заголовок вкладки
    200 PAUSE
    SCASE
        S" htpps://mail.ru" SOF Ctrl( [CHAR] W AKEY )Ctrl ENDSOF    \  Ищем MAIL.RU
    ENDSCASE
    200 PAUSE
    Ctrl( Tab )Ctrl
REPEAT
2DROP Ctrl( [CHAR] W AKEY )Ctrl
)#


Не закрывает страницу, страницу mail.ru специально создаю и держу открытой :(
nncron.exe v 1.93b15 Build 1177 08.02.2016
tm.exe v 1.93b15 Build 604 08.02.2016
Aveiro
 
Posts: 222
Joined: Tue, 06 Jul 2010, 21:19

Re: Закрытие вкладок браузера по их названию.

Postby Aveiro » Sun, 16 Aug 2015, 15:35

Что не так делаю ? Запускаю задачу - ничего не меняется.Страницы ( вкладки) не закрываются.
nncron.exe v 1.93b15 Build 1177 08.02.2016
tm.exe v 1.93b15 Build 604 08.02.2016
Aveiro
 
Posts: 222
Joined: Tue, 06 Jul 2010, 21:19

Re: Закрытие вкладок браузера по их названию.

Postby VoidVolker » Sun, 16 Aug 2015, 16:12

Ну так заголовок вкладки и урл - разные вещи же. Вообще, логичнее было бы сделать просто плагин для хрома, который закрывает лишее. Или добавить в черный список в фаерволле.
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Закрытие вкладок браузера по их названию.

Postby Aveiro » Sun, 16 Aug 2015, 16:52

VoidVolker wrote:Ну так заголовок вкладки и урл - разные вещи же. Вообще, логичнее было бы сделать просто плагин для хрома, который закрывает лишее. Или добавить в черный список в фаерволле.


Какой плагин, тут задачу то решить не получается )
Мы (я) на любительском уровне )

В общем даже MSG не появляется:

Code: Select all
#( Задача_1
NoActive
SingleInstance
CREATE StartTab 256 ALLOT
Action:
\ Хром должен быть активным окном
GetForegroundWindow TO WIN-HWND
Ctrl( [CHAR] T AKEY )Ctrl
300 PAUSE
WIN-HWND GET-WTEXT StartTab PLACE
Ctrl( Tab )Ctrl
200 PAUSE
BEGIN WIN-HWND GET-WTEXT 2DUP StartTab COUNT COMPARE WHILE \ ( a u -- )
    \ TYPE CR \ На стеке - заголовок вкладки
    200 PAUSE
    SCASE
        MSG: "%GET-WTEXT%"
        RE-MATCH: "%GET-WTEXT%" "/Название вкладки/i"
        IF
          Ctrl( [CHAR] W AKEY )Ctrl 
      THEN
    ENDSCASE
    200 PAUSE
    Ctrl( Tab )Ctrl
REPEAT
2DROP Ctrl( [CHAR] W AKEY )Ctrl
)#
nncron.exe v 1.93b15 Build 1177 08.02.2016
tm.exe v 1.93b15 Build 604 08.02.2016
Aveiro
 
Posts: 222
Joined: Tue, 06 Jul 2010, 21:19

Re: Закрытие вкладок браузера по их названию.

Postby Aveiro » Sun, 16 Aug 2015, 18:03

Еще интересно, почему ничего не выводится в этом простом примере:

Code: Select all
#( _123
NoActive
SingleInstance
fVAR Window_text
Action:
GetForegroundWindow TO WIN-HWND
WIN-HWND GET-WTEXT TO Window_text
MSG: "%Window_text%"
)#
nncron.exe v 1.93b15 Build 1177 08.02.2016
tm.exe v 1.93b15 Build 604 08.02.2016
Aveiro
 
Posts: 222
Joined: Tue, 06 Jul 2010, 21:19

Re: Закрытие вкладок браузера по их названию.

Postby VoidVolker » Sun, 16 Aug 2015, 18:39

Прошу обратить внимание на документацию используемых слов:
Code: Select all
    : GET-WTEXT \ ( hwnd -- a u ) \ Получить текст окна по его хэндлу. Работает и для дочерних окон. Максимальный размер текста - 256 байт.
        PAD 256 ROT 13 SWAP SendMessageA PAD SWAP
    ;

Собственно, как я и говорил - надо просто увеличить паузу. Вот в таком виде у меня все отлично работает:
Code: Select all
#( Задача_094414082015
NoActive
SingleInstance
CREATE StartTab 256 ALLOT
Action:
\ Хром должен быть активным окном
GetForegroundWindow TO WIN-HWND
Ctrl( [CHAR] T AKEY )Ctrl
1000 PAUSE
WIN-HWND GET-WTEXT StartTab PLACE
Ctrl( Tab )Ctrl
500 PAUSE
15  \ отладка - ограничение на число итераций в цикле, а то не найдет вкладку и зациклится
BEGIN
    DUP >R \ Отладка
    WIN-HWND GET-WTEXT 2DUP StartTab COUNT COMPARE
    R> AND \ Отладка
WHILE \ a u \ На стеке - заголовок вкладки
    2DUP TYPE CR \ Отладка
    1000 PAUSE
    SCASE
        S" Google - Google Chrome" SOF Ctrl( [CHAR] W AKEY )Ctrl ENDSOF
        S" Вкладка 2" SOF Ctrl( [CHAR] W AKEY )Ctrl ENDSOF
        S" Вкладка 3" SOF Ctrl( [CHAR] W AKEY )Ctrl ENDSOF
    ENDSCASE
    1000 PAUSE
    Ctrl( Tab )Ctrl
    1-
REPEAT
2DROP DROP
Ctrl( [CHAR] W AKEY )Ctrl
)#

У меня хрому требуется чуть меньше секунды времени на открытие новой вкладки. И это на современном 6 ядерном процессоре и с быстрым ССД диском :/
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Закрытие вкладок браузера по их названию.

Postby Aveiro » Sun, 16 Aug 2015, 20:18

Уже прогресс.
Начинает получаться, правда пока работает не стабильно. В любом случае спасибо за труд и помощь !
Создавать новую вкладку и закрывать ее в конце это часть алгоритма ?

p.s жаль, сейчас два раза подряд закрылись вкладки совсем другие...
nncron.exe v 1.93b15 Build 1177 08.02.2016
tm.exe v 1.93b15 Build 604 08.02.2016
Aveiro
 
Posts: 222
Joined: Tue, 06 Jul 2010, 21:19

Re: Закрытие вкладок браузера по их названию.

Postby VoidVolker » Mon, 17 Aug 2015, 00:38

Да, создает новую вкладку, запоминает заголовок окна и как встретит еще раз этот заголовок - закрывает вкладку и выходит. Отладочное ограничение в 15 вполне можно убрать.
Aveiro wrote:p.s жаль, сейчас два раза подряд закрылись вкладки совсем другие...

Значит, надо увеличить паузу с 1 секунды до двух или даже трех.
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56


Return to nnCron forum (Russian)

Who is online

Users browsing this forum: Exabot [Bot] and 4 guests