еще один маленький примерчик
\ 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