Буфер обмена или?

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

Буфер обмена или?

Postby Likvi139 » Tue, 01 Dec 2015, 17:14

Добрый день.
Вопрос к не занятым знатокам nncron'a.
При копировании текста (ячейка с одним словом в Excel) нужно проверить, что было скопировано(т.е. хотел бы обращаться к CLIPBOARD). Если скопировано слово Aaa то делать одно, если слово Bbb то делать другое, а если слова Ccc то делать третье, а если ячейка, откуда нужно копировать оказалась пуста, то четвертое (тут еще один вопрос - как средствами nncron определить пустоту ячейки в excel?)
Хотел сделать эти операции через сравнение содержимого буфера обмена, но не нашел правильного синтаксиса и вообще возможности так сделать.
Likvi139
 
Posts: 8
Joined: Thu, 10 Sep 2015, 17:10

Re: Буфер обмена или?

Postby VoidVolker » Tue, 01 Dec 2015, 20:37

Code: Select all
#( Задача_202601122015
NoActive
SingleInstance
Action:
CLIPBOARD S" AAA" COMPARE 0= IF
    \ AAA
ELSE CLIPBOARD S" BBB" COMPARE 0= IF
    \ BBB"
ELSE CLIPBOARD S" CCC" COMPARE 0= IF
    \ CCC
ELSE CLIPBOARD NIP 0= IF
    \ Пустая строка
ELSE
    \ Все остальные случаи
THEN THEN THEN THEN
)#


С плагином extwords:
Code: Select all
#( Задача_202601122015
NoActive
SingleInstance
Action:
CLIPBOARD SCASE

    S" AAA" SOF

    ENDSOF
   
    S" BBB" SOF

    ENDSOF
   
    S" CCC" SOF

    ENDSOF
   
    S" " SOF

    ENDSOF
   
    2DUP SOF

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

Re: Буфер обмена или?

Postby Likvi139 » Wed, 02 Dec 2015, 09:52

Спасибо! Но отрабатывает только на ААА. На остальное выдает ошибку Image
Не могли бы вы подсказать что не так?
Code: Select all
#( Задача_Clipboard
Time: 2 13 18 9 * 2015
NoActive
NoDel
SingleInstance
Action:
CLIPBOARD
S" AAA" COMPARE 0= IF
    \ AAA
   MSG: "Вариант А"
ELSE S" BBB" COMPARE 0= IF
    \ BBB
   MSG: "Вариант B"
ELSE S" CCC" COMPARE 0= IF
    \ CCC
   MSG: "Вариант С"
ELSE NIP 0= IF
    \ Пустая строка
ELSE
    \ Все остальные случаи
THEN THEN THEN THEN
)#


http://i67.fastpic.ru/big/2015/1202/61/ ... f59161.png
Likvi139
 
Posts: 8
Joined: Thu, 10 Sep 2015, 17:10

Re: Буфер обмена или?

Postby Likvi139 » Wed, 02 Dec 2015, 10:53

Попробовал немного изменить код, вот что вышло. В результате при копировании этого текста он отрабатывает (правда часто после выдает ошибка в стеке Action). Но возникла другая проблема - при копировании ячейки в Excel помимо самого слова в буфере оказывается скрытй символ переноса строки, как его вписать в проверку в nncron'e? чтобы проверял слово+возврат каретки (идет сразу за словом).

Code: Select all
#( Clipboard_3_realtest
Time: 2 13 18 9 * 2015
NoActive
NoDel
SingleInstance
Action:

CLIPBOARD
S" Terminal" COMPARE 0= IF
    \ AAA
   MSG: "Вариант Terminal"
THEN

CLIPBOARD
S" ACD" COMPARE 0= IF
    \ BBB
   MSG: "Вариант ACD"
THEN
   
CLIPBOARD
S" Pickup" COMPARE 0= IF
    \ CCC
   MSG: "Вариант Pickup"
   
ELSE NIP 0= IF
    \ Пустая строка
   MSG: "пусто"
ELSE
    \ Все остальные случаи
   MSG: "другой вариант"
THEN THEN
)#
Likvi139
 
Posts: 8
Joined: Thu, 10 Sep 2015, 17:10

Re: Буфер обмена или?

Postby dothen » Wed, 02 Dec 2015, 11:25

Можно так:
Code: Select all
#( Задача_Clipboard
\ NoActive
SingleInstance
WatchClipboard: "*"
Action:
CLIPBOARD S" AAA" CRLF S+ COMPARE 0=
IF
  MSG: "Вариант А"
ELSE
    CLIPBOARD S" BBB" CRLF S+ COMPARE 0=
    IF
      MSG: "Вариант B"
    ELSE
        CLIPBOARD S" CCC" CRLF S+ COMPARE 0=
        IF
          MSG: "Вариант С"
        ELSE
            CLIPBOARD MsgBox
        THEN
    THEN
THEN
)#

# для проверки
# AAA
# BBB
# CCC
#
dothen
 
Posts: 184
Joined: Mon, 16 Mar 2015, 04:58

Re: Буфер обмена или?

Postby Likvi139 » Wed, 02 Dec 2015, 13:59

dothen, спасибо, тоже работает но не совсем, если там пробел в слове, как записать? а то первые два вариант проходят, а третий, где 2 слова и проблем между ними - нет.
Столкнулся еще с одной проблемой - при использовании вашего варианта Excel ругается - " Не удается очистить буфер обмена. Возможно буфер обмена используется другим приложением"
Likvi139
 
Posts: 8
Joined: Thu, 10 Sep 2015, 17:10

Re: Буфер обмена или?

Postby VoidVolker » Wed, 02 Dec 2015, 16:42

Но отрабатывает только на ААА. На остальное выдает ошибку

Исправил.
Likvi139 wrote:тоже работает но не совсем, если там пробел в слове, как записать? а то первые два вариант проходят, а третий, где 2 слова и проблем между ними - нет.

Как есть:
Code: Select all
S" Фраза с пробелами"

Вероятно там не совсем пробелы или кодировка другая.
Likvi139 wrote:Не удается очистить буфер обмена. Возможно буфер обмена используется другим приложением"

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

Re: Буфер обмена или?

Postby Likvi139 » Wed, 02 Dec 2015, 16:58

Спасибо за ответы, буду пробовать.
VoidVolker, версия ОС - Windows 7 Профессиональная 64 разрядная, МСО - Office 2010, крон - v 1.93b13.
Likvi139
 
Posts: 8
Joined: Thu, 10 Sep 2015, 17:10

Re: Буфер обмена или?

Postby VoidVolker » Wed, 02 Dec 2015, 19:04

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

Re: Буфер обмена или?

Postby dothen » Wed, 02 Dec 2015, 19:40

Likvi139 wrote:...
Столкнулся еще с одной проблемой - при использовании вашего варианта Excel ругается - " Не удается очистить буфер обмена. Возможно буфер обмена используется другим приложением"

Может виноват WatchClipboard:
Code: Select all
#( Задача_Clipboard
\ NoActive
SingleInstance
MonitorResponseTime        \ сохраняем значение в стеке
2000 TO MonitorResponseTime \ устанавливаем новое (2000 мс)
WatchClipboard: "*"
TO MonitorResponseTime     \ возвращаем старое значение
Action:
CLIPBOARD S" AAA" CRLF S+ COMPARE 0=
IF
  MSG: "Вариант А"
ELSE
    CLIPBOARD S" BBB" CRLF S+ COMPARE 0=
    IF
      MSG: "Вариант B"
    ELSE
        CLIPBOARD S" CCC" CRLF S+ COMPARE 0=
        IF
          MSG: "Вариант С"
        ELSE
            CLIPBOARD MsgBox
        THEN
    THEN
THEN
)#

Или совсем убрать WatchClipboard: и проверять буфер обмена (запускать задачу) вручную.
dothen
 
Posts: 184
Joined: Mon, 16 Mar 2015, 04:58


Return to nnCron forum (Russian)

Who is online

Users browsing this forum: No registered users and 1 guest