как определить, что окно активно?

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

как определить, что окно активно?

Postby rml77 » Wed, 28 Sep 2011, 23:36

Code: Select all
NoActive
Action:
 WIN-ACTIVATE: "0x48D04FA"
 PAUSE: 1000
 WIN-ACTIVE: "0x48D04FA"
IF
BEEP: 250 500
THEN


win7. данный участок кода делает окно активным и включает звуковой сигнал (в теории). на практике этого не происходит. в чем ошибка?
если вместо WIN-ACTIVE поставить WIN-EXIST, то все работает как надо (т.е. если окно существует, то пищит, если не существует, то молчит).
как еще можно проверить активно окно или нет?
rml77
 
Posts: 7
Joined: Fri, 16 Sep 2011, 00:42

Re: как определить, что окно активно?

Postby noob2k6 » Thu, 29 Sep 2011, 08:10

rml77 wrote:если вместо WIN-ACTIVE поставить WIN-EXIST, то все работает как надо (т.е. если окно существует, то пищит, если не существует, то молчит).
как еще можно проверить активно окно или нет?

Попробуйте так:
Code: Select all
NoActive
Action:
S" 0x48D04FA" WIN-EXIST?
IF
   WIN-HWND WIN-ACTIVATE
   1000 PAUSE
   WIN-HWND WIN-ACTIVE?
   IF
      250 500 BEEP
   THEN
THEN
noob2k6
 
Posts: 123
Joined: Thu, 01 Jun 2006, 06:30

Re: как определить, что окно активно?

Postby makrus » Thu, 29 Sep 2011, 10:28

rml77
как еще можно проверить активно окно или нет?

Переменная %ACTIVE-WINDOW% содержит заголовок активного окна
все познается в сравнении
makrus
 
Posts: 336
Joined: Mon, 12 Jul 2004, 14:46
Location: Волгоград

Re: как определить, что окно активно?

Postby rml77 » Thu, 29 Sep 2011, 12:28

все таки проблема в функции WIN-ACTIVE

Code: Select all
VARIABLE X
Action:
 WIN-ACTIVATE: "0x48D04FA"
 PAUSE: 1000
 WIN-ACTIVE: "0x48D04FA" X !
 MSG: "SV = %X @%"
 MSG: "SX = %ACTIVE-WINDOW%"


первое сообщение (SV) выводит 0, хотя должно -1 :(
второе сообщение (SX) выводит пустую стороку
rml77
 
Posts: 7
Joined: Fri, 16 Sep 2011, 00:42

Re: как определить, что окно активно?

Postby elos » Thu, 29 Sep 2011, 13:47

Например:
Code: Select all
#( test20110929
\ NoActive
Action:
\ WIN-ACTIVATE: "/Word/"
\ PAUSE: 1000
WIN-ACTIVE: "/Word/"
IF
  MSG: "АКТИВНО"
ELSE
  MSG: "НЕактивно"
THEN
)#
отрабатывает правильно. При попытке подставить вместо регекспа handle - постоянно "НЕактивно". Может не тот handle беру? Я как-то склоняюсь к применению класса окна (если оно не повторяется при любых ситуациях) или регэкспа заголовка окна.

Мы же не знаем принцип работы программы. Предположим, реализуем с помошью hint часы на экране. Первый хинт с первой секундой - это окно с первым уникальным хендлом. Второй хинт со вторым уникальным хендлом накладывается поверх - можно уничтожать первый хинт. Для нас визуально ничего не изменилось (кроме цифр), но окно то hint-а уже другое...

Или под хранение хендла надо использовать 2VARIABLE - какого он размера в действительности?
elos
 
Posts: 664
Joined: Tue, 25 Apr 2006, 11:15

Re: как определить, что окно активно?

Postby rml77 » Thu, 29 Sep 2011, 14:00

подставил класс вместо хендла и все заработало :).
всем спасибо :)
rml77
 
Posts: 7
Joined: Fri, 16 Sep 2011, 00:42


Return to nnCron forum (Russian)

Who is online

Users browsing this forum: No registered users and 1 guest

cron