Hex Artifact Content Вы: nobody
Вход

Artifact 326676e2e66c99f7eb324ced16f2534510facc0a:


0000: ef bb bf 24 65 6e 67 69 6e 65 20 4a 53 63 72 69  ...$engine JScri
0010: 70 74 0d 0a 24 75 6e 61 6d 65 20 77 69 6e 61 70  pt..$uname winap
0020: 69 0d 0a 24 64 6e 61 6d 65 20 d0 91 d0 b8 d0 b1  i..$dname ......
0030: d0 bb d0 b8 d0 be d1 82 d0 b5 d0 ba d0 b0 20 d0  .............. .
0040: b4 d0 be d1 81 d1 82 d1 83 d0 bf d0 b0 20 d0 ba  ............. ..
0050: 20 57 69 6e 41 50 49 20 d0 bf d0 be d1 81 d1 80   WinAPI ........
0060: d0 b5 d0 b4 d1 81 d1 82 d0 b2 d0 be d0 bc 20 64  .............. d
0070: 79 6e 77 72 61 70 78 0d 0a 24 61 64 64 69 6e 20  ynwrapx..$addin 
0080: 73 74 64 6c 69 62 0d 0a 0d 0a 76 61 72 20 61 70  stdlib....var ap
0090: 69 0d 0a 0d 0a 28 66 75 6e 63 74 69 6f 6e 28 29  i....(function()
00a0: 0d 0a 7b 0d 0a 20 20 20 20 74 72 79 7b 0d 0a 20  ..{..    try{.. 
00b0: 20 20 20 61 70 69 20 3d 20 6e 65 77 20 41 63 74     api = new Act
00c0: 69 76 65 58 4f 62 6a 65 63 74 28 22 44 79 6e 61  iveXObject("Dyna
00d0: 6d 69 63 57 72 61 70 70 65 72 58 22 29 0d 0a 20  micWrapperX").. 
00e0: 20 20 20 7d 63 61 74 63 68 28 65 29 0d 0a 20 20     }catch(e)..  
00f0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 4d 65 73    {..        Mes
0100: 73 61 67 65 28 22 77 69 6e 61 70 69 2e 6a 73 3a  sage("winapi.js:
0110: 20 d0 bd d0 b5 20 d1 83 d0 b4 d0 b0 d0 bb d0 be   .... ..........
0120: d1 81 d1 8c 20 d1 81 d0 be d0 b7 d0 b4 d0 b0 d1  .... ...........
0130: 82 d1 8c 20 44 79 6e 61 6d 69 63 57 72 61 70 70  ... DynamicWrapp
0140: 65 72 58 2e 20 22 20 2b 20 65 2e 64 65 73 63 72  erX. " + e.descr
0150: 69 70 74 69 6f 6e 29 0d 0a 20 20 20 20 20 20 20  iption)..       
0160: 20 72 65 74 75 72 6e 0d 0a 20 20 20 20 7d 0d 0a   return..    }..
0170: 20 20 20 20 72 65 67 73 20 3d 20 5b 0d 0a 20 20      regs = [..  
0180: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 6c 69 62    {..        lib
0190: 3a 20 22 55 53 45 52 33 32 2e 44 4c 4c 22 2c 0d  : "USER32.DLL",.
01a0: 0a 20 20 20 20 20 20 20 20 66 75 6e 63 73 3a 5b  .        funcs:[
01b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 5b 22  ..            ["
01c0: 47 65 74 57 69 6e 64 6f 77 52 65 63 74 22 2c 20  GetWindowRect", 
01d0: 22 69 3d 68 70 22 2c 20 22 72 3d 6c 22 5d 2c 0d  "i=hp", "r=l"],.
01e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 5b 22 47  .            ["G
01f0: 65 74 43 6c 69 65 6e 74 52 65 63 74 22 2c 20 22  etClientRect", "
0200: 69 3d 68 70 22 2c 20 22 72 3d 6c 22 5d 2c 0d 0a  i=hp", "r=l"],..
0210: 20 20 20 20 20 20 20 20 20 20 20 20 5b 22 53 65              ["Se
0220: 74 46 6f 63 75 73 22 2c 20 22 69 3d 68 22 2c 20  tFocus", "i=h", 
0230: 22 72 3d 6c 22 5d 2c 0d 0a 20 20 20 20 20 20 20  "r=l"],..       
0240: 20 20 20 20 20 5b 22 47 65 74 46 6f 63 75 73 22       ["GetFocus"
0250: 2c 20 22 72 3d 6c 22 5d 2c 0d 0a 20 20 20 20 20  , "r=l"],..     
0260: 20 20 20 20 20 20 20 5b 22 53 65 6e 64 4d 65 73         ["SendMes
0270: 73 61 67 65 57 22 2c 20 22 69 3d 68 6c 6c 6c 22  sageW", "i=hlll"
0280: 2c 20 22 72 3d 6c 22 5d 2c 0d 0a 20 20 20 20 20  , "r=l"],..     
0290: 20 20 20 20 20 20 20 5b 22 47 65 74 50 61 72 65         ["GetPare
02a0: 6e 74 22 2c 20 22 69 3d 68 22 2c 20 22 72 3d 6c  nt", "i=h", "r=l
02b0: 22 5d 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  "],..           
02c0: 20 5b 22 44 72 61 77 54 65 78 74 57 22 2c 20 22   ["DrawTextW", "
02d0: 69 3d 68 57 6c 70 75 22 2c 20 22 72 3d 6c 22 5d  i=hWlpu", "r=l"]
02e0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 5b  ,..            [
02f0: 22 47 65 74 44 43 22 2c 20 22 69 3d 68 22 2c 20  "GetDC", "i=h", 
0300: 22 72 3d 68 22 5d 2c 0d 0a 20 20 20 20 20 20 20  "r=h"],..       
0310: 20 20 20 20 20 5b 22 52 65 6c 65 61 73 65 44 43       ["ReleaseDC
0320: 22 2c 20 22 69 3d 68 68 22 2c 20 22 72 3d 6c 22  ", "i=hh", "r=l"
0330: 5d 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ],..            
0340: 5b 22 47 65 74 44 65 73 6b 74 6f 70 57 69 6e 64  ["GetDesktopWind
0350: 6f 77 22 2c 20 22 72 3d 6c 22 5d 2c 0d 0a 20 20  ow", "r=l"],..  
0360: 20 20 20 20 20 20 20 20 20 20 5b 22 49 73 43 68            ["IsCh
0370: 69 6c 64 22 2c 20 22 69 3d 68 68 22 2c 20 22 72  ild", "i=hh", "r
0380: 3d 6c 22 5d 2c 0d 0a 20 20 20 20 20 20 20 20 20  =l"],..         
0390: 20 20 20 5b 22 47 65 74 57 69 6e 64 6f 77 22 2c     ["GetWindow",
03a0: 20 22 69 3d 68 6c 22 2c 20 22 72 3d 68 22 5d 2c   "i=hl", "r=h"],
03b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 5b 22  ..            ["
03c0: 49 73 57 69 6e 64 6f 77 56 69 73 69 62 6c 65 22  IsWindowVisible"
03d0: 2c 20 22 69 3d 68 22 2c 20 22 72 3d 6c 22 5d 2c  , "i=h", "r=l"],
03e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 5b 22  ..            ["
03f0: 47 65 74 57 69 6e 64 6f 77 4c 6f 6e 67 22 2c 20  GetWindowLong", 
0400: 22 69 3d 68 6c 22 2c 20 22 72 3d 6c 22 5d 0d 0a  "i=hl", "r=l"]..
0410: 20 20 20 20 20 20 20 20 5d 0d 0a 20 20 20 20 7d          ]..    }
0420: 2c 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  ,..    {..      
0430: 20 20 6c 69 62 3a 20 22 47 44 49 33 32 2e 44 4c    lib: "GDI32.DL
0440: 4c 22 2c 0d 0a 20 20 20 20 20 20 20 20 66 75 6e  L",..        fun
0450: 63 73 3a 5b 0d 0a 20 20 20 20 20 20 20 20 20 20  cs:[..          
0460: 20 20 5b 22 53 65 6c 65 63 74 4f 62 6a 65 63 74    ["SelectObject
0470: 22 2c 20 22 69 3d 68 68 22 2c 20 22 72 3d 6c 22  ", "i=hh", "r=l"
0480: 5d 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ],..            
0490: 5b 22 44 65 6c 65 74 65 4f 62 6a 65 63 74 22 2c  ["DeleteObject",
04a0: 20 22 69 3d 68 22 2c 20 22 72 3d 6c 22 5d 2c 0d   "i=h", "r=l"],.
04b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 5b 22 43  .            ["C
04c0: 72 65 61 74 65 46 6f 6e 74 22 2c 20 22 69 3d 6c  reateFont", "i=l
04d0: 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 77 22 2c 20  llllllllllllw", 
04e0: 22 72 3d 6c 22 5d 2c 0d 0a 20 20 20 20 20 20 20  "r=l"],..       
04f0: 20 20 20 20 20 5b 22 47 65 74 44 65 76 69 63 65       ["GetDevice
0500: 43 61 70 73 22 2c 20 22 69 3d 68 6c 22 2c 20 22  Caps", "i=hl", "
0510: 72 3d 6c 22 5d 0d 0a 20 20 20 20 20 20 20 20 5d  r=l"]..        ]
0520: 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 5d 0d 0a  ..    }..    ]..
0530: 20 20 20 20 66 6f 72 28 76 61 72 20 6b 20 69 6e      for(var k in
0540: 20 72 65 67 73 29 0d 0a 20 20 20 20 7b 0d 0a 20   regs)..    {.. 
0550: 20 20 20 20 20 20 20 66 6f 72 28 76 61 72 20 69         for(var i
0560: 20 69 6e 20 72 65 67 73 5b 6b 5d 2e 66 75 6e 63   in regs[k].func
0570: 73 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  s)..        {.. 
0580: 20 20 20 20 20 20 20 20 20 20 20 69 66 28 72 65             if(re
0590: 67 73 5b 6b 5d 2e 66 75 6e 63 73 5b 69 5d 2e 6c  gs[k].funcs[i].l
05a0: 65 6e 67 74 68 20 3d 3d 20 33 29 0d 0a 20 20 20  ength == 3)..   
05b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 61 70 69               api
05c0: 2e 52 65 67 69 73 74 65 72 28 72 65 67 73 5b 6b  .Register(regs[k
05d0: 5d 2e 6c 69 62 2c 20 72 65 67 73 5b 6b 5d 2e 66  ].lib, regs[k].f
05e0: 75 6e 63 73 5b 69 5d 5b 30 5d 2c 20 72 65 67 73  uncs[i][0], regs
05f0: 5b 6b 5d 2e 66 75 6e 63 73 5b 69 5d 5b 31 5d 2c  [k].funcs[i][1],
0600: 20 72 65 67 73 5b 6b 5d 2e 66 75 6e 63 73 5b 69   regs[k].funcs[i
0610: 5d 5b 32 5d 29 0d 0a 20 20 20 20 20 20 20 20 20  ][2])..         
0620: 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20     else..       
0630: 20 20 20 20 20 20 20 20 20 61 70 69 2e 52 65 67           api.Reg
0640: 69 73 74 65 72 28 72 65 67 73 5b 6b 5d 2e 6c 69  ister(regs[k].li
0650: 62 2c 20 72 65 67 73 5b 6b 5d 2e 66 75 6e 63 73  b, regs[k].funcs
0660: 5b 69 5d 5b 30 5d 2c 20 72 65 67 73 5b 6b 5d 2e  [i][0], regs[k].
0670: 66 75 6e 63 73 5b 69 5d 5b 31 5d 29 0d 0a 20 20  funcs[i][1])..  
0680: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a        }..    }..
0690: 7d 29 28 29 3b 0d 0a 0d 0a 52 65 63 74 20 3d 20  })();....Rect = 
06a0: 73 74 64 6c 69 62 2e 43 6c 61 73 73 2e 65 78 74  stdlib.Class.ext
06b0: 65 6e 64 28 0d 0a 7b 0d 0a 20 20 20 20 63 6f 6e  end(..{..    con
06c0: 73 74 72 75 63 74 3a 20 66 75 6e 63 74 69 6f 6e  struct: function
06d0: 28 6c 2c 20 74 2c 20 72 2c 20 62 29 0d 0a 20 20  (l, t, r, b)..  
06e0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 74 68 69    {..        thi
06f0: 73 2e 6c 65 66 74 20 3d 20 4d 61 74 68 2e 66 6c  s.left = Math.fl
0700: 6f 6f 72 28 6c 29 0d 0a 20 20 20 20 20 20 20 20  oor(l)..        
0710: 74 68 69 73 2e 74 6f 70 20 3d 20 4d 61 74 68 2e  this.top = Math.
0720: 66 6c 6f 6f 72 28 74 29 0d 0a 20 20 20 20 20 20  floor(t)..      
0730: 20 20 74 68 69 73 2e 72 69 67 68 74 20 3d 20 4d    this.right = M
0740: 61 74 68 2e 66 6c 6f 6f 72 28 72 29 0d 0a 20 20  ath.floor(r)..  
0750: 20 20 20 20 20 20 74 68 69 73 2e 62 6f 74 74 6f        this.botto
0760: 6d 20 3d 20 4d 61 74 68 2e 66 6c 6f 6f 72 28 62  m = Math.floor(b
0770: 29 0d 0a 20 20 20 20 7d 2c 0d 0a 20 20 20 20 77  )..    },..    w
0780: 69 64 74 68 3a 20 66 75 6e 63 74 69 6f 6e 28 29  idth: function()
0790: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
07a0: 20 72 65 74 75 72 6e 20 74 68 69 73 2e 72 69 67   return this.rig
07b0: 68 74 20 2d 20 74 68 69 73 2e 6c 65 66 74 0d 0a  ht - this.left..
07c0: 20 20 20 20 7d 2c 0d 0a 20 20 20 20 68 65 69 67      },..    heig
07d0: 68 74 3a 20 66 75 6e 63 74 69 6f 6e 28 29 0d 0a  ht: function()..
07e0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 72      {..        r
07f0: 65 74 75 72 6e 20 74 68 69 73 2e 62 6f 74 74 6f  eturn this.botto
0800: 6d 20 2d 20 74 68 69 73 2e 74 6f 70 0d 0a 20 20  m - this.top..  
0810: 20 20 7d 0d 0a 7d 29 0d 0a 0d 0a 52 65 63 74 41    }..})....RectA
0820: 70 69 20 3d 20 73 74 64 6c 69 62 2e 43 6c 61 73  pi = stdlib.Clas
0830: 73 2e 65 78 74 65 6e 64 28 0d 0a 7b 0d 0a 20 20  s.extend(..{..  
0840: 20 20 63 6f 6e 73 74 72 75 63 74 3a 20 66 75 6e    construct: fun
0850: 63 74 69 6f 6e 28 29 0d 0a 20 20 20 20 7b 0d 0a  ction()..    {..
0860: 20 20 20 20 20 20 20 20 74 68 69 73 2e 6d 65 6d          this.mem
0870: 20 3d 20 61 70 69 2e 53 70 61 63 65 28 31 36 29   = api.Space(16)
0880: 0d 0a 20 20 20 20 7d 2c 0d 0a 20 20 20 20 74 6f  ..    },..    to
0890: 52 65 63 74 4a 53 3a 20 66 75 6e 63 74 69 6f 6e  RectJS: function
08a0: 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  ()..    {..     
08b0: 20 20 20 72 65 74 75 72 6e 20 6e 65 77 20 52 65     return new Re
08c0: 63 74 28 61 70 69 2e 4e 75 6d 47 65 74 28 74 68  ct(api.NumGet(th
08d0: 69 73 2e 6d 65 6d 2c 20 30 2c 20 22 6c 22 29 2c  is.mem, 0, "l"),
08e0: 20 61 70 69 2e 4e 75 6d 47 65 74 28 74 68 69 73   api.NumGet(this
08f0: 2e 6d 65 6d 2c 20 34 2c 20 22 6c 22 29 2c 20 61  .mem, 4, "l"), a
0900: 70 69 2e 4e 75 6d 47 65 74 28 74 68 69 73 2e 6d  pi.NumGet(this.m
0910: 65 6d 2c 20 38 2c 20 22 6c 22 29 2c 20 61 70 69  em, 8, "l"), api
0920: 2e 4e 75 6d 47 65 74 28 74 68 69 73 2e 6d 65 6d  .NumGet(this.mem
0930: 2c 20 31 32 2c 20 22 6c 22 29 29 0d 0a 20 20 20  , 12, "l"))..   
0940: 20 7d 2c 0d 0a 20 20 20 20 66 72 6f 6d 52 65 63   },..    fromRec
0950: 74 4a 53 3a 20 66 75 6e 63 74 69 6f 6e 28 72 63  tJS: function(rc
0960: 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
0970: 20 20 61 70 69 2e 4e 75 6d 50 75 74 28 72 63 2e    api.NumPut(rc.
0980: 6c 65 66 74 2c 20 74 68 69 73 2e 6d 65 6d 2c 20  left, this.mem, 
0990: 30 2c 20 22 6c 22 29 0d 0a 20 20 20 20 20 20 20  0, "l")..       
09a0: 20 61 70 69 2e 4e 75 6d 50 75 74 28 72 63 2e 74   api.NumPut(rc.t
09b0: 6f 70 2c 20 74 68 69 73 2e 6d 65 6d 2c 20 34 2c  op, this.mem, 4,
09c0: 20 22 6c 22 29 0d 0a 20 20 20 20 20 20 20 20 61   "l")..        a
09d0: 70 69 2e 4e 75 6d 50 75 74 28 72 63 2e 72 69 67  pi.NumPut(rc.rig
09e0: 68 74 2c 20 74 68 69 73 2e 6d 65 6d 2c 20 38 2c  ht, this.mem, 8,
09f0: 20 22 6c 22 29 0d 0a 20 20 20 20 20 20 20 20 61   "l")..        a
0a00: 70 69 2e 4e 75 6d 50 75 74 28 72 63 2e 62 6f 74  pi.NumPut(rc.bot
0a10: 74 6f 6d 2c 20 74 68 69 73 2e 6d 65 6d 2c 20 31  tom, this.mem, 1
0a20: 32 2c 20 22 6c 22 29 0d 0a 20 20 20 20 7d 0d 0a  2, "l")..    }..
0a30: 7d 29 0d 0a 0d 0a 66 75 6e 63 74 69 6f 6e 20 47  })....function G
0a40: 65 74 57 69 6e 64 6f 77 52 65 63 74 28 68 77 6e  etWindowRect(hwn
0a50: 64 29 0d 0a 7b 0d 0a 20 20 20 20 76 61 72 20 72  d)..{..    var r
0a60: 65 63 74 20 3d 20 6e 65 77 20 52 65 63 74 41 70  ect = new RectAp
0a70: 69 28 29 0d 0a 20 20 20 20 61 70 69 2e 47 65 74  i()..    api.Get
0a80: 57 69 6e 64 6f 77 52 65 63 74 28 68 77 6e 64 2c  WindowRect(hwnd,
0a90: 20 72 65 63 74 2e 6d 65 6d 29 0d 0a 20 20 20 20   rect.mem)..    
0aa0: 72 65 74 75 72 6e 20 72 65 63 74 2e 74 6f 52 65  return rect.toRe
0ab0: 63 74 4a 53 28 29 0d 0a 7d 0d 0a 0d 0a 66 75 6e  ctJS()..}....fun
0ac0: 63 74 69 6f 6e 20 47 65 74 43 6c 69 65 6e 74 52  ction GetClientR
0ad0: 65 63 74 28 68 77 6e 64 29 0d 0a 7b 0d 0a 20 20  ect(hwnd)..{..  
0ae0: 20 20 76 61 72 20 72 65 63 74 20 3d 20 6e 65 77    var rect = new
0af0: 20 52 65 63 74 41 70 69 28 29 0d 0a 20 20 20 20   RectApi()..    
0b00: 61 70 69 2e 47 65 74 43 6c 69 65 6e 74 52 65 63  api.GetClientRec
0b10: 74 28 68 77 6e 64 2c 20 72 65 63 74 2e 6d 65 6d  t(hwnd, rect.mem
0b20: 29 0d 0a 20 20 20 20 72 65 74 75 72 6e 20 72 65  )..    return re
0b30: 63 74 2e 74 6f 52 65 63 74 4a 53 28 29 0d 0a 7d  ct.toRectJS()..}
0b40: 0d 0a 0d 0a 66 75 6e 63 74 69 6f 6e 20 53 65 74  ....function Set
0b50: 46 6f 63 75 73 28 68 77 6e 64 29 20 20 20 20 20  Focus(hwnd)     
0b60: 20 20 20 20 20 20 20 20 7b 20 72 65 74 75 72 6e          { return
0b70: 20 61 70 69 2e 53 65 74 46 6f 63 75 73 28 68 77   api.SetFocus(hw
0b80: 6e 64 29 20 7d 0d 0a 66 75 6e 63 74 69 6f 6e 20  nd) }..function 
0b90: 47 65 74 46 6f 63 75 73 28 29 20 20 20 20 20 20  GetFocus()      
0ba0: 20 20 20 20 20 20 20 20 20 20 20 7b 20 72 65 74             { ret
0bb0: 75 72 6e 20 61 70 69 2e 47 65 74 46 6f 63 75 73  urn api.GetFocus
0bc0: 28 29 20 7d 0d 0a 66 75 6e 63 74 69 6f 6e 20 47  () }..function G
0bd0: 65 74 50 61 72 65 6e 74 57 69 6e 64 6f 77 28 68  etParentWindow(h
0be0: 77 6e 64 29 20 20 20 20 20 20 7b 20 72 65 74 75  wnd)      { retu
0bf0: 72 6e 20 61 70 69 2e 47 65 74 50 61 72 65 6e 74  rn api.GetParent
0c00: 28 68 77 6e 64 29 20 7d 0d 0a 66 75 6e 63 74 69  (hwnd) }..functi
0c10: 6f 6e 20 49 73 43 68 69 6c 64 28 68 50 61 72 65  on IsChild(hPare
0c20: 6e 74 2c 20 68 57 6e 64 29 20 20 20 20 20 7b 20  nt, hWnd)     { 
0c30: 72 65 74 75 72 6e 20 61 70 69 2e 49 73 43 68 69  return api.IsChi
0c40: 6c 64 28 68 50 61 72 65 6e 74 2c 20 68 57 6e 64  ld(hParent, hWnd
0c50: 29 20 7d 0d 0a 66 75 6e 63 74 69 6f 6e 20 53 65  ) }..function Se
0c60: 6e 64 4d 65 73 73 61 67 65 28 68 77 6e 64 2c 20  ndMessage(hwnd, 
0c70: 6d 73 67 2c 20 77 50 61 72 61 6d 2c 20 6c 50 61  msg, wParam, lPa
0c80: 72 61 6d 29 20 7b 20 72 65 74 75 72 6e 20 61 70  ram) { return ap
0c90: 69 2e 53 65 6e 64 4d 65 73 73 61 67 65 57 28 68  i.SendMessageW(h
0ca0: 77 6e 64 2c 20 6d 73 67 2c 20 77 50 61 72 61 6d  wnd, msg, wParam
0cb0: 2c 20 6c 50 61 72 61 6d 29 20 7d 0d 0a 0d 0a 2f  , lParam) }..../
0cc0: 2f 20 d0 9c d0 b5 d1 82 d0 be d0 b4 20 d0 bf d0  / .......... ...
0cd0: be d0 b7 d0 b2 d0 be d0 bb d1 8f d0 b5 d1 82 20  ............... 
0ce0: d1 81 d0 be d0 b7 d0 b4 d0 b0 d1 82 d1 8c 20 57  .............. W
0cf0: 69 6e 41 50 49 20 d1 88 d1 80 d0 b8 d1 84 d1 82  inAPI ..........
0d00: 20 d0 bf d0 be 20 d0 b4 d0 b0 d0 bd d0 bd d1 8b   .... ..........
0d10: d0 bc 20 31 d0 a1 d0 bd d0 be d0 b3 d0 be 20 d0  .. 1.......... .
0d20: be d0 b1 d1 8a d0 b5 d0 ba d1 82 d0 b0 20 d0 a8  ............. ..
0d30: d1 80 d0 b8 d1 84 d1 82 2c 0d 0a 2f 2f 20 d0 bd  ........,..// ..
0d40: d0 be 20 31 d0 a1 d0 bd d1 8b d0 b9 20 d1 88 d1  .. 1........ ...
0d50: 80 d0 b8 d1 84 d1 82 20 d0 b4 d0 be d0 bb d0 b6  ....... ........
0d60: d0 b5 d0 bd 20 d0 b1 d1 8b d1 82 d1 8c 20 d0 b0  .... ........ ..
0d70: d0 b1 d1 81 d0 be d0 bb d1 8e d1 82 d0 bd d1 8b  ................
0d80: d0 bc 2e 20 d0 92 d0 b5 d0 b4 d0 b5 d1 82 d1 81  ... ............
0d90: d1 8f 20 d0 be d0 b1 d1 89 d0 b8 d0 b9 20 d1 81  .. .......... ..
0da0: d0 bf d0 b8 d1 81 d0 be d0 ba 20 d1 81 d0 be d0  .......... .....
0db0: b7 d0 b4 d0 b0 d0 bd d0 bd d1 8b d1 85 0d 0a 2f  .............../
0dc0: 2f 20 d1 88 d1 80 d0 b8 d1 84 d1 82 d0 be d0 b2  / ..............
0dd0: 2c 20 d1 82 2e d0 b5 2e 20 d0 b5 d1 81 d0 bb d0  , ...... .......
0de0: b8 20 d1 88 d1 80 d0 b8 d1 84 d1 82 20 d1 81 20  . .......... .. 
0df0: d1 82 d0 b0 d0 ba d0 b8 d0 bc d0 b8 20 d0 bf d0  ............ ...
0e00: b0 d1 80 d0 b0 d0 bc d0 b5 d1 82 d1 80 d0 b0 d0  ................
0e10: bc d0 b8 20 d1 83 d0 b6 d0 b5 20 d1 81 d0 be d0  ... ...... .....
0e20: b7 d0 b4 d0 b0 d0 b2 d0 b0 d0 bb d1 81 d1 8f 2c  ...............,
0e30: 20 d1 82 d0 be 0d 0a 2f 2f 20 d0 b2 d0 b5 d1 80   ......// ......
0e40: d0 bd d0 b5 d1 82 20 d1 83 d0 b6 d0 b5 20 d1 81  ...... ...... ..
0e50: d0 be d0 b7 d0 b4 d0 b0 d0 bd d0 bd d1 8b d0 b9  ................
0e60: 20 d1 88 d1 80 d0 b8 d1 84 d1 82 2e 0d 0a 66 75   .............fu
0e70: 6e 63 74 69 6f 6e 20 43 72 65 61 74 65 41 70 69  nction CreateApi
0e80: 46 6f 6e 74 46 72 6f 6d 56 38 46 6f 6e 74 28 66  FontFromV8Font(f
0e90: 6f 6e 74 2c 20 68 64 63 29 0d 0a 7b 0d 0a 20 20  ont, hdc)..{..  
0ea0: 20 20 76 61 72 20 76 38 66 6f 6e 74 20 3d 20 74    var v8font = t
0eb0: 6f 56 38 56 61 6c 75 65 28 66 6f 6e 74 29 0d 0a  oV8Value(font)..
0ec0: 20 20 20 20 69 66 28 76 38 66 6f 6e 74 2e 74 79      if(v8font.ty
0ed0: 70 65 4e 61 6d 65 28 31 29 20 3d 3d 20 22 d0 a8  peName(1) == "..
0ee0: d1 80 d0 b8 d1 84 d1 82 22 29 0d 0a 20 20 20 20  ........")..    
0ef0: 7b 0d 0a 20 20 20 20 20 20 20 20 76 61 72 20 73  {..        var s
0f00: 20 3d 20 76 38 66 6f 6e 74 2e 74 6f 53 74 72 69   = v8font.toStri
0f10: 6e 67 49 6e 74 65 72 6e 61 6c 28 29 2e 73 70 6c  ngInternal().spl
0f20: 69 74 28 27 5c 6e 27 29 5b 31 5d 2e 6d 61 74 63  it('\n')[1].matc
0f30: 68 28 2f 5c 7b 28 2e 2a 29 5c 7d 2f 29 5b 31 5d  h(/\{(.*)\}/)[1]
0f40: 2e 73 70 6c 69 74 28 27 2c 27 29 0d 0a 20 20 20  .split(',')..   
0f50: 20 20 20 20 20 69 66 28 73 5b 31 5d 20 3d 3d 20       if(s[1] == 
0f60: 30 29 20 20 20 2f 2f 20 d0 90 d0 b1 d1 81 d0 be  0)   // ........
0f70: d0 bb d1 8e d1 82 d0 bd d1 8b d0 b9 20 d1 88 d1  ............ ...
0f80: 80 d0 b8 d1 84 d1 82 0d 0a 20 20 20 20 20 20 20  .........       
0f90: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
0fa0: 76 61 72 20 66 6f 6e 74 4b 65 79 20 3d 20 73 2e  var fontKey = s.
0fb0: 76 61 6c 75 65 4f 66 28 29 0d 0a 20 20 20 20 20  valueOf()..     
0fc0: 20 20 20 20 20 20 20 69 66 28 61 72 67 75 6d 65         if(argume
0fd0: 6e 74 73 2e 63 61 6c 6c 65 65 5b 66 6f 6e 74 4b  nts.callee[fontK
0fe0: 65 79 5d 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ey])..          
0ff0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 61 72 67        return arg
1000: 75 6d 65 6e 74 73 2e 63 61 6c 6c 65 65 5b 66 6f  uments.callee[fo
1010: 6e 74 4b 65 79 5d 0d 0a 20 20 20 20 20 20 20 20  ntKey]..        
1020: 20 20 20 20 76 61 72 20 6c 6f 67 70 69 78 65 6c      var logpixel
1030: 73 79 20 3d 20 61 70 69 2e 47 65 74 44 65 76 69  sy = api.GetDevi
1040: 63 65 43 61 70 73 28 68 64 63 2c 20 39 30 29 20  ceCaps(hdc, 90) 
1050: 2f 2f 20 4c 4f 47 50 49 58 45 4c 53 59 0d 0a 20  // LOGPIXELSY.. 
1060: 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 68             var h
1070: 65 69 67 68 74 49 6e 50 69 78 65 6c 73 20 3d 20  eightInPixels = 
1080: 4d 61 74 68 2e 66 6c 6f 6f 72 28 2d 70 61 72 73  Math.floor(-pars
1090: 65 49 6e 74 28 73 5b 33 5d 29 20 2a 20 6c 6f 67  eInt(s[3]) * log
10a0: 70 69 78 65 6c 73 79 20 2f 20 37 32 30 20 2b 20  pixelsy / 720 + 
10b0: 30 2e 35 29 0d 0a 20 20 20 20 20 20 20 20 20 20  0.5)..          
10c0: 20 20 76 61 72 20 66 6f 6e 74 4e 61 6d 65 20 3d    var fontName =
10d0: 20 73 5b 31 36 5d 2e 73 75 62 73 74 72 28 31 2c   s[16].substr(1,
10e0: 20 73 5b 31 36 5d 2e 6c 65 6e 67 74 68 20 2d 20   s[16].length - 
10f0: 32 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  2)..            
1100: 76 61 72 20 66 6f 6e 74 20 3d 20 61 70 69 2e 43  var font = api.C
1110: 72 65 61 74 65 46 6f 6e 74 28 68 65 69 67 68 74  reateFont(height
1120: 49 6e 50 69 78 65 6c 73 2c 0d 0a 20 20 20 20 20  InPixels,..     
1130: 20 20 20 20 20 20 20 20 20 20 20 70 61 72 73 65             parse
1140: 49 6e 74 28 73 5b 34 5d 29 2c 0d 0a 20 20 20 20  Int(s[4]),..    
1150: 20 20 20 20 20 20 20 20 20 20 20 20 70 61 72 73              pars
1160: 65 49 6e 74 28 73 5b 35 5d 29 2c 0d 0a 20 20 20  eInt(s[5]),..   
1170: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 61 72               par
1180: 73 65 49 6e 74 28 73 5b 36 5d 29 2c 0d 0a 20 20  seInt(s[6]),..  
1190: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 61                pa
11a0: 72 73 65 49 6e 74 28 73 5b 37 5d 29 2c 0d 0a 20  rseInt(s[7]),.. 
11b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
11c0: 61 72 73 65 49 6e 74 28 73 5b 38 5d 29 2c 0d 0a  arseInt(s[8]),..
11d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11e0: 70 61 72 73 65 49 6e 74 28 73 5b 39 5d 29 2c 0d  parseInt(s[9]),.
11f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1200: 20 70 61 72 73 65 49 6e 74 28 73 5b 31 30 5d 29   parseInt(s[10])
1210: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
1220: 20 20 20 70 61 72 73 65 49 6e 74 28 73 5b 31 31     parseInt(s[11
1230: 5d 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ]),..           
1240: 20 20 20 20 20 70 61 72 73 65 49 6e 74 28 73 5b       parseInt(s[
1250: 31 32 5d 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  12]),..         
1260: 20 20 20 20 20 20 20 70 61 72 73 65 49 6e 74 28         parseInt(
1270: 73 5b 31 33 5d 29 2c 0d 0a 20 20 20 20 20 20 20  s[13]),..       
1280: 20 20 20 20 20 20 20 20 20 70 61 72 73 65 49 6e           parseIn
1290: 74 28 73 5b 31 34 5d 29 2c 0d 0a 20 20 20 20 20  t(s[14]),..     
12a0: 20 20 20 20 20 20 20 20 20 20 20 70 61 72 73 65             parse
12b0: 49 6e 74 28 73 5b 31 35 5d 29 2c 0d 0a 20 20 20  Int(s[15]),..   
12c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 6e               fon
12d0: 74 4e 61 6d 65 29 0d 0a 20 20 20 20 20 20 20 20  tName)..        
12e0: 20 20 20 20 61 72 67 75 6d 65 6e 74 73 2e 63 61      arguments.ca
12f0: 6c 6c 65 65 5b 66 6f 6e 74 4b 65 79 5d 20 3d 20  llee[fontKey] = 
1300: 66 6f 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20  font..          
1310: 20 20 72 65 74 75 72 6e 20 66 6f 6e 74 0d 0a 20    return font.. 
1320: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d         }..    }.
1330: 0a 20 20 20 20 72 65 74 75 72 6e 20 30 0d 0a 7d  .    return 0..}
1340: 0d 0a 0d 0a 66 75 6e 63 74 69 6f 6e 20 44 72 61  ....function Dra
1350: 77 54 65 78 74 28 68 64 63 2c 20 74 65 78 74 2c  wText(hdc, text,
1360: 20 72 65 63 74 2c 20 66 6f 72 6d 61 74 29 0d 0a   rect, format)..
1370: 7b 0d 0a 20 20 20 20 76 61 72 20 72 63 20 3d 20  {..    var rc = 
1380: 6e 65 77 20 52 65 63 74 41 70 69 28 29 0d 0a 20  new RectApi().. 
1390: 20 20 20 72 63 2e 66 72 6f 6d 52 65 63 74 4a 53     rc.fromRectJS
13a0: 28 72 65 63 74 29 0d 0a 20 20 20 20 76 61 72 20  (rect)..    var 
13b0: 63 6f 75 6e 74 20 3d 20 74 65 78 74 2e 6c 65 6e  count = text.len
13c0: 67 74 68 0d 0a 20 20 20 20 76 61 72 20 72 65 74  gth..    var ret
13d0: 20 3d 20 61 70 69 2e 44 72 61 77 54 65 78 74 57   = api.DrawTextW
13e0: 28 68 64 63 2c 20 74 65 78 74 2c 20 63 6f 75 6e  (hdc, text, coun
13f0: 74 2c 20 72 63 2e 6d 65 6d 2c 20 66 6f 72 6d 61  t, rc.mem, forma
1400: 74 29 0d 0a 20 20 20 20 72 65 74 75 72 6e 20 7b  t)..    return {
1410: 72 65 73 75 6c 74 3a 20 72 65 74 2c 20 74 65 78  result: ret, tex
1420: 74 3a 20 74 65 78 74 2c 20 72 65 63 74 3a 20 72  t: text, rect: r
1430: 63 2e 74 6f 52 65 63 74 4a 53 28 29 7d 0d 0a 7d  c.toRectJS()}..}
1440: 0d 0a 0d 0a 66 75 6e 63 74 69 6f 6e 20 47 65 74  ....function Get
1450: 44 43 28 68 77 6e 64 29 20 20 20 20 20 20 20 20  DC(hwnd)        
1460: 20 20 20 20 7b 20 72 65 74 75 72 6e 20 61 70 69      { return api
1470: 2e 47 65 74 44 43 28 68 77 6e 64 29 20 7d 0d 0a  .GetDC(hwnd) }..
1480: 66 75 6e 63 74 69 6f 6e 20 52 65 6c 65 61 73 65  function Release
1490: 44 43 28 68 77 6e 64 2c 20 68 64 63 29 20 20 20  DC(hwnd, hdc)   
14a0: 7b 20 61 70 69 2e 52 65 6c 65 61 73 65 44 43 28  { api.ReleaseDC(
14b0: 68 77 6e 64 2c 20 68 64 63 29 20 7d 0d 0a 66 75  hwnd, hdc) }..fu
14c0: 6e 63 74 69 6f 6e 20 47 65 74 44 65 73 6b 74 6f  nction GetDeskto
14d0: 70 57 69 6e 64 6f 77 28 29 20 20 20 20 20 7b 20  pWindow()     { 
14e0: 72 65 74 75 72 6e 20 61 70 69 2e 47 65 74 44 65  return api.GetDe
14f0: 73 6b 74 6f 70 57 69 6e 64 6f 77 28 29 20 7d 0d  sktopWindow() }.
1500: 0a 66 75 6e 63 74 69 6f 6e 20 53 65 6c 65 63 74  .function Select
1510: 4f 62 6a 65 63 74 28 68 64 63 2c 20 6f 62 6a 29  Object(hdc, obj)
1520: 20 7b 20 72 65 74 75 72 6e 20 61 70 69 2e 53 65   { return api.Se
1530: 6c 65 63 74 4f 62 6a 65 63 74 28 68 64 63 2c 20  lectObject(hdc, 
1540: 6f 62 6a 29 20 7d 0d 0a 66 75 6e 63 74 69 6f 6e  obj) }..function
1550: 20 44 65 6c 65 74 65 4f 62 6a 65 63 74 28 6f 62   DeleteObject(ob
1560: 6a 29 20 20 20 20 20 20 7b 20 72 65 74 75 72 6e  j)      { return
1570: 20 61 70 69 2e 44 65 6c 65 74 65 4f 62 6a 65 63   api.DeleteObjec
1580: 74 28 6f 62 6a 29 20 7d 0d 0a 66 75 6e 63 74 69  t(obj) }..functi
1590: 6f 6e 20 47 65 74 44 65 76 69 63 65 43 61 70 73  on GetDeviceCaps
15a0: 28 68 64 63 2c 20 69 64 78 29 7b 20 72 65 74 75  (hdc, idx){ retu
15b0: 72 6e 20 61 70 69 2e 47 65 74 44 65 76 69 63 65  rn api.GetDevice
15c0: 43 61 70 73 28 68 64 63 2c 20 69 64 78 29 20 7d  Caps(hdc, idx) }
15d0: 0d 0a 66 75 6e 63 74 69 6f 6e 20 47 65 74 57 69  ..function GetWi
15e0: 6e 64 6f 77 28 68 77 6e 64 2c 20 63 6d 64 29 20  ndow(hwnd, cmd) 
15f0: 20 20 7b 20 72 65 74 75 72 6e 20 61 70 69 2e 47    { return api.G
1600: 65 74 57 69 6e 64 6f 77 28 68 77 6e 64 2c 20 63  etWindow(hwnd, c
1610: 6d 64 29 20 7d 0d 0a 47 65 74 57 69 6e 64 6f 77  md) }..GetWindow
1620: 2e 63 6d 64 73 20 3d 20 7b 47 57 5f 48 57 4e 44  .cmds = {GW_HWND
1630: 46 49 52 53 54 3a 20 30 2c 20 47 57 5f 48 57 4e  FIRST: 0, GW_HWN
1640: 44 4c 41 53 54 3a 20 31 2c 20 47 57 5f 48 57 4e  DLAST: 1, GW_HWN
1650: 44 4e 45 58 54 3a 20 32 2c 20 47 57 5f 48 57 4e  DNEXT: 2, GW_HWN
1660: 44 50 52 45 56 3a 20 33 2c 20 47 57 5f 4f 57 4e  DPREV: 3, GW_OWN
1670: 45 52 3a 20 34 2c 20 47 57 5f 43 48 49 4c 44 3a  ER: 4, GW_CHILD:
1680: 20 35 7d 0d 0a 66 75 6e 63 74 69 6f 6e 20 49 73   5}..function Is
1690: 57 69 6e 64 6f 77 56 69 73 69 62 6c 65 28 68 77  WindowVisible(hw
16a0: 6e 64 29 20 20 7b 20 72 65 74 75 72 6e 20 61 70  nd)  { return ap
16b0: 69 2e 49 73 57 69 6e 64 6f 77 56 69 73 69 62 6c  i.IsWindowVisibl
16c0: 65 28 68 77 6e 64 29 20 7d 0d 0a 0d 0a 66 75 6e  e(hwnd) }....fun
16d0: 63 74 69 6f 6e 20 47 65 74 57 69 6e 64 6f 77 4c  ction GetWindowL
16e0: 6f 6e 67 28 68 77 6e 64 2c 20 69 64 78 29 20 20  ong(hwnd, idx)  
16f0: 7b 20 72 65 74 75 72 6e 20 61 70 69 2e 47 65 74  { return api.Get
1700: 57 69 6e 64 6f 77 4c 6f 6e 67 28 68 77 6e 64 2c  WindowLong(hwnd,
1710: 20 69 64 78 29 20 7d 0d 0a 47 65 74 57 69 6e 64   idx) }..GetWind
1720: 6f 77 4c 6f 6e 67 2e 69 64 78 73 20 3d 20 7b 47  owLong.idxs = {G
1730: 57 4c 5f 57 4e 44 50 52 4f 43 3a 2d 34 2c 20 47  WL_WNDPROC:-4, G
1740: 57 4c 5f 48 49 4e 53 54 41 4e 43 45 3a 2d 36 2c  WL_HINSTANCE:-6,
1750: 20 47 57 4c 5f 48 57 4e 44 50 41 52 45 4e 54 3a   GWL_HWNDPARENT:
1760: 20 2d 38 2c 20 47 57 4c 5f 53 54 59 4c 45 3a 2d   -8, GWL_STYLE:-
1770: 31 36 2c 20 47 57 4c 5f 45 58 53 54 59 4c 45 3a  16, GWL_EXSTYLE:
1780: 2d 32 30 2c 20 47 57 4c 5f 55 53 45 52 44 41 54  -20, GWL_USERDAT
1790: 41 3a 2d 32 31 2c 20 47 57 4c 5f 49 44 3a 2d 31  A:-21, GWL_ID:-1
17a0: 32 7d 0d 0a 0d 0a 76 61 72 20 77 6e 64 4d 73 67  2}....var wndMsg
17b0: 20 3d 20 7b 0d 0a 20 20 20 20 57 4d 5f 43 48 41   = {..    WM_CHA
17c0: 52 20 3a 20 30 78 30 31 30 32 0d 0a 7d 0d 0a     R : 0x0102..}..