Точка на экране

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

Postby SaMM » Tue, 13 Nov 2007, 13:38

Yury Zhukov wrote:Все-таки замечательная вещь стек возвратов, надо будет приноровиться к нему.

Если-бы его можно было еще и в циклах использовать...
SaMM
 
Posts: 236
Joined: Fri, 25 Aug 2006, 12:33

Postby Nicholas_Nemtsev » Tue, 13 Nov 2007, 16:03

В цикле BEGIN WHILE REPEAT вообще нет ограничений.
В цикле DO LOOP тоже можно, но надо понимать, что делаешь и не пытаться забирать значения положенные вне цикла, хотя тоже можно, если знаешь, что делаешь.
Nicholas Nemtsev
User avatar
Nicholas_Nemtsev
Site Admin
 
Posts: 857
Joined: Thu, 01 Jul 2004, 22:25
Location: Псков

Postby VoidVolker » Tue, 13 Nov 2007, 18:40

P.S. А что со скриншотами?

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

Postby Yury Zhukov » Tue, 13 Nov 2007, 18:52

VoidVolker wrote:Думаю таки надо для этого копаться в мсдн. Получив весь массив значений цветов, его легко можно будет сохранить в бмп.

А мое решение с metafile чем не устраивает, если не секрет?
Нас невозможно сбить с пути,
Нам пофигу куда идти.
Yury Zhukov
 
Posts: 243
Joined: Thu, 16 Jun 2005, 09:22
Location: Москва

Postby Евгений По » Mon, 26 Nov 2007, 22:50

Народ, помогите плз...
Ну не могу я ничего сделать... Я недавно начал на nnCron'е лобать.
Всяко перепробовал ваши варианты, но пока для меня это частично птичий язык..
Можете дать вариант программы возвращающей цвет точки на экране, например, с позицией 100х100?
Такой вариант, чтобы я его мог скопипастить в блокноте в кронтаб и воспользоваться. А потом я уже вариант разовью и настрою под себя. А то, даже начать не получается...
Евгений По
 
Posts: 4
Joined: Mon, 26 Nov 2007, 22:38

Postby VoidVolker » Mon, 26 Nov 2007, 23:18

А мое решение с metafile чем не устраивает, если не секрет?

:o Это где такое? Что-то я не замечал его нигде...
Аааа, вот это:
HDC mdc, sdc;
sdc = GetWindowDC(GetDesktopWindow());
mdc = CreateEnhMetaFile(sdc, "c:\\screenshot.emf", NULL, NULL);
BitBlt(mdc, 0, 0, GetDeviceCaps(sdc, DESKTOPHORZRES), GetDeviceCaps(sdc, DESKTOPVERTRES), sdc, 0, 0, SRCCOPY);
ReleaseDC(GetDesktopWindow(), sdc);
DeleteEnhMetaFile(CloseEnhMetaFile(mdc));

И как это пользовать?
Евгений По
Code: Select all
#( Задача294882
NoActive
WINAPI: GetPixel gdi32.dll
: GET-PIXEL  ( x y -- RGB )
  SWAP GetDesktopWindow DUP >R GetWindowDC DUP >R GetPixel R> R> ReleaseDC DROP ;
Action:
100 100 GET-PIXEL
N>H MsgBox
)#

24.10.09 Исправлен баг в GET-PIXEL.
Last edited by VoidVolker on Sat, 24 Oct 2009, 08:14, edited 1 time in total.
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Postby Евгений По » Mon, 26 Nov 2007, 23:30

VoidVolker
Code: Select all
#( Задача294882
NoActive
WINAPI: GetPixel gdi32.dll
: GET-PIXEL  ( x y -- RGB )
  GetDesktopWindow DUP >R GetWindowDC DUP >R GetPixel R> R> ReleaseDC DROP ;
Action:
100 100 GET-PIXEL
N>H MsgBox
)#

Пишет "Синтаксическая ошибка в строке.." (там, где GetDesktopWindow DUP >R GetWindowDC DUP >R GetPixel R> R> ReleaseDC DROP)
Евгений По
 
Posts: 4
Joined: Mon, 26 Nov 2007, 22:38

Postby Евгений По » Tue, 27 Nov 2007, 00:03

Разобрался сам с ошибкой - нужно подключить плагин OSD.SPF
Теперь при выполнении задачи выскакивает сообщение вида:
"0TASK%[missed]%: Задача294882"
Где, я так понял, первая цифра и есть число отражающее цвет точки. Спасибо большое. Дальше постараюсь разобраться сам.
Евгений По
 
Posts: 4
Joined: Mon, 26 Nov 2007, 22:38

Postby Yury Zhukov » Tue, 27 Nov 2007, 09:31

VoidVolker wrote:
HDC mdc, sdc;
sdc = GetWindowDC(GetDesktopWindow());
mdc = CreateEnhMetaFile(sdc, "c:\\screenshot.emf", NULL, NULL);
BitBlt(mdc, 0, 0, GetDeviceCaps(sdc, DESKTOPHORZRES), GetDeviceCaps(sdc, DESKTOPVERTRES), sdc, 0, 0, SRCCOPY);
ReleaseDC(GetDesktopWindow(), sdc);
DeleteEnhMetaFile(CloseEnhMetaFile(mdc));

И как это пользовать?

Это чистый WinAPI, а в файле c:\screenshot.emf остается скриншот экрана.
Нас невозможно сбить с пути,
Нам пофигу куда идти.
Yury Zhukov
 
Posts: 243
Joined: Thu, 16 Jun 2005, 09:22
Location: Москва

Postby VoidVolker » Tue, 27 Nov 2007, 16:36

Евгений По wrote:Теперь при выполнении задачи выскакивает сообщение вида:
"0TASK%[missed]%: Задача294882"
Где, я так понял, первая цифра и есть число отражающее цвет точки. Спасибо большое. Дальше постараюсь разобраться сам.

Code: Select all
#( Задача294882
NoActive
WINAPI: GetPixel gdi32.dll
: GET-PIXEL  ( x y -- RGB )
  SWAP GetDesktopWindow DUP >R GetWindowDC DUP >R GetPixel R> R> ReleaseDC DROP ;
Action:
100 100 GET-PIXEL
HEX DUP .  \ Вывод на консоль
N>H HINT
)#

24.10.09 Исправлен баг в GET-PIXEL.
Это чистый WinAPI, а в файле c:\screenshot.emf остается скриншот экрана.

Не, я все-таки не понимаю как это использовать.
Last edited by VoidVolker on Sat, 24 Oct 2009, 08:14, edited 1 time in total.
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Postby Yury Zhukov » Tue, 27 Nov 2007, 17:17

VoidVolker wrote:Не, я все-таки не понимаю как это использовать.

Хорошо, переформулируем вопрос: что понимается под возможностью снятия скриншотов? Что должно в результате получиться?
Нас невозможно сбить с пути,
Нам пофигу куда идти.
Yury Zhukov
 
Posts: 243
Joined: Thu, 16 Jun 2005, 09:22
Location: Москва

Postby roman78 » Wed, 05 Dec 2007, 20:39

Теперь при выполнении задачи выскакивает сообщение вида:
"0TASK%[missed]%: Задача294882"


Code: Select all
#( tt 
NoActive
WINAPI: GetPixel gdi32.dll
: GET-PIXEL  ( x y -- RGB )
  GetDesktopWindow DUP >R GetWindowDC DUP >R GetPixel R> R> ReleaseDC DROP ;
Action:
100 100 GET-PIXEL
N>H S>ZALLOC ASCIIZ> MsgBox
)#
roman78
 
Posts: 57
Joined: Sat, 06 Nov 2004, 20:52

Postby Dark_Jones » Wed, 05 Dec 2007, 21:33

А в итоге будете обрабатывать скриншот и через ЛПТ-порт выдавать команды светодиодам? Этакий "амбилайт" получится... :D
Dark_Jones
 
Posts: 414
Joined: Thu, 09 Nov 2006, 00:43
Location: Russia, S.Peterburg

Postby Евгений По » Thu, 06 Dec 2007, 19:03

Yury Zhukov wrote:Заинтересовался снятием скриншотов через API. Вот что получилось:
Code: Select all
HDC mdc, sdc;
sdc = GetWindowDC(GetDesktopWindow());
mdc = CreateEnhMetaFile(sdc, "c:\\screenshot.emf", NULL, NULL);
BitBlt(mdc, 0, 0, GetDeviceCaps(sdc, DESKTOPHORZRES), GetDeviceCaps(sdc, DESKTOPVERTRES), sdc, 0, 0, SRCCOPY);
ReleaseDC(GetDesktopWindow(), sdc);
DeleteEnhMetaFile(CloseEnhMetaFile(mdc));

В файле c:\screenshot.emf будет изображение. Одна проблема: почему-то не работает с несколькими мониторами, выдает снимок только основного :(


Скопировал в кронтаб - выдает ошибку сразу на первой строке... я не подключил какието плагины?
Евгений По
 
Posts: 4
Joined: Mon, 26 Nov 2007, 22:38

Postby Yury Zhukov » Thu, 06 Dec 2007, 19:24

Это было не на форте....
Code: Select all
#( test_screenshot
NoLog
NoActive
WINAPI: CreateEnhMetaFileA gdi32.dll
WINAPI: CloseEnhMetaFile gdi32.dll
WINAPI: DeleteEnhMetaFile gdi32.dll
WINAPI: BitBlt gdi32.dll
WINAPI: GetDeviceCaps gdi32.dll
VARIABLE mdc
VARIABLE sdc
Action:
\ HDC mdc, sdc;
\ sdc = GetWindowDC(GetDesktopWindow());
  GetDesktopWindow GetWindowDC sdc !

\ mdc = CreateEnhMetaFile(sdc, "c:\\screenshot.emf", NULL, NULL);
  0 0 Z" c:\\screenshot.emf" sdc @ CreateEnhMetaFileA mdc !

\ BitBlt(mdc, 0, 0, GetDeviceCaps(sdc, DESKTOPHORZRES), GetDeviceCaps(sdc, DESKTOPVERTRES), sdc, 0, 0, SRCCOPY);
  13369376 0 0 sdc @ 10 sdc @ GetDeviceCaps 8 sdc @ GetDeviceCaps 0 0 mdc @ BitBlt DROP

\ ReleaseDC(GetDesktopWindow(), sdc);
  sdc @ GetDesktopWindow ReleaseDC DROP

\ DeleteEnhMetaFile(CloseEnhMetaFile(mdc));
  mdc @ CloseEnhMetaFile DeleteEnhMetaFile DROP
)#
Нас невозможно сбить с пути,
Нам пофигу куда идти.
Yury Zhukov
 
Posts: 243
Joined: Thu, 16 Jun 2005, 09:22
Location: Москва

PreviousNext

Return to nnCron forum (Russian)

Who is online

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