Определение входящего звонка на аналоговый модем

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

Определение входящего звонка на аналоговый модем

Postby SuperChainik » Fri, 24 Feb 2012, 14:13

Здраствуйте! Есть Windows xp и факс-модем с подключенной телефонной линией. Запущена служба факсов. Когда приходит входящий звонок-из трея всплывает окошко. Но ето не важно - а важно то что приходится прикручивать системный звук вручную (Ну чтобы не разговаривать с собеседником через вопли радио. Отсюда вопрос: нельзя ли заставить nncron автоматически приглушать системный звук на время звонка? Для регулировки звука из командной строки есть приложение nircmd.exe - с этим нет проблем. А вот как определить входящий звонок средствами nncron - чото лыжи не едут у меня. Чтото наверное с ком портом нада делать....
Был бы благодарен уважаемым форумчанам за любую подсказку - хотябы в каком направлении копать?
Спасибо
SuperChainik
 
Posts: 6
Joined: Fri, 24 Feb 2012, 14:00

Re: Определение входящего звонка на аналоговый модем

Postby Morituruz » Fri, 24 Feb 2012, 14:18

Я так понимаю, всплывает баллон:
viewtopic.php?t=10119&p=22880
Может есть возможность настроить модемный софт, чтобы выходило сообщение или окошко, их проще отловить.

Регулировка звука:
http://nncron.ru/help/RU/commands/sounds.htm
User avatar
Morituruz
 
Posts: 727
Joined: Sun, 14 Oct 2007, 01:51

Re: Определение входящего звонка на аналоговый модем

Postby SuperChainik » Fri, 24 Feb 2012, 14:50

Ага, баллон.
Содержит текст: "Щелкните здесь, чтобы ответить на этот звонок как на вызов факса".

Будет ли работать такая конструкция:

#( test_watchwindow
WatchWindow: "*Щелкните здесь, чтобы ответить на этот звонок как на вызов факса*"
Action:
\ ... выполняем работу
)#

Спасибо.
SuperChainik
 
Posts: 6
Joined: Fri, 24 Feb 2012, 14:00

Re: Определение входящего звонка на аналоговый модем

Postby Morituruz » Fri, 24 Feb 2012, 15:19

К сожалению, у меня почти нет возможности протестировать.

Вызвать balloon можно и из из nncron:
http://www.nncron.ru/help/RU/commands/m ... tm#BALLOON
User avatar
Morituruz
 
Posts: 727
Joined: Sun, 14 Oct 2007, 01:51

Re: Определение входящего звонка на аналоговый модем

Postby VoidVolker » Fri, 24 Feb 2012, 17:50

Вот так можно отловить всплывающую подсказку:
Code: Select all
#( Задача_184524022012
SingleInstance
: ThatBalloon?   \ ( -- ? )
  WIN-HWND GET-WTEXT
  S" Щелкните здесь, чтобы ответить на этот звонок как на вызов факса"
  COMPARE 0=
;
Action:
BEGIN
  FOR-WINDOWS: "tooltips_class32"
    ThatBalloon? IF
      <... работа ...>
      BEGIN  ThatBalloon?  WHILE  1000 PAUSE  REPEAT
    THEN
  ;FOR-WINDOWS
  100 PAUSE
AGAIN DROP
)#

В данном случае необходимо использовать точный заголовок - т.к. идет полное сравнение. Если в этом нет необходимости, то вместо COMPARE можно использовать SEARCH - тогда поиск можно вести по слову или фразе в заголовке окна. Тогда вот так:
Code: Select all
#( Задача_185024022012
SingleInstance
: ThatBalloon?   \ ( -- ? )
  WIN-HWND GET-WTEXT
  S" Щелкните здесь"
  SEARCH NIP NIP
;
Action:
BEGIN
  FOR-WINDOWS: "tooltips_class32"
    ThatBalloon? IF
      <... работа ...>
      BEGIN  ThatBalloon?  WHILE  1000 PAUSE  REPEAT
    THEN
  ;FOR-WINDOWS
  100 PAUSE
AGAIN DROP
)#

А, чуть не забыл, вот определение GET-WTEXT - для тех, у кого еще нет:
Code: Select all
: GET-WTEXT \ ( hwnd -- a u ) \ Получить текст окна по его хэндлу. Работает и для дочерних окон
  PAD 256 ROT 13 SWAP SendMessageA PAD SWAP
;
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Определение входящего звонка на аналоговый модем

Postby SuperChainik » Mon, 27 Feb 2012, 07:31

Открываю nncron.tab блокнотом, добавляю в конец секцию:

Code: Select all
#( Задача_185024022012
SingleInstance
: ThatBalloon?   \ ( -- ? )
  WIN-HWND GET-WTEXT
  S" Щелкните здесь"
  SEARCH NIP NIP
;
Action:
BEGIN
  FOR-WINDOWS: "tooltips_class32"
    ThatBalloon? IF
      <... работа ...>
      BEGIN  ThatBalloon?  WHILE  1000 PAUSE  REPEAT
    THEN
  ;FOR-WINDOWS
  100 PAUSE
AGAIN DROP
)#


Сохраняю и получаю в ответ:
Задача_185024022012 Синтаксическая ошибка в кронтабе!!!. Кронтаб: C:\Program Files\nnCron\nncron.tab. Line: 265


265 строка это :
Code: Select all
WIN-HWND GET-WTEXT


Как бэ интуитивно понимаю , что нужно сделать по предыдущему совету:

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


но как это сделать - нинаю.
Пожалуйста подскажите!
Спасибо!
SuperChainik
 
Posts: 6
Joined: Fri, 24 Feb 2012, 14:00

Re: Определение входящего звонка на аналоговый модем

Postby SuperChainik » Mon, 27 Feb 2012, 08:09

Добавил вот так (интуитивно):

Code: Select all
#( Задача_185024022012
SingleInstance
: GET-WTEXT \ ( hwnd -- a u ) \ Получить текст окна по его хэндлу. Работает и для дочерних окон
PAD 256 ROT 13 SWAP SendMessageA PAD SWAP
: ThatBalloon? \ ( -- ? )
WIN-HWND GET-WTEXT
S" Щелкните здесь"
SEARCH NIP NIP
;
Action:
BEGIN
FOR-WINDOWS: "tooltips_class32"
ThatBalloon? IF
<... работа ...>
BEGIN ThatBalloon? WHILE 1000 PAUSE REPEAT
THEN
;FOR-WINDOWS
100 PAUSE
AGAIN DROP
)#


Получаю:
Задача_185024022012 Синтаксическая ошибка в кронтабе!!!. Кронтаб: C:\Program Files\nnCron\nncron.tab. Line: 266

Строка 266 это:
Code: Select all
: ThatBalloon? \ ( -- ? )

Нид нехп!!!!
SuperChainik
 
Posts: 6
Joined: Fri, 24 Feb 2012, 14:00

Re: Определение входящего звонка на аналоговый модем

Postby SuperChainik » Mon, 27 Feb 2012, 08:14

Сделал так:

Code: Select all
#( Задача_185024022012
SingleInstance
: GET-WTEXT \ ( hwnd -- a u ) \ Получить текст окна по его хэндлу. Работает и для дочерних окон
PAD 256 ROT 13 SWAP SendMessageA PAD SWAP
;
: ThatBalloon? \ ( -- ? )
WIN-HWND GET-WTEXT
S" Щелкните здесь"
SEARCH NIP NIP
;
Action:
BEGIN
FOR-WINDOWS: "tooltips_class32"
ThatBalloon? IF
<... работа ...>
BEGIN ThatBalloon? WHILE 1000 PAUSE REPEAT
THEN
;FOR-WINDOWS
100 PAUSE
AGAIN DROP
)#


Получил:
Задача_185024022012 Синтаксическая ошибка в кронтабе!!!. Кронтаб: C:\Program Files\nnCron\nncron.tab. Line: 276


Строка 276 это:
Code: Select all
 <... работа ...>


А когда закрываеш это окно то сообщение:
CRONTAB LOADING.В стеке мусор(28)


По прежнему нид хелп
SuperChainik
 
Posts: 6
Joined: Fri, 24 Feb 2012, 14:00

Re: Определение входящего звонка на аналоговый модем

Postby VoidVolker » Mon, 27 Feb 2012, 16:50

SuperChainik, для кода следует использовать тег code, а для цитат quote.

Code: Select all
<... работа ...>

Подразумевается, что в этой секции располагается пользовательский код, т.е. действие, которое необходимо выполнить. А сама строчка не является кодом.
Code: Select all
#( Задача_185024022012
SingleInstance

: GET-WTEXT \ ( hwnd -- a u ) \ Получить текст окна по его хэндлу. Работает и для дочерних окон
  PAD 256 ROT 13 SWAP SendMessageA PAD SWAP
;

: ThatBalloon?   \ ( -- ? )
  WIN-HWND GET-WTEXT
  S" Щелкните здесь"
  SEARCH NIP NIP
;

Action:
BEGIN
  FOR-WINDOWS: "tooltips_class32"
    ThatBalloon? IF
      10 MIXER-VOLUME!       \ Устанавливаем громкость в 10%
      BEGIN  ThatBalloon?  WHILE  1000 PAUSE  REPEAT
    THEN
  ;FOR-WINDOWS
  100 PAUSE
AGAIN DROP
)#
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Определение входящего звонка на аналоговый модем

Postby SuperChainik » Tue, 28 Feb 2012, 07:42

Спасибо за помощь, я мрачно тупил.
Все работает.
Еще раз спасибо за квалифицированую помощь
SuperChainik
 
Posts: 6
Joined: Fri, 24 Feb 2012, 14:00


Return to nnCron forum (Russian)

Who is online

Users browsing this forum: Google [Bot] and 1 guest

cron