Действия в неактивном окне приложения

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

Действия в неактивном окне приложения

Postby Alvek » Tue, 29 Mar 2011, 20:59

В поиске не нашол тем связаных с такой задачей: не актифируя окно(фокус) нужно передвинуть в нем мышку и сделать клик по относительно кординат левого верхнего угла програмы. В хелпе нашол функцию только для активных окон. Возможно ли с помозью nnCron выполнять действия не активируя окна? Пример:работая в програме А пользователь делает все что нужно, в програме Б nnCron выполняет действия мышкой и при этом програма А не теряет фокус и пользователь не замечает или это не мешает его работе .
Alvek
 
Posts: 6
Joined: Tue, 29 Mar 2011, 20:46

Re: Действия в неактивном окне приложения

Postby AlikasS » Thu, 31 Mar 2011, 07:39

скрин второй программы покажи и что там надо делать?
User avatar
AlikasS
 
Posts: 1434
Joined: Wed, 28 Jun 2006, 05:39
Location: Khabarovsk

Re: Действия в неактивном окне приложения

Postby Alvek » Thu, 31 Mar 2011, 09:45

Что делать я написал - двигать мышкой по кординатам + клик. Смысл делать скрин програмы если по условию задачи она свернута? (в свернутом браузере Firefox) Что делать в первой програме не принцыпиально, мне нужно чтобы в браузере (програма Б) выполнялись действия при этом он не активировался заменяя собой програму которая была активна до этого.
Вариант активировать бразер и через MOUSE-MOVEW + клик, потом вернуть фокус предведущей програме не подходит, так как все происходит не мгновенно.
Alvek
 
Posts: 6
Joined: Tue, 29 Mar 2011, 20:46

Re: Действия в неактивном окне приложения

Postby AlikasS » Thu, 31 Mar 2011, 15:08

Code: Select all
: PushWindow ( x y h -- ) \ работает
\ нажать окно h в точке x y отностительно его левого верхнего угла
  >R
  16 LSHIFT OR 0 2DUP
  WM_LBUTTONDOWN R@ PostMessageA DROP
  WM_LBUTTONUP R> PostMessageA DROP
;

здесь h - хендл окна,
надо помнить, что окно может быть дочерним,
например, в блокноте поле ввода, это дочернее окно Class: Edit.
User avatar
AlikasS
 
Posts: 1434
Joined: Wed, 28 Jun 2006, 05:39
Location: Khabarovsk

Re: Действия в неактивном окне приложения

Postby Alvek » Thu, 31 Mar 2011, 15:56

Нигде не нашол синтаксиса или примеров PushWindow. nnCron жалуется на ошибку в кронтабе :
Code: Select all
: PushWindow ( 1 1 WIN-HWND )

Где можно почитать пример использования этой команды?
Нашол такую команду только в плагине - win2tray.spf (плагине подключен), подскажите где ошибка на которую указывает nnCron.
Alvek
 
Posts: 6
Joined: Tue, 29 Mar 2011, 20:46

Re: Действия в неактивном окне приложения

Postby AlikasS » Thu, 31 Mar 2011, 16:04

чуть позже напишу
User avatar
AlikasS
 
Posts: 1434
Joined: Wed, 28 Jun 2006, 05:39
Location: Khabarovsk

Re: Действия в неактивном окне приложения

Postby Alvek » Thu, 31 Mar 2011, 16:49

Насколько понял ваш пример это определение нового слова и его действий, изменив код теперь жалуется на строку " WM_LBUTTONDOWN R@ PostMessageA DROP".
Code: Select all
RunOnce
NoDel
Time: 14 15 31 3 * 2011
: PushWindow ( x y h -- ) \ работает

    >R
      16 LSHIFT OR 0 2DUP
      WM_LBUTTONDOWN R@ PostMessageA DROP
      WM_LBUTTONUP R> PostMessageA DROP
    ;
Action:
WIN-EXIST: "firefox.exe"
    PushWindow (1 1 WIN-HWND )
Alvek
 
Posts: 6
Joined: Tue, 29 Mar 2011, 20:46

Re: Действия в неактивном окне приложения

Postby AlikasS » Fri, 01 Apr 2011, 06:19

Alvek wrote:Нигде не нашол синтаксиса или примеров PushWindow. nnCron жалуется на ошибку в кронтабе :
Code: Select all
 PushWindow (  x y h )

Где можно почитать пример использования этой команды?.

в скобках указана стековая нотация ( в каком порядке слово ждет свои параметры на стеке).
более развернутый пример
Code: Select all
<%
WINAPI: PostMessageA user32.dll
: PushWindow ( x y h -- )
\ нажать окно h в точке x y отностительно его левого верхнего угла
  >R
  16 LSHIFT OR 0 2DUP
  WM_LBUTTONDOWN R@ PostMessageA DROP
  WM_LBUTTONUP R> PostMessageA DROP
;

%>
#( кликаем_в_фоновое_приложение
NoActive
0 VALUE ChWin
LoadProfile
Action:
\ запускаем свернутый пайнт
ShowNoActivate ShowMinimized
START-APP: "%FOLDER-WINDOWS%\system32\mspaint.exe"
PROC-ID PROC-WAIT-IDLE \ приостанавливаем задачу до полной загрузки
\ продолжаем работу задачи  поверх пайнта запускаем блокнот
5000 PAUSE
ShowNormal
START-APP: "%FOLDER-WINDOWS%\system32\notepad.exe"
PROC-ID PROC-WAIT-IDLE


\ цикл для окон пайнта
FOR-WINDOWS: "*Paint"
\ цикл по дочернему окну (полю для рисования)
    FOR-CHILD-WINDOWS: "Afx:1000000:8"

WIN-CHILD-HWND TO ChWin \ хендл найденого окна в переменную

50 0 DO \ цикл 50 раз
100 PAUSE
190 RANDOM 10 + \ случайное число от 10 до 200 (для координаты Х)
390 RANDOM 10 + \ случайное число от 10 до 400 (для координаты Y)
ChWin PushWindow \ кликаем

\ эмуляция пользовательского ввода в блокнот (в активное акно)
S" /.*(notepad)|(Блокнот)/i" I N>S S" {ENTER}" S+ WIN-SEND-KEYS ( a-win u-win a-keys u-keys -- )

LOOP \ конец цикла 50 0 DO

    ;FOR-CHILD-WINDOWS
;FOR-WINDOWS
MSG: "эмуляция ввода закончена"
)#
тестировалось на
nncron.exe v 1.93b10 Build 1141 03.12.2009
tm.exe v 1.93b10 Build 569 03.12.2009
Directory: C:\WINDOWS.0\system32\config\SYSTEM~1\AppData\Roaming\nnCron
Windows XP (5.1.2600) Service Pack 3
User avatar
AlikasS
 
Posts: 1434
Joined: Wed, 28 Jun 2006, 05:39
Location: Khabarovsk

Re: Действия в неактивном окне приложения

Postby Alvek » Fri, 01 Apr 2011, 12:33

Ошибка кронтаба в строках :
Code: Select all
WM_LBUTTONDOWN R@ PostMessageA DROP
      WM_LBUTTONUP R> PostMessageA DROP

Остальной код работает с учетом того что PushWindow ничего не выполняет.

тестировалось на
nncron.exe v 1.93b10 Build 1141 03.12.2009
tm.exe v 1.93b10 Build 569 03.12.2009
Directory: C:\Users\Makc\AppData\Roaming\nnCron
Win 7, Service pack 1
Alvek
 
Posts: 6
Joined: Tue, 29 Mar 2011, 20:46

Re: Действия в неактивном окне приложения

Postby AlikasS » Fri, 01 Apr 2011, 12:45

Alvek wrote:Ошибка кронтаба в строках :
Code: Select all
WM_LBUTTONDOWN R@ PostMessageA DROP
      WM_LBUTTONUP R> PostMessageA DROP

Остальной код работает с учетом того что PushWindow ничего не выполняет.

тестировалось на
nncron.exe v 1.93b10 Build 1141 03.12.2009
tm.exe v 1.93b10 Build 569 03.12.2009
Directory: C:\Users\Makc\AppData\Roaming\nnCron
Win 7, Service pack 1

надо подключать виндовые константы,
самое простое скачать в моей подписи
forguiplugins.zip, там и они в том числе подключаются.
Code: Select all
 INCLUDE "plugins\~for-gui\wincon.f"
 INCLUDE "plugins\~for-gui\wfunc.f"

будет время их можно отдельно выложить.
а так вообщем добавится возможность построения своих GUI форм
User avatar
AlikasS
 
Posts: 1434
Joined: Wed, 28 Jun 2006, 05:39
Location: Khabarovsk

Re: Действия в неактивном окне приложения

Postby Alvek » Fri, 01 Apr 2011, 13:44

Подключил плагины, ошибок нет но выполняется так будто клики не происходят. В пейнте пусто, в блокноте тоже.
Alvek
 
Posts: 6
Joined: Tue, 29 Mar 2011, 20:46

Re: Действия в неактивном окне приложения

Postby AlikasS » Sat, 02 Apr 2011, 04:24

Alvek wrote:Подключил плагины, ошибок нет но выполняется так будто клики не происходят. В пейнте пусто, в блокноте тоже.

а самому проверить как называется дочернее окно в win7 у пайнта?
мало того что имя другое, так оно меняется от запуска к запуска.
вот так срабатывает пример
Code: Select all
<%
WINAPI: PostMessageA user32.dll
: PushWindow ( x y h -- )
\ нажать окно h в точке x y отностительно его левого верхнего угла
  >R
  16 LSHIFT OR 0 2DUP
  WM_LBUTTONDOWN R@ PostMessageA DROP
  WM_LBUTTONUP R> PostMessageA DROP
;

%>
#( кликаем_в_фоновое_приложение
NoActive
0 VALUE ChWin
LoadProfile
Action:
\ запускаем свернутый пайнт
ShowNoActivate ShowMinimized
START-APP: "%FOLDER-WINDOWS%\system32\mspaint.exe"
PROC-ID PROC-WAIT-IDLE \ приостанавливаем задачу до полной загрузки
\ продолжаем работу задачи  поверх пайнта запускаем блокнот
5000 PAUSE
ShowNormal
START-APP: "%FOLDER-WINDOWS%\system32\notepad.exe"
PROC-ID PROC-WAIT-IDLE


\ цикл для окон пайнта
FOR-WINDOWS: "*Paint"
\ цикл по дочернему окну (полю для рисования)
    FOR-CHILD-WINDOWS: "Afx:*:8"

WIN-CHILD-HWND TO ChWin \ хендл найденого окна в переменную

50 0 DO \ цикл 50 раз
100 PAUSE
190 RANDOM 10 + \ случайное число от 10 до 200 (для координаты Х)
390 RANDOM 10 + \ случайное число от 10 до 400 (для координаты Y)
ChWin PushWindow \ кликаем

\ эмуляция пользовательского ввода в блокнот (в активное акно)
S" /.*(notepad)|(Блокнот)/i" I N>S S" {ENTER}" S+ WIN-SEND-KEYS ( a-win u-win a-keys u-keys -- )

LOOP \ конец цикла 50 0 DO

    ;FOR-CHILD-WINDOWS
;FOR-WINDOWS
MSG: "эмуляция ввода закончена"
)#
проверено на кроне-приложении
nncron.exe v 1.93b10 Build 1141 03.12.2009
tm.exe v 1.93b10 Build 569 03.12.2009
Directory: C:\Windows\System32\config\SYSTEM~1\AppData\Roaming\nnCron
Windows 7 (6.1.7600)
User avatar
AlikasS
 
Posts: 1434
Joined: Wed, 28 Jun 2006, 05:39
Location: Khabarovsk

Re: Действия в неактивном окне приложения

Postby AlikasS » Sun, 08 May 2011, 17:19

еще прримерчики
Code: Select all
: re { vv hwnd -- } \
\ послат клавишу в окно
      0 vv WM_KEYDOWN  hwnd PostMessageA DROP
      0 vv WM_KEYUP   hwnd PostMessageA DROP
;
13 0x164042C re \ послать ентер в окно 0x164042C
0x9 0x164042C re \ послать tab в окно 0x164042C
User avatar
AlikasS
 
Posts: 1434
Joined: Wed, 28 Jun 2006, 05:39
Location: Khabarovsk

Re: Действия в неактивном окне приложения

Postby AlikasS » Sun, 08 May 2011, 17:20

Code: Select all
: WIN-SM-KEY3  \ ( VK a u -- )  -- ???
  WIN-EXIST?
   IF
     0 SWAP 256 WIN-HWND PostMessageA DROP
   ELSE DROP   THEN
;
Action:
VK_F1 S" *Блокнот*" WIN-SM-KEY3
User avatar
AlikasS
 
Posts: 1434
Joined: Wed, 28 Jun 2006, 05:39
Location: Khabarovsk

Re: Действия в неактивном окне приложения

Postby AlikasS » Sun, 08 May 2011, 17:22

Code: Select all
#( CLASSIC-TASK-#-посылка_в_блокнот_текста-работает
USER-CREATE aTextt 64 USER-ALLOT
NoActive
\ ONLY_USER
: WIN-SM-KEY2  { az uz a u -- }  \ ( az a u -- )  -- ???
az uz  aTextt ZPLACE
a u   WIN-EXIST?
   IF

FOR-CHILD-WINDOWS: "Edit"
      aTextt 0 12 WIN-CHILD-HWND SendMessageA DROP
        ;FOR-CHILD-WINDOWS

  \   0 12 WIN-HWND SendMessageA DROP
  \   100 PAUSE
  \   0xC0000001 SWAP 257 WIN-HWND SendMessageA DROP
   ELSE THEN
;
Action:
S" 123456789asd13- и немного кириллицы" S" *Блокнот*" WIN-SM-KEY2
)#
User avatar
AlikasS
 
Posts: 1434
Joined: Wed, 28 Jun 2006, 05:39
Location: Khabarovsk

Next

Return to nnCron forum (Russian)

Who is online

Users browsing this forum: No registered users and 1 guest