home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 July / CHIP_CD_2004-07.iso / software / nncron_hit / files / nncron189.exe / plugins / windows.spf < prev    next >
Text File  |  2003-10-15  |  2KB  |  91 lines

  1. \ File:         windows.spf
  2. \ Author:       Nicholas Nemtsev, Valery Kondakoff
  3. \ Date:         25.06.2003 (TOPMOST? added)
  4. \ Description:  Useful words for windows manipulation
  5.  
  6. \ Usage: <hwnd> VISIBLE?, <hwnd> MINIMIZED?, <hwnd> TOPMOST?
  7. \ Example: 
  8. \         WIN-EXIST: "xxx"
  9. \         IF WIN-HWND VISIBLE? 0=
  10. \            IF WIN-SHOW: "xxx" THEN THEN
  11.  
  12. WINAPI: IsWindowVisible USER32.DLL
  13. WINAPI: IsIconic USER32.DLL
  14. WINAPI: GetWindowLongA USER32.DLL
  15.  
  16. : VISIBLE? ( hwnd -- ?)  IsWindowVisible ;
  17. : MINIMIZED? ( hwnd -- ?)  IsIconic ;
  18.  
  19.  
  20. \ WIN-ENUM  
  21. \ it is obsolete solution - use FOR-WINDOWS: loop to enumerate windows
  22.  
  23. :NONAME { lparam hwnd -- } 
  24.     TRUE
  25.     256 PAD hwnd GetWindowTextA ?DUP 
  26.     IF PAD SWAP lparam CATCH 
  27.         IF 2DROP DROP FALSE THEN
  28.     THEN
  29. ; WNDPROC: WIN-ENUM-PROC
  30.  
  31. : WIN-ENUM ( xt -- )
  32.     ['] WIN-ENUM-PROC EnumWindows DROP
  33. ;
  34.  
  35. \ Usage:
  36. \ : LOG-WIN-TITLE ( a u -- )
  37. \     S" win-title.log" LOG ;
  38. \ ...
  39. \ Action:
  40. \     ['] LOG-WIN-TITLE WIN-ENUM
  41. \ ...
  42.  
  43. Win2k?
  44. [IF]
  45. WINAPI: SetLayeredWindowAttributes USER32.DLL
  46. WINAPI: SetWindowLongA USER32.DLL
  47. WINAPI: GetWindowLongA USER32.DLL
  48.  
  49. 0x00080000 CONSTANT WS_EX_LAYERED
  50. -20        CONSTANT GWL_EXSTYLE
  51.  
  52. : SET-WS-LAYERED { hwnd flag -- }
  53.     GWL_EXSTYLE hwnd GetWindowLongA WS_EX_LAYERED
  54.     flag IF OR ELSE -1 XOR AND THEN
  55.     GWL_EXSTYLE hwnd SetWindowLongA DROP
  56. ;
  57.  
  58. : (WIN-TRANSPARENCY) { hwnd n -- }
  59.     255 n 0 MAX 254 MIN - TO n
  60.     n 255 <
  61.     IF 
  62.         hwnd TRUE SET-WS-LAYERED
  63.         2 n 0 hwnd SetLayeredWindowAttributes DROP 
  64.     ELSE
  65.         hwnd FALSE SET-WS-LAYERED
  66.     THEN
  67. ;    
  68.  
  69. : WIN-TRANSPARENCY { a u n -- }
  70.     a u WIN-EXIST?
  71.     IF
  72.         WIN-HWND n 0 MAX (WIN-TRANSPARENCY)
  73.     THEN ;
  74.  
  75. C" eval-string," FIND NIP
  76. [IF]
  77. : WIN-TRANSPARENCY: 
  78.     eval-string, number, POSTPONE WIN-TRANSPARENCY ; IMMEDIATE 
  79. [THEN]
  80.  
  81. \ Usage:
  82. \   WIN-TRANSPARENCY: win-pattern transparency[0-255]
  83. [THEN]
  84.  
  85. : TOPMOST? { hwnd -- ? } 
  86.   \ GWL_EXSTYLE (-20)
  87.   -20 hwnd GetWindowLongA 
  88.   \ if WS_EX_TOPMOST (8) is included in extended window styles?
  89.   8 AND?
  90. ;
  91.