Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Чт мар 28, 2024 15:58

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Ответить
Имя пользователя:
Заголовок:
Текст сообщения:
Введите текст вашего сообщения. Длина сообщения в символах не более: 60000

Размер шрифта:
Цвет шрифта
Настройки:
BBCode ВКЛЮЧЕН
[img] ВЫКЛЮЧЕН
[flash] ВЫКЛЮЧЕН
[url] ВКЛЮЧЕН
Смайлики ВЫКЛЮЧЕНЫ
Отключить в этом сообщении BBCode
Не преобразовывать адреса URL в ссылки
Вопрос
Теперь гостю придется вводить здесь пароль. Не от своей учетной записи, а ПАРОЛЬ ДЛЯ ГОСТЯ, получить который можно после регистрации на форуме через ЛС.:
Этот вопрос предназначен для выявления и предотвращения автоматических регистраций.
   

Обзор темы - пример работы с callback вызовом
Автор Сообщение
  Заголовок сообщения:   Ответить с цитатой
еще один маленький примерчик
\ 01.08.2009 ~mOleg
\ Сopyright [C] 2009 mOleg mininoleg@yahoo.com
\ поиск идентификатора консольного окна

os/ import.fts
os/ callback.fts
os/ console.fts
stack/ add.fts

WINAPI: EnumWindows USER32.DLL
WINAPI: GetWindowTextA USER32.DLL
WINAPI: GetCurrentThreadId KERNEL32.DLL

CREATE buff 0x100 ALLOT

\ вернуть строку, идентифицирующую текущий поток
: pid>s ( --> ) GetCurrentThreadId S>D 0x10 {# #S s" thread pid = " HOLDS #> ;

0 VALUE hwnd

\ колбэк функция ищет hwnd консоли
CB: FindOwn ( addr --> flag )
@ TO hwnd
0x100 buff hwnd GetWindowTextA
buff SWAP pid>s COMPARE ;

\ определить hwnd консольного окна
\ в случае успеха hwnd хранит хэндл окна, а Own возвращает 0
\ в случае неуспеха, Own возвращает 1, а hwnd хранит мусор
: Own ( --> 0 | 1 )
pid>s ~title 40 PAUSE
0 FindOwn EnumWindows ;


\ а так можно проверить достоверность hwnd визуально
WINAPI: MoveWindow USER32.DLL
: >ps ( ?? ) D>L 1 100 200 DL> hwnd MoveWindow DROP ;
\ 20 30 >ps
Сообщение Добавлено: Пн авг 03, 2009 22:06
  Заголовок сообщения:   Ответить с цитатой
еще один маленький пример:
\ 01.08.2009 ~mOleg
\ Сopyright [C] 2009 mOleg mininoleg@yahoo.com
\ отображение списка окон в системе

os/ import.fts
os/ callback.fts

WINAPI: EnumWindows USER32.DLL
WINAPI: GetWindowTextA USER32.DLL

CREATE buff 0x100 ALLOT

\ обработчик сообщений
CB: ~windows ( addr --> n )
DUP @ \ --> hwnd
0x100 buff ROT GetWindowTextA
*IF ." \n\rwindow: " buff SWAP TYPE THEN
1 ;

\ отобразить все именованые окна в системе.
: ~WIN ( --> ) 0 ~windows EnumWindows DROP ;

~WIN
Сообщение Добавлено: Сб авг 01, 2009 23:25
  Заголовок сообщения:   Ответить с цитатой
MrYuran писал(а):
То же самое и с мышой проделать можно?

для мыши скорее подойдет другой пример .\samples\win1.fts , хотя, вроде можно как-то это дело через хуки.
Сообщение Добавлено: Пн июл 27, 2009 16:47
  Заголовок сообщения:   Ответить с цитатой
То же самое и с мышой проделать можно?
Сообщение Добавлено: Вс июл 26, 2009 13:45
  Заголовок сообщения:  пример работы с callback вызовом  Ответить с цитатой
вот, ловим комбинации Ctrl+C или Ctrl+Break

\ 17.07.2009 ~mOleg
\ Сopyright [C] 2009 mOleg mininoleg@yahoo.com
\ пример callback обработчика асинхронного события

os/ import.fts
os/ callback.fts

WINAPI: SetConsoleCtrlHandler KERNEL32.DLL

\ обработчик нажатия комбинации Ctrl+C
CB: CtrlHandler ( --> err )
." \bНажата комбинация: "
@ IF ." Ctrl+Break"
ELSE ." Crtl+C"
THEN CR
1 \ вернуть true
\ 0 \ если false, работа системы будет завершена
;

\ установка обработчика комбинации Ctrl+C
: init ( --> )
1 CtrlHandler SetConsoleCtrlHandler
;

init

\ дальше надо нажать комбинацию CTrl+C либо Ctrl+Break
Сообщение Добавлено: Сб июл 25, 2009 21:49

Часовой пояс: UTC + 3 часа [ Летнее время ]


cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB