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..}..