From 7c1284333f0f3ad7159a3b136b0a0ad72c8889c2 Mon Sep 17 00:00:00 2001 From: Rik Veenboer Date: Sun, 18 Oct 2015 16:26:40 +0100 Subject: [PATCH] Remove obsolete files --- docs/synthuse-screenshot.png | Bin 139577 -> 0 bytes docs/synthuse-screenshot2.png | Bin 116158 -> 0 bytes native/MsgHook.sln | 35 - native/MsgHook.suo | Bin 35328 -> 0 bytes native/MsgHook/MsgHook.cpp | 261 -------- native/MsgHook/MsgHook.def | 5 - native/MsgHook/MsgHook.vcxproj | 196 ------ native/MsgHook/MsgHook.vcxproj.filters | 76 --- native/MsgHook/MsgHook.vcxproj.user | 3 - native/MsgHook/MsgHookTest.aps | Bin 73208 -> 0 bytes native/MsgHook/MsgHookTest.ico | Bin 23558 -> 0 bytes native/MsgHook/MsgHookTest.rc | Bin 12548 -> 0 bytes native/MsgHook/MsgHookWindow.cpp | 635 ------------------- native/MsgHook/MsgLookup.h | 250 -------- native/MsgHook/ReadMe.txt | 48 -- native/MsgHook/ResExtract.h | 86 --- native/MsgHook/bin/MsgHook32.dll | Bin 108032 -> 0 bytes native/MsgHook/bin/MsgHook64.dll | Bin 112128 -> 0 bytes native/MsgHook/build.bat | 6 - native/MsgHook/dllmain.cpp | 61 -- native/MsgHook/org_synthuse_MsgHook.cpp | 100 --- native/MsgHook/org_synthuse_MsgHook.h | 61 -- native/MsgHook/resource.h | Bin 4568 -> 0 bytes native/MsgHook/small.ico | Bin 23558 -> 0 bytes native/MsgHook/stdafx.cpp | 8 - native/MsgHook/stdafx.h | 74 --- native/MsgHook/targetver.h | 8 - native/SetMsgHook/MsgHook.h | 133 ---- native/SetMsgHook/ReadMe.txt | 40 -- native/SetMsgHook/SetMsgHook.cpp | 97 --- native/SetMsgHook/SetMsgHook.vcxproj | 169 ----- native/SetMsgHook/SetMsgHook.vcxproj.filters | 39 -- native/SetMsgHook/SetMsgHook.vcxproj.user | 3 - native/SetMsgHook/bin/SetMsgHook32.exe | Bin 10240 -> 0 bytes native/SetMsgHook/bin/SetMsgHook64.exe | Bin 11776 -> 0 bytes native/SetMsgHook/build.bat | 6 - native/SetMsgHook/stdafx.cpp | 8 - native/SetMsgHook/stdafx.h | 23 - native/SetMsgHook/targetver.h | 8 - native/uiabridge.sln | 36 -- native/uiabridge.suo | Bin 14336 -> 0 bytes native/uiabridge/AssemblyInfo.cpp | 40 -- native/uiabridge/Global.cpp | 10 - native/uiabridge/Global.h | 21 - native/uiabridge/ReadMe.txt | 8 - native/uiabridge/Stdafx.cpp | 6 - native/uiabridge/Stdafx.h | 7 - native/uiabridge/app.ico | Bin 1078 -> 0 bytes native/uiabridge/app.rc | Bin 2558 -> 0 bytes native/uiabridge/bin/uiabridge32.dll | Bin 78336 -> 0 bytes native/uiabridge/bin/uiabridge64.dll | Bin 92160 -> 0 bytes native/uiabridge/build.bat | 6 - native/uiabridge/org_synthuse_UiaBridge.cpp | 168 ----- native/uiabridge/org_synthuse_UiaBridge.h | 93 --- native/uiabridge/resource.h | 3 - native/uiabridge/uiabridge.cpp | 497 --------------- native/uiabridge/uiabridge.h | 52 -- native/uiabridge/uiabridge.vcxproj | 182 ------ native/uiabridge/uiabridge.vcxproj.filters | 62 -- native/uiabridge/uiabridge.vcxproj.user | 3 - native/uiabtest/AssemblyInfo.cpp | 40 -- native/uiabtest/ReadMe.txt | 35 - native/uiabtest/Release/uiabridge.dll | Bin 78336 -> 0 bytes native/uiabtest/Release/uiabtest.exe | Bin 52224 -> 0 bytes native/uiabtest/app.ico | Bin 1078 -> 0 bytes native/uiabtest/app.rc | Bin 2558 -> 0 bytes native/uiabtest/build.bat | 5 - native/uiabtest/resource.h | 3 - native/uiabtest/stdafx.cpp | 7 - native/uiabtest/stdafx.h | 11 - native/uiabtest/uiabtest.cpp | 114 ---- native/uiabtest/uiabtest.vcxproj | 169 ----- native/uiabtest/uiabtest.vcxproj.filters | 47 -- native/uiabtest/uiabtest.vcxproj.user | 3 - 74 files changed, 4067 deletions(-) delete mode 100644 docs/synthuse-screenshot.png delete mode 100644 docs/synthuse-screenshot2.png delete mode 100644 native/MsgHook.sln delete mode 100644 native/MsgHook.suo delete mode 100644 native/MsgHook/MsgHook.cpp delete mode 100644 native/MsgHook/MsgHook.def delete mode 100644 native/MsgHook/MsgHook.vcxproj delete mode 100644 native/MsgHook/MsgHook.vcxproj.filters delete mode 100644 native/MsgHook/MsgHook.vcxproj.user delete mode 100644 native/MsgHook/MsgHookTest.aps delete mode 100644 native/MsgHook/MsgHookTest.ico delete mode 100644 native/MsgHook/MsgHookTest.rc delete mode 100644 native/MsgHook/MsgHookWindow.cpp delete mode 100644 native/MsgHook/MsgLookup.h delete mode 100644 native/MsgHook/ReadMe.txt delete mode 100644 native/MsgHook/ResExtract.h delete mode 100644 native/MsgHook/bin/MsgHook32.dll delete mode 100644 native/MsgHook/bin/MsgHook64.dll delete mode 100644 native/MsgHook/build.bat delete mode 100644 native/MsgHook/dllmain.cpp delete mode 100644 native/MsgHook/org_synthuse_MsgHook.cpp delete mode 100644 native/MsgHook/org_synthuse_MsgHook.h delete mode 100644 native/MsgHook/resource.h delete mode 100644 native/MsgHook/small.ico delete mode 100644 native/MsgHook/stdafx.cpp delete mode 100644 native/MsgHook/stdafx.h delete mode 100644 native/MsgHook/targetver.h delete mode 100644 native/SetMsgHook/MsgHook.h delete mode 100644 native/SetMsgHook/ReadMe.txt delete mode 100644 native/SetMsgHook/SetMsgHook.cpp delete mode 100644 native/SetMsgHook/SetMsgHook.vcxproj delete mode 100644 native/SetMsgHook/SetMsgHook.vcxproj.filters delete mode 100644 native/SetMsgHook/SetMsgHook.vcxproj.user delete mode 100644 native/SetMsgHook/bin/SetMsgHook32.exe delete mode 100644 native/SetMsgHook/bin/SetMsgHook64.exe delete mode 100644 native/SetMsgHook/build.bat delete mode 100644 native/SetMsgHook/stdafx.cpp delete mode 100644 native/SetMsgHook/stdafx.h delete mode 100644 native/SetMsgHook/targetver.h delete mode 100644 native/uiabridge.sln delete mode 100644 native/uiabridge.suo delete mode 100644 native/uiabridge/AssemblyInfo.cpp delete mode 100644 native/uiabridge/Global.cpp delete mode 100644 native/uiabridge/Global.h delete mode 100644 native/uiabridge/ReadMe.txt delete mode 100644 native/uiabridge/Stdafx.cpp delete mode 100644 native/uiabridge/Stdafx.h delete mode 100644 native/uiabridge/app.ico delete mode 100644 native/uiabridge/app.rc delete mode 100644 native/uiabridge/bin/uiabridge32.dll delete mode 100644 native/uiabridge/bin/uiabridge64.dll delete mode 100644 native/uiabridge/build.bat delete mode 100644 native/uiabridge/org_synthuse_UiaBridge.cpp delete mode 100644 native/uiabridge/org_synthuse_UiaBridge.h delete mode 100644 native/uiabridge/resource.h delete mode 100644 native/uiabridge/uiabridge.cpp delete mode 100644 native/uiabridge/uiabridge.h delete mode 100644 native/uiabridge/uiabridge.vcxproj delete mode 100644 native/uiabridge/uiabridge.vcxproj.filters delete mode 100644 native/uiabridge/uiabridge.vcxproj.user delete mode 100644 native/uiabtest/AssemblyInfo.cpp delete mode 100644 native/uiabtest/ReadMe.txt delete mode 100644 native/uiabtest/Release/uiabridge.dll delete mode 100644 native/uiabtest/Release/uiabtest.exe delete mode 100644 native/uiabtest/app.ico delete mode 100644 native/uiabtest/app.rc delete mode 100644 native/uiabtest/build.bat delete mode 100644 native/uiabtest/resource.h delete mode 100644 native/uiabtest/stdafx.cpp delete mode 100644 native/uiabtest/stdafx.h delete mode 100644 native/uiabtest/uiabtest.cpp delete mode 100644 native/uiabtest/uiabtest.vcxproj delete mode 100644 native/uiabtest/uiabtest.vcxproj.filters delete mode 100644 native/uiabtest/uiabtest.vcxproj.user diff --git a/docs/synthuse-screenshot.png b/docs/synthuse-screenshot.png deleted file mode 100644 index 45aeda9d46e3d6656e77147d3cc6ccb29915a387..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 139577 zcmW)ncRbba|Hgfi4uxZ8p0`kDMUi<9=@g3WC^IW$@53?D!9h4?l)XaPdxwLAjLdB3 zpo|WVb;$gk@9z%}&T$@(v)-@!zOLtW-H|$4Y7AGouToJ_F+5d&tVcz4S%iw}(iPfE zlzX@WM1N6!{pYEt_K2!%hWwf*#G_fhjT5m zp`yAdc=}ky0AWs?_x1veKHd#jPriMP;gk2OkFa}cG5=FE!+q;i`FpeXf6!Omk?dxZ zk_sERt@tLX`@Yl_1%|PC->rbdp@5U=lXU&UuM0*Ai35j&t;NQ}3XZ>uSzcx+FIa4Q ze$D;bQlH3jxKP$`=-VCmaJp~0Bj^1apRT}$>VCAMZOLx@vpHO|WKh>KuKAQs(W3TX z>uaXIRzMo;OC2k&_?gixG19SGye#JHx4ME$4+1S8nQ$L21t~pwZav#t21{ z-|u;BHF<|EUfh1=s<$$D<>|eu$`wpHpG>kqn#M&ST_xq+`PKU~G{3Tn12kT_%LRNy|G1wBPwv-C-VV5zl79Q&v?pn`&&st; zR9M4QchOSx$(hu56aS-T+p+-HZqMSS+rDbU%fW(&7d{J$rHHMTHpF>#e3EBh8eG|t zF{t?zFMEF5)5CfCKMS&jNz=tw*^{!n)4tuwt-VXFDW#^5$fm|Or=3@G`#Q}y(upk< z?R|bmKIzp`7Q3~dI$+o0uYK^*y?b{d(7kU%;-Bm0;<85K12P$qTfbC? z&o|m5x9ix=b5@S^A2vGuPDnh}FxivPtK)UAD#efXa%FAbZnM%3ADp}x=*47P2nHS% z`U!s@{9HwxT$GLco~N}B-ww-MgPe`O`|0^9M?nyNpcLsK$^V7f)B;c=3F1LZRHzvXP~(_wNcN zzgGxPP`F#yF_n6p)is`SFW^zJb;;OBk{H8!R`h$jo=`nCU8{{o>%p$iPi=0-ywFqY zndEz6xuo}EEhzdx)u1?q)kp%ZYNU5hB2oj=aW70*-u`@;9&yLh zI|rUi_ul+V{CQ(Gu`7H_x}gL4E&_gz!obnysCXbtK02NSM2_FFpX<&uTnKE)(m?EnkV$>YSDp+ z#|@)3m*P_jVn2_R=|o*uTp)u5|Ym zNIVw}^n1H5J{H@ia5m*A75iOjuZyQztL5IwN?LDm{hKU*Px89#YUr>@wcr&CTYU6Fq!i)ZrL?81^zun(lNvugJU$PLEJv$s<_=1CGDhL21Jvxc{}cq%D|&qI``L1W9!0DuS!@lud1$AuXlwx< zU5U;21w!vOdfIiZgbhN3P~wSLf>dwcrWRu{{r(@usHTgb8A%=JZSH`htqwn5a9=a} zy!EuO!M7+M-)5QcsP8O+!0TMP z4jl*82J+og6`>cBYKuNoS!k&izuqi<=DiypYaJcE)F`k3D(>VKwLCSW&K6HamWRY@ zX3&WoQq=cw-qV*ax!HgF53xxq@E2rVG2UF!b-R&zy>ht@n7vi+vl#9LcUk|eQ9Kb= zRcpv?`(rReR>NhZ=HHjtG!a>!IrV?uXa=#(c#B$-;aBLI7yq_-Gfgl4`tZ0oeJ6Zj zOnd7+6 zblzi|SQpbqj=kHMG~4Xd3UmGeF{}HDK+e4Bcg_$^6RG!^@p8m5)O*i7TrP$DS{!vh zD}}_F7)(xVRFFUVIF^*O70io8I~y*J`Xu+2Zr=Rn&{8`8b#}J2Der7UQL&`)8+N8y zv8-9v`7F>(W^U0Ni<*~F9=G1Z!s?Yqr4H*`J%Up*Pms^DoH68S^2@9_+_4KXebjE2 z@A#QV)>?DSZhk)BE?dC`x$xLI`179Tg>!-($SGKBl+W5(D}L29EvQCa^Op zoD29%97itP8-5e|)~5qI|_c=sY0ZShm8klKzkD~V8EwEiq5CB znd>#`TXo2lh-YD>wTO6om8por*#;)WO&^7KpH*#?zb#W$#MdcT?wxnl1kyc@mktN1 zI=mxlZBz(W&ewHKrm-$suwRT0y#0<08^34&yOA`-$tU!g>&f5)8GKA+_Z{{-&wAOD zQiSxMnPE!%<0(gp(h1wW|)Kv{09WgvY4<}2@WM)o@~0g1@<#G2Uu!j*l&bcxM3 zxeN#LpV{IG+HygruF+4g__3R^Ae}1|9OL!&@8>>Gh9fw z8dxZw4aTD0Vwg0A@Km$K%+k`^U|eRmiCSeh-iUb26AY=>Ymq*s!$1m&FJeS!roRY*q2Ov#8)<5KkA@$sQzkb!me=x4;mlC+akNkAD+yGjkM%?{1{`yV=gcm_^ZZ=h(XybQSZ z0T`wz{beg6)!>-)JnN6}C4hmVo$e`fKaX^PCc{Y)_F!tvRFA&qp!+ly3?2kqgTFC? zz%_Cup&Qgd4{#MI4!tVY$$$BxNBgUEC@hutE+VvnHCI~~H^~D@yNZ6j(m8a{3GXE7 z#7PcFu1HD|^1Lh;@o{iHF2vMS#c~+h#UIh468}^t90ah0fQqTf?andPG{9CsgGu+N zaVdYL*vp-vlB5W>BNYx_1bjjgRR@|VRf&-MG*TlXtjfGlGn+T5^VAOhHeJD6AZAmA zF#&!_ICC^eLKQOB+|ID}CXPY!Q~O!W5u*)#k7^-xKvbrx6{sz%b0JRSGhY&_soln7 zMkO3HOC5-r?}PXX)y;lB+G*idRPw!rFg5Es3kZbx;I}{F3M^QY}}FX;VB|Lwd%xDz6@)_e6x1 zGJ}to!wO9#6vq4spJYA^349o?Ex0Ye=u@10OPW>4Ic`trNbGOYsDGclO=a?vUfc(m z{D<2fzw^TEloR6j2%S>8YLY+)t$fhq*je13YMw5o0XfYilg1Rviq_w z>H}}YTYpXux8^*&?5jtNbctA9be90SCwyvI$!M2Z15$SnnggEW6*Dj$&8DB&8EEz_ zOcYFxn&mfUQ{y!@xKAMF%yLIq+_+zkzqdv*n*okc6|!-bY&)vDG$cs^4?vo=mIKk! zZ8Iek(k*Gg0!j`BGUVVpVx!`oR+sM+d$9|W$}evK9y+|}1Tl1y8yfEr{|nN|ArR_7$3T6pNg(oM z!nekV+>kQBF{PA=xVolP2gVbaP>OX%ygM3t~9Y&Rx|`DkR( zCD3Va3Vx*P`?_r0JC#rV5{3)y&C^8#R#v73W&jywQ?k9H!v!BL@L`vS-lN4*t;70V zJA69N++t$CDDm!d%!67>FlqTryG|StaaSM?YwABVyW^I>!;7VMf2{kD3V$~gy$>Y_`Ujk9r|&3p&kZbF z-P>-*%H6E{uh^RR$sf24ooL1QGki|lV?6&nxDp*ZaEd^zMcrMEFYqj=d$8kX)M2B>iGBV1_l3zF% zqRe>Tvbl;x)y(o}dxI)E_&5bkBX~`DD+nsg1vkBA2C_BcRP|O-9%-Rk4wa()iiFUH_&( z(t$|)w6j%Gb@+zw?DfzHc$N3eerp7?3OK^F3kC!F-EBH{>aJI}^KZXmQ8m4bQ`bT^pl`de=Y`s;PP}iA8xgR+ysyQ^hzNQ7Tn2}KY zIr%Kpr>oem&r)tyBbjYTz}hHW|sGTGzHz zd6Aq^bFlH^7-?uF-V(POqwdc8zT%;Qmr zoOea_xD36NZ5z7mz(dqqS0dh{A+tO}m%wcVm8Z5$_tTd@d9g482_%xFyBD)AWD8%{ zPZGq|;`{&L&Xj`YWJ&FTEyQOXaN>Umxj;#{n~zphHO#5*+v@+ApzijAbE1EiJhKRl29=&aUqYCP*P zn(O^>3PlKc9E$D;hXh8BtDN3=BYk4u@b8a7qAc;#A3la(MMXAkUicj0#ewPc2YwFw zgTrCKHnYF~!?kHk3Ps7)Ul)`M>=NcFQUxVizm0g@p)!V=y>T7-MTdWb_ScqMhoEX| zM=cnz0xM*we}5QJX&DdqR_+Dn)^sej+zti3OK#^q(t|j>WJW~CIOZokijU#bWDEzX z#ZyatUFN6zwd02V#0=-&dG~nn;X(xkIQS|XfI|<1rgFGAB!AA`c!RKE`43PCxauu} zknW8-^uu<2iw$Q^F>YMNx{%`v4C%pJ$j6P3cXGstKVP`AiTQ{lNdUM@v_@KKlBQRM zc0{o^u!&@i{p=o(WwfZ$au^@Y?y8;r%XP~b@`y1iLG`^yn7&2?6P*)%s2t@2)HQ=K zNnDEe^S#V@&UJJ1ofkBrnF&f3@}5f`w?tZ{J&)Wj*9@=@+TAvPRdLb$hgIXVRve~tQoTHCi&=q0tUOLBQ>{jB(xqdE@fyb0 z)T?DImo5T&wtF?Xj{_63=ffyh^Cm~;e*pt(_@a+vF|PK z0=$b4F;@d~WGw_*+gj{LrA+-p2RS%I=I7VR@}n;>cgZDk+HVC^yp4Uzma9A=A2Xf5 zuXv?BDO55?>|*_d7qXB`8S=P=bZ=rUmu zb=s+NKp%X?_c7DZV+333#4ak+Pt_v%q>pDHnvAt6sJ;+=bMq$@g$W3G+px%|_oCH* zGl&`Bun_Zh>v+_KD>9MZDF2rwT9=>XW=E@*p>Qg>^EB`DsKwoEr|M=p%#`js&*Mi6 zZueJcr|GT@kbY%<=OkK^5t736GMzoT=#~GtV_;4mp>*RN7bi_eIYa^p`}pkehF^r$ zMIlQEf5RZV+KsnQvfzx0Wd}yT)dF($n3aM2mn2ED+YTJh9|Ge9`hk-vfVUEKYrYbM zMU8o`I>V*`iW9gDIDu=Y;lz+LfKk~c$!qS^@!P@9H}Y>19E%!t9~;b&nOMpIM)w;~ z1b&Jfe;qOv2rlWJ2{Mvh(YhQ6t^?uS6}#K1(_nRTs_QkcjtKjdXR8%~O#a$v0REP| z2LAy~=Ru~e?@XgS1ZS7O$W)+1RhC#H>TsVGUt_#|ea(Z*r}Ae1pqpI%8gP^7k^S~J z;Q7NT7mASB_o-C^w$n6rYLptbD>sYV)`H?-^pv3*j)L(9Iqi{9eesUiys>C#E-mFl z$+JS*2O&23Nt_iG**T`Qc$KV!i@Z6MOVKPcV+xM7J^*C}Y`#bL8*S;AGXA)E8GItF zcV|Oq6>5E|(|1JBt^d{kil_hUg1O@U%U?ee&#W>b-1@@8Ul-Qw1KMOssbBmd^z@;2 zQ@}HbP!CXPYC@8%yxd7A8gx{jrg0nLcE_2CIl_Z>{N7yyi@G$$(Hq9<1JRnF&C%&S z(mJ)eXdb{iS|JI>>(TH>{yH>YCohai7xe2ArosO)BZR0Z0S4@?#`&J!OMDSeBI%s! z6f#0txZmLP=N9mY-i~5>47zK>qam-C-x49$^BU3R;Dmo_I5lqBY4iYEp=g?FxfHH8 zhx1xB-$nV*Ue~`T+*$YFG4oI~16YM-qKA{E(dMH80VrjR%HmB3C7&$MZo}tVV?$#> zEb7bzLe8~oKx#hM#F9=ReNGrB{H>>0?Ng7Lj+MJ0xp!*!JMzxzZobEXEN-(WC%aTF$v9?k6E=f^2Zsl;M_{*+sAAw)9XWVoVQ zUm)Bpp*Ugvuh?8%t9kd+vtzqLWN^@zVU8rv!0*t-?QeT$hMC*ncRSxDbAZa4q}>?o zHh-%)-sLxVJiwk9;@ID3+yCxC$}zHPCN1cTdDwpSs8JQmx^;oKvU#={Ss6vQ}0PXA|efX+0Q>kEv?7U zlW{n3BsG{j!x`}HOOQH!)eD5NnOoZ0Tc(CU+Z&Y=mj@I{lDZldI>=tj?vhSDlG`jc z*5n45A@9PN_?RtX7*JR%bqJ#THKY^V*@1n0@UVsPKWKOyWg_HAacf_2XR$Cw%8-J9 zz{3R^q?`YCW8&fG#p2JvB@86N#1i}mT?fL#!-(#z)2QY4JXS0Hj;W0?#5uk~K34Mr>Jc|EhT zLMO%TLM9iZnP;I>JdR1QncTMcO?PXaI5|4O<$W}4E!;ow*TkkZvGOxT(X>1e3!DskAF4uw#a5vytW5j3AV+L7ZgoGZ_*oAa z-2b)JjxyN7$0IdA69fG|$YW7TIN8*-ErcfgPP^N63xagl-x5u${B?I2>7lL?G@z28 zl4Ftje!}noVxVqSE8Y;U@Kt)hM#W1Hf}A4J7Q}umG1!Q^Y|%Z zqV&~XD=G2o+|EzMAAX*GHi+!y|GtU*&x2qEmlVG35=VNAYh?`x1NO+rqFS`_n%XF# zds|EMD-jEZLq;Zfzd}^e#(cLlN)b6paVWtzKWW~Y6=@ugKTSVjGZ_e+ihGS!Rn+$^ zhre~PO>G0MKdRs#(5Zdvg*TYSYQA-vA~PXq0ZGB4xKBeMTHt93BMlg`Ca@XD_Ez;! zHvebgJ2e&sK=D7!BoFK2g#e*;+69rcA-8g5v$(D*(OP%0d&rO#>^Ix!YH#Yjdq3vG zv*9thH^J+|&DX*;Pxo7=aZ2gPk_U--%S(w48d^T=PE2A-it~qiQfF;)QurTI)NNH& zdbarfYLsCnPtC?0eqvP=K55$f66wCC&|hHr_b!7)u-{R*xMA5jZ{z*(A%6=~BMJTc zlNR^5sGUcuy?^6AcJTo*WR_{JKHd;jn1(p4^vr|Oz70%pNI3S#| zZV$rFCyCbOgEmM_QAZg%a*=Xd!`4*pY7d)|)E82pE{%5dZA8H3asF>#Tg(`Rn|=`D z;Le-x6vDre3N?@S{T_!AEXxabYvo>YW4-91UQSNx0tr}hIOGHX%M0|(2(a9Z7hQ_f zhMd!@3QS>HyD^HO;#l0CNQNlE&u!?V3iz z)jKxe_qfgZy2X*Rzlum=Lp4r|3Tq4gnha~${-4=*xAXP*K%&0HjGPmC4h~1J7`9uF zl|pvX#jhUmlkK%%`Rbo|%cA%kBY0(N%{-;hSFOR3|ATFF$8l}A8O6qJckP+*lg90x z*Y$V6hXaB6tA-1XnI|TCpdIXbkVp_k;BwGb9(8C`bnc-{`0gS_g4QS?0#qP_6*R%- zF}nVvwZk|oA>(9C$=Pyb&YEr-Fx?+BQg$b+ltuZre|z4r@q!g2GCZAz^5rg8g_9I zj_ocbKe2*&zQ475Pf2-=!ZQQPBSD0|Aq_2Wvu7(0#q$nV3s0D3 z+HM-9Ls~YRdNxR0O~-RTAFPI#!DO8_{rXAX9QS`&^v}78I${fmF)7uu<~h+*UbbC- zzNI_<7Pd>2kmeFHsuoS_yy-Z`F3b}@;Kt=rMd+6lf5d^&yHegNZNGVIRQ+P23$wRw zk@dnueEmdnoXmdo&18pbo`c4%{Ne#WJ1y%RpP2MBX6P z*_2N&xffd_2&hlAN6acW%nfdYDP;N?k+Pm6g4DCG{TKcfM&^8j#pZila>w)kC)Mx# zE))e?4e4N0R=!O!<6y>PKy2#^MM{INo35v}se!vGL#p-5x%P;wSqbT;pbI5e90NiF zU>Xb~kEra66Lbndw6IfHAAcha zd5RV(3C-VDAyX+=j7M$$7gQp1+Wz@lT|W@}aHgcB8`IiUz>wLFG--Y?1N`0IY9TC? z@oeh{VoKML`!lMfcJsXj%1Y4LdUSQTW%RTi9ep-cI!pTs0-NGcgnt1iWv^7u1 z@_EV?@6YZp4b4ONXlJoYYGQko-MGsZ95t1 zFpRLNJo%-GV&EX!dSqu!>V&ETwMkgQNm)*)bhP-B%ckH#mmvm@-s)vo;I}U{H;c%6 zFu()?4(Nb5pp~WqafzX)9vI4{3 zov2ObD?rn)kWvUYaM$(d5`y-TmHw@_gD-5nb#5CREo~szUh)h+=Y69?3%qnI(B=a4 z6u*`Bhk%Hd9jKNL5+}3vzec=e0Tkgz1*V~Y6m~znq;N)KAdciw-0DBi7Ofj5Sa=yD z=FGGkF0NG$PbH|MSQdT0Lrk4N*y;*Zgu2)k#iwzy%n9bMWxweH>m`bO-M#DfDgIK& z&37sx0tykgm>ytN#8IF4Y4YA{d5@tuOrI`N3s!X0uQN|kK_j@(Y>!0DsK9Y3)g4uC zLz9ugJ_k^O;}>n5egsjPubQKf7~$vts=1 zdvgXJtY(xHq>ssGH8S=Y`yQRG=H_OaNWLB`U{1S>nG5h6|0A9!V*yE;xc`;B)L~K{ zYuI>QCeQG8(9N$CYLwvCR*wnGg4cqw@+w1gVf?@N(T1Rwjx+^4Lz!*-1ojB= z8AFfTO{HCtbeDop>aXjMO-o93B_IX5ZzXm%3$B(~X0plcjCMA$tzYro+W({Q;C>gY zN<=OD*ORY&GA8Ua2T3O9;x#7Y-^Oyv^SqP|%L6Zy>d4sDA8-9|Rx??vD(r}MrO zA8;Uv-%XA}zM!KV{O97^W~*>zv+bCS`Y4#lN7&mAVAf?T!4ZqC1RW9TLAU5Bkryo` z%$qa)#`>8;;^y|Lpgs!|A1JK9gQWAnrNN3K`YX}Wu%_P&WyHz@nXAgihlWtXGs+{} zHE=QYUidTM^bv(0(L!H?^(gzc-QaU)IcKBADW8d$aK2Kb1el9UGs|;u%c1o_>E^Gw z$)HULe^FMH)e3siapO4JTx;!07Obu=ZtGpC(zy^(mQDN--Z!pRSFe4~cDAZd@>}W|0Vc-Xl z4FK9!Paa{z49%5>KAO^JwC<{s&6Q__vT3xC@LYxe<(>e!*UFxYC2c(8A;+8G#@`IAe?qzR z|NTY{1!3a9$|&t5z^&v$5DEZW2zucUzY!O}Py>^OzGI>WFX#+SajHbBdCYCxFiZLY zZbzx2xmbpy?_W8Tjh5BS{fWDQpyF&!y}lANKRR8MOVMkUCNtb##sz~5Vk?(R@@IGo zbt*B${|sshxS~Kj8$eWxrC@AZ%Vv--FCtE%M0cb!939CA+-ISDdsl}eMA)E`5`}Rn z(<-aduX+$L*EBm@6FLj6(IHh#3x26x(3|s_M|$)H?PUmf;2P8`p&58wwDs&khqbl` z#nT`naXpfxRCUp@4o%Dp9Bvy{eKF8&Rw&`5=P zPw^G6*fE16a4^>r#51(&)F5fK+#R2GH)h7mZ+twus3>~Nq%3yY!<#lfduS0rK-!QbX^=Z1vJ^W7Wk$N=x0RgTrgAZ4+QR`1P^uW|oQ_O#r_ zmZv_9#n!FR7%>Qc9EWI-M1uSc2z;v9%lxDp-f?&7<)dZk<$UUvbX*>vk~;OxElW~Oi7i)t-dOD2Cj1Uupf%Mx>d;yMb834*bmXLPP#6&Yo};kdyvKN zxj&bc+~>KN`Kvw-vnkNi2UUbD$Eb^D@v#~4bb-K8wL4fx%Cysf?FQNRmhpkqj5B14 zxnHANf~z}z#C@z>!RaxZvIu~5k|xJZ82T6D ze))PW=A;3N+d{~9d_IfRrw!kltuczXt^nz?k$hHQX&6%#t~5h-J~z`X>6z&!pnb4F7vdE@RGBc#mjpEyxQMn*;>PSjIp!PZq>Jm`rPeGaxCNDt&J7} zh5y@NPMVzjvrj&PkWPWL$U#rOby2e09?B8TXG2N-jvHiyB4DX}K7X-;7-zg%Fbgf- zeNh8N^Z&`i6iO-kLah-rk9Q5M>Ch7o0a;?Fti`8MTi<&@?3td zgHOoz?Sc>rSV0kTh|K5n?{gXdo&U+^szW>Y%aJRNn0o;BPQl|({3G5~d2|57+MWW} zYY#705K#I23y;T?pm;xQA3h{SRG$5VqqP*gi7GvLAg#3SM? zLiW8iLvlO(fdVZM#Vb}6f}T9F3Fo)G8a0#5uY!3meDDGSUAvx3Wj3Qr-lO$4aA-!W ze&AgQBoLNfqYyW0g$L*g3;9V85snC`?A?5n3L=jCTG1$D|1+_h&pG^++V+B`8{^e$ zm>k?r9uX~jR?5(#Pt9z`7j!n{Qb#v+JnB(T=OYD>i3-cbhEJVkZ?#@L>HJpB1t`B< z5OI8C`+94Ku6dX}@MN{cQJL7hiz}B1s3s66%C*dmJ@!wDOVzBqT4dAeYWxfz9YD$b zHfoN%QVI%@x0Msmr$4n>l(=%TPuQO}Mo+AUm&&I!l7F5IKY>AsZbQe{gr*fjWB$V$ zKZeN$x2x*m!s0Js22)hEsiFQ(tqO1cPDJyDjSOtYvDef@{;WL8XqkG5S}e7 z9=M61cbvEv)waj#CsHxb5d$&EX^6$dGx@>aRm z2i`<;_xnNz*&BU98=SU#O;cq%`$ zv77TW98Y*E7X(dxLXH>!$8xaW)eVjGv`bC96XG_v;HGwdVzA?f&D#CfQJM1EFYhSc zj!3Bl5cx*}!PMYq7u1IyTkFC2t)N)g)p@WNk9^YMztJv%@Awq_e}RZQ zrWelBS$ww;Ua6Ufb5ynSb5p2CSwq1hhuJ)OAm`^0^#!*h6%vA8qx3THk&;>1^}|RE zC$8^c$EAhioACdjL5D-BN|z|;bL{X2GT_#8@ORi_$VT(tp%MEp0+HYlc&d(gJOSYf z1Mk~VwF@?_@7q&At^k|+G<@^HYWCCI83+pttwh6BFc`-pRHwjA1&sc6`-Tlcw~qH~ z_7t`L$&YovcRI-^-%YQ;ujH`SC6-RQ?x_y13n&U)bwO|aPTXWK<`}*C^m|88np9>@-G$}BM`hBCyq zQww%3Na~Vq=z1xsld|>c-W(-lx=-rUK|60jp*G=!N(p&qUp?IB(@mLMEKqY_yd^Sk zx=;-31L66;cN(kDQ3t3sFaKCd{IQD}{-LN~8{F3bdxHHwZrX$l@w=h!q-M4$G?D`U#>;_I)C$mw}_HmSRK{8)y!>b91lw&bnFND2DUh z`C>|3xGVPc?9a$pcu{dt(c%i*8%a7^V7ZRHw)ESdyp6k%y0h7x+3#F3xyhLh2eU#zm@pd4^A})QnPmZ>T)N&$Lph`-cB6vIa({3obq^cvrpVh z(Hw0>Ddf412L7#$H}PE08p%a@>8^23dS8=C^l~U4TDO;>d5+=#TQ9B0dS}Z|L2Tpf zfRZvgR3D9lu4%Qw4p$tjW4}YsUj8UnOM8CT`P9K-<0wJF`a>3%{(e_cC(h$)aF!X# z#E<>8;klrYxd%zOv!oMLeO2T!*eU>iE=A=dI_&?+i3L= zg)PQ3LQ*HG(Is?hfn=J{z`KN1ZLm>?UUDZA=!hzWw5O1L{fgwUb9**}_X8d7pk%6wA{J7xFaMK&A*??99V zVx(gbBT1g}(#H)}{g@-}|NK_!Q%qyTsGPr?gSx|qDF2tiMuXY()zMtU-fmbrqr~PU z>W!(F*D#Z{#1TvE;HGE==t+5_F*5HDuG~c2^>n5Zx4~o5OjO}V&ds}1wFKjcDs*&%f*epB;P^1<6dEB=P&@efT;Nz>S2a5JUw@s1*{5bjJ^l$K{0-we>W zKXR(q2ug1!RZw2_+V_fVC5iH?e=3JrB8Tm=#P7`8tT(;)ZISzC7b6I2%!7BJ?=N() zs7?x9vE0L+M;d&9kIN5>I5prcXR)*UMbc1JHQ7|A`8fJ^2pFT##m|iIC^Sdtlw<%x zE>2Sf$PG!l7(^PbaOCZNJL;14R4Zd8nyvEGzhf%g3%o5VyCK2{Y;E$jhnwZSxIY61 z?<>$liBvoR!m}v5^l!{~mC8fcBkK;h>s?t&>=%7mMxX;OgGg;4@b6e*86_I3ymdd( zLK7|nTDK8h_wG0$X!%bgf0gMJ_H#at54=p5d0As=#!>=wD0_3w+rT;ap;qw?d37pq zvF(UKLxhNCj+UQa^7MR2<`vcXMSS07g(upmm28%BN3|Pr1-cnmp+$IaeKgB~zZm00 zOJ3e31n;x0XCo_XJ+)p?H-E`6{D@!5|B^wWw%7v0zaN4nM=QoWp1u0BWo_+~u826m zAnyj&Z=TBj9X37NxI6>#j2hM)QqE{C&mTUXzc^XE$iR$zr=Xd>b z+hirp(hB$eYoxW>Gvh0BxgVN7NYz>V?Q>?jPFt^%8-CEsj;wim#&yh(`Xqw#ERPWg z`8f#jP;(x1jtriza4{*1nY$GFxORAuAL-QianPEZE}y)lly-H&kFrb+emr-)d+@0l z4>WC37KjvPs8(ZgEJoJF&?kIY2w}Q z8x{baYukTQEl15lPA?H3ts~~_aCewqJ+;MAJSYNwa5o@QS^_}{94;Y~__Cft8yVAe zc(djlmUhA+wqOdhaB)F&k|e>GWXSD&mIy*C_QTfTO+@N-wRj`8SGT~OK)RDCRF+M- zR|PT&u+VmOIfJ*NVM(?`=6hg`h8UqU>8=7sc7do^2KsM|JZKRmq`JVh%jFD_uPIJ; z(~^?UfhmdHW`}lzo-Qd{1o?V8d4B%}viBoq_UGY4%`r-cNUruZIC##ZA{e$3^0MaDciqbCd zG9Gp;lUba#{c&biKey;CKE15s3|?>_vP4$ErvMOi(Mz_uWU2z{X)|yY$dz zq?T$N{QV~qslt(67p+Xdhj4nRUk0pLwm#}S-@yA``}+7DNEsnJ+O`*mVj2xA$@jn$ zF4wqeWw5{E=J650!maW{IGxn_YoDDl_i(-_E>pfgpeN1%wlGzM-86Ta(lr@SL)hzn zx+z!o6e=+YRYfCu+Cwmfaz0rbsoxN3>01G;;h> zxr{B8Zr(JHG<<+cCjXa84$sduH!O9YE;>~EDO(1_z}_`g-%jsMLv=_e>w7hpZ*a@J zzbXpPH+pE-wF*!4Mty`?p))Sej!8dmwlBX3$LV4eM7HlhKezt186r!i#b%h9`5*7) zvTE#N2IWn|eQ;ZyB^heR<%?3U56FDyyBr|k2Q6TS40f+uG@{2u(qp_=tAFubfrhg} z^Oq|luZ~Ohe2M2_hhA}Mk$js+3AKs_Q`DrO{w}S@k>P4R0N%qKB$ z< zsB{zIv{peZX8%<o#1VKdC$4d0+{1k8)53})mab1;% zop*|wQmSvzi(Z@M4MOxX^Vf+?0Z*8%=b!p(@~@;x`#>h;pb6t?_)gw|SnVQe)W^Hj$I->%JGqY0 z(RI6FYbe$R6XWYU?dAIG&Y}0LNAO`OxB`ZlW~Uq@z^`tKp^yGi0?}gtb6`j&?ZI77 zr^sFwDHMDPZh@AJ?W4S}j22H(oC{}rrA&q*xP@CpyV;6zSV9uYC`UQpK&evCynD-D zyPV#0Of4HP>m~DRd%Fs!w(NU;KCgW|05fQo{jL|cx#J{3NiK64%VA7S9pi@dk_HqP z|HPQj3X|+TX5^DuvmEkqJvkg#`1t*rP-qNS&KIdX(dS=g$v2`RWaCtaid3vNcj99B zTE_e5k7>c+C^Rpd9-0qGEm7_;1SP_CL-EYB5iZNQZF^sL)k%2RT7z%`%&W%$0JNMu z*1o9O;+ePHo9-gAUGNkjxg3JmyMngw$R&XtSH$hDN zWU0b8z{1JIX+W}grbpxwjA6_BA@>0N)p^0uclXwUGCPWHcbs(oCK!mE{`f|W1ufE> zt@R-)R;ZK_bP*-`Zz)f661csXX^pdwd)cN2a4PJ$@qFK!%xB{*k zk!~vRynOj2#lUj(Oot^kK4tC>MoYixPk~n+uhzP|NWpB|N)4^5kRtCO7mog z3PGG@iU+P{0MAVVZzFMi1QYGehW*Vyp1&s3n|7xoKYZvP8WdAFS&vT?1VebL?zrx@ zEnOU8E_5_XKlbZ=t6t{@!1VG-m4BcgjY}8Dd4Cjf@>~Y@Tx(P(E+z5uIEV z3wpQH$1%k_`qlbdk%C5eg!G$7ki2>`p4K}l+T}6F(T9itA7=xX5jF2zpih)LlHE{< z5$aKA{x_?e^s?=UP*n71tjyNAZBmw1sx{@d5Td1$>h*J_!Z(E;c4cHS_r;qrHmU2^i>(RefCSIQTORG) z7%XaNvBXW%h;}M5WJyvA$n`2~<9}l+D)V)<#OA4WT{Xcta67gV-G9cy@c*j=DEWU; z1{+k)cQ=SqRVq_6+hhx(gy;9jl9c9~8$|{@Toi19t<<7yFg%LRZH;>$jU6g*&hvHE zFt0Icex$nT=|knN5OnRbsWaJ)a@e2)z*Evw@B7!vWOCLi_^}EEeEnwrH)QTH+5Q?O z3OgL-qdUcR>yWn_e?>)iGK~#Xy$n#e>o)>mk zJRE;3E@>U*xuF>a>nv-$PiGB&Wpj&E(bv(GnoS_w9DgW(c{5hkOKjy~$md_C{}%8n zjFztU2!quBYzkgutc-Z}1=XG7L^St97UUe`&281n5l|pqZhka1Bdgz$j zrNCVDwnB9fjd%o0)|b8DK6~gPMvE%Wr7lIhha@ysRqq&oJ1;}2U$i*paZ#L6CS``c z7Kb}EqxFiKaWu6UE#DUs9;9)K<1byj$j2bE#>lrL=uU2B{9Tt)FWUeSo<$;hWAj1z zR`egOXA*X=yS=;YCiILn2p?Ne9Y?hGsWW3D3FbwrvB7>M^sCx{%peKYpa4(YfpA4T zi$f0>A!1-pF5I1T4q)w3HNgio9=NUi`p>j-wn!)+Ua}`xB7N)VCrlc8G7&Gx)6OSV zmy7T2dVqKX5z1_7KTVnoe6 zkcIx=V9SfQc(1s@{?I&N@Gyg;5$wUGLO65>>UWZ~Zw>gai9X>;-F&2wSd!}$;cmm%2MX4zd~ zZMk{t&9R;!gnec;w+{MIfVJV6%>%N)PX?#Vv6OHs?d#BIXC?Lh3FQxtM>Q_@KH-@w z_e{`+eAdXuPZrZ8!D_SB{g2B?I$OvYPpE|3B$7fVl}=I{u?qWt;ft#%9_MI7Mh4aR z?=5F~RJdN(xu_`;tJg@c+%45gxXWRc4CKejE2~hHgKs=bO9iiw$oFJ8@nVxY&Zifk ztnjXgIczv6(c;KeTxAdHFF~KdXOADc2Q|md7>W|@`(oJG#5uVI6gmF_$dj4tkK-z! zf_Fal2f$(giMk2?K9tVS3|aScje!XuXYWk|i_qzw>U-vo{2c#vVQhePrV7c7&3G)U z(RiM**>1T-Ljq9ly^p4fw}G*yb2JA0Nq(8ev}MVB8sjL@`w=Zv538S7*BhC9dOXEN zUJ(OxrUfLu>B(08+rYUVGuIV-=uXZjvtVEW620M9`_kJF7*2Zpb(PpVX>6GJc+t4Q z;g1Hz!isLmwH%+8PoAH$w%-an!_@&S(MwLN(n^o{YH?#O1rzUA%{&VoE-P60#ma*7VtzN6Ci2bIo;ZYZE&3W7eV3;VM zH?z3?#Iq+Pp8JU3tL_9nk>#o;)4KBk&yPPYo}76ng~lX2nkp&}{O;9+k+5K{-!OAI z9~#=9U4$@KP?@!?2YAZni+?n8a%|Y1MQ9ASe8(O!12cywTS}$(d(*XGzwPwxTS>V` z;sgU6G{=_mq9Lq$r!yH{2+dx2C%iqG@R(QrIXvdJ3!UEJO~chK|B98dP2~Cu#8;V! zd-HbMB%<4?8g#0d&wgFqy4|9C+V@az+2p!<3gc9ZgE+00Fi}u~DVoTYco8eV_1NtJ z$T|4uvHW*9*6JTD!_F^RHWmIT2P*G2_vNhfHhqjlS9rzWT=^InwA1L_yJ~`nsRuRk z5VwLvf*jMqNC1@Ts+XN5(8EVgoa-J-zGoxwn`QnD=>q$8rT{jCC>wAHYWeprFsYmb zh7XqCfUQL7zcKrtl?hdVYXRV+GS?*zLij`elL&KOekYYKZ~Rop2?42c2=Bz;F)rwe znMgJQpl`ABb?muze+3r!-UR`NfVMkF>btbTPH1sDJyZnZ^JIH2et|ckF}Tw zpej@Ex4r)wyk}kC6jFNAK${)gD*3nF0#9Z^e)#m#teO0OIluT%tO5>Fa3FG`ODrT3 z2bu}}WZ`o*){8^c%G$l>c%yT^O$ctw*mt-I&wRMI2|ZN3ut#Z0YkL3cw^hkfd$U{> zV=oH!R-w{^T)8ezr69f!LIQ zBDmVJ5_%bwxj1!@qo7~xg`#Tz+mg}yT#bZLGnwyS6t~zCAgp*Ob@+l%O%Az231aW@ z>^7FQHn4g17e}}pWyJ@7isgJ)QvNVn-8E9S>->_xy4w*vMjUtBY;T7$Gok3@Bne2Vd>PCw+Z(rMEs;fC z9T+97!h_DxwvREm2#|RCH-1A#zz&dVz*=%v+lxzv;8oOhA`oC>&_}Z!9qpOS*?vlN zB3n9~l>q!G4kmYH+B0lJD3Qt3@-KONH}#XZ$9d8#NhWjc`DOgmHB?2bNX!D5k%PhfnTz}5x0oN> zvB?@zpM};O+o0BmDKr2gk&Csjw?pVAbC&g87CA}3ju6!c6+UmjUo0AO^14s)QIg|4 zlQR!FW$fFu&y}2?E2tJc01vT^^LSCwSA(KPagU|Cm{=2TI2Z8ZSfwxvth;IE_y1$A z_R_QIV&JF!OY_aDMa9nrYjURVk9W=rUw(df@FR`KOk3u+?ZDXiU5%|6VgKW#L>>f# zoOsRp2@!g`3sJUW6dAxAy3NGk=lTJoOcnL_yC%+L_*o_;g7xGh8#CidzP0D60j&@d zWOr7uy4C98j(H(mz|!zxI@?E>2N~~233D8CBwNi8=CAeeu_e+@_0(L!Z3a%-JzI>! zEpw=AKVCFIk)B#{bencLflpwGj%%wTfC5g*F2AcUB*y}HfuO4WB2l9!j6{Bn0kh-* zlE=FEFN{beuE!Z)-vW7Oh^TZ79}NlT-##9^Re$Sv+^BaL>cIK~{W+3tlb-FZL!E`62FepqBhpUYuhGC7 zBNEo^)Y^`yFnhPMhR_j~ONRMA0%*>SCaUn2C3?#!O1x3A&(>~oe{_R4|vv}@( z2;KE@8*LS4KWQyGOdPlpru6OTx9kt?V^8^%3FY!pV>lkv2!#arU@^jacQ*PqI#4f| zz8r8C+=L1rtyM1&sxE-C5W9u7oA9PeBbR(`cb5+y{r=6ag$&_BSIN-Jfzh?UI(rg+ zBm5ZgR13Cy&`mO^;s^mGXF>QMPnF+u?5=8SAy+C-8-bD6_7knGJ% zxO7K$^n%eyy?bXU`9CE8KXZ#10`$N?X@E?|cbGqCGL9X0eONsK?0R3=BNc1oO^d3m zTdZ=0ltWO$q+)!iQP>L;LlQ90!AG=vwh#S^qVjWlw=Y!W;J3n!;&-H!$YAi|Usjb} zDtBHiU6ZaQ&+U?oi!98o#=1#HC_HJGZ_MJSh~egc!+M;?{?@(HQvEB(FAtEl)( zcP<9g*!{C$in%d*rs!*$5Qvo7kjrz(;N)i)Uv4-v#N%^WmLd|CGQk<23_&1?pzoy& z%P)eHEBq*-wDYNXIJa4{W;PdL+4QD%$K_6&r2}nENq6`6kdAEbVhy*%%kO` z$N#1iKmmYogTDf@lU5rW!vM;Bwe5%=u>zR84CcnoOUqS6k6B8Nm|0;0L4~{k1FF1T zETd-MeYNN3v(FXFy5cV<$urs#ti!s8?kLSgM6xt~tyE0r_IR@6*e3q|u+EBh*P@8m zq=;hr%M&EwZ{4Tq?_=#a?%UPuZrC$%+B+)!rqe32r1Z_cmq|<7%tdkf-I99NdHyLl?*rS4r!m@=K{i9H85?fY@(B~a z6!55q6k^6SyYH$fx*1%q?^=l=HHN#rpZX%H1^!3V6kI;?wXc<;`{p6YA0RFRRx3@A`-gqJA#ILNi?y7l4x~#qRut!G5MgMrc zo_>SMPuCLgJPA_20)Jp@YFAjuV+r5|C@X8Qgxm|3>V}ic+`*9nUd*HHyf3!?yIRK# zucVSkr1amZuopnnM~esgga=ftJzh;Pa7!C%Obn_HM~-|zyni9KD4LQ%pRA}}Z~IK) zcg_2x!2-mSSLW%xkHaON(XU0S)$jfK373Gb6~U)59S_3d5D~$MqA}Zmc%l0ka&QzU z;Ilf+;D5>D87X1yQ*2Zg@D0Vr@pUYCRM;T?-aUNg{eVhL>;2 zD0U~gHQjH%eZPKx6Ce90!e!C%`e73AkhJ(Pl5o!)oyuYn zF0KJu=}>Ow3QGNIfoe$nx(k8cvUp^4$<3qY`?LfRne)rBPfdKwRr2z-Og_m3x)o#A z7-odp@ngRZ_Y$R7v;94Xiy2;LI?C=Km--P~I#4se_Z#Cj8rh5nm#2NX3$eVHT2#e^ zBUSo8OP`#FN~n+cyVN;mLG??qkvDeA%~RA?qc$q7p%xqU z^NumJ;Vf~;O)KJxszR+2wyh)|`4e)DoZz^>iZ=T|f85_f27w+p@DqbCVWg00DyS+0 z1z5%rO_JbeOaD=w5!u)!(I^=l58JlW!yByyh`!W|hCBwUbb~x!ICVCRmmUu%?*@aN z0Aw+2=do!g;r+g!75Es7x1B~egx(22)Q>;%8!8yJikbo-BHbf+g{0Rw9JPaUJOkGI zLtwzz1F(x9rt*wGnb(8T0iScrI2`MSzDo%y9rwtQ!3AtvkZtOp6$H8B|9A3tGhxG~Ae+My%I9y&+n=Dlb8IH0r5C<)f*rrz zvS8D(YB;~$IRh2{y)p#xyr`&rFazb?c>C!0-3ntl_(s!t8f5CAvr_caSi?ddkMiD0 zWaA3q9-?rfULxQqQBf#I96&yIh_|u zuW3)@EuhW$g^%~@?Y0X+{&LkE#Pj&nzPutn35ME*CL#Kv3ER6 z-Vi~ki5DIfPL+4YV?kIxN33{Of`LGpx=a|s_owFgQR3Wtx>hzSFRV@Mz2(Wpc?_G2 z2|kVrlHU~xZ69b;$BRg;v#4#v34yo^Kn_DOn3fhY<+>~nwcjsURmbqEm&jLL&)=28 zdhn^%6K)~zTBhlE2vuI+6&&ctswFLC`5m;L@yMAYHA8GYIS4zvEE^vx%yxvXAUE@E z>Ufe9q_bEI4yK9{7tjLdPTFIbX=F@F;ZKEm`E83OGRSJMYTs2$C)^s#LGrj0wBX*~ zsq-Qc*=l8t4Yo~5W&_g-=!JdgSZWU4+vY}uTSd>(%i>rTjX*y-FmVBNdm{Cy2-M_} z{O9$yvc!vT8c}SsZ6fooT|K-8Q;b&OZ;mLvTBh(s5|KK!yg_7WnC7i0+PEL!5g2V# z{$XTvIQ0(o2eyYPG=P;kIr90)4@h4qT|0pGGC>gedv4j)z4A6__z8uF)3NUHdc%$O zw4L_;ROqkq4L@E$0z0TJU?Na0V^F~p6}7eUcJZHp6<`}*!w)%YW&7;19cGfVkWp_0 zB#Hd#fxIs4g|(irI|uM0T}L^pPlFjkfx=ETMd%McOtlCYra#5i_dcw{Mo--Sk6RFE zd~)2eR9^Mdyu2wF53fMB|JU!IBk6OWvmvLPXPyG_CC^K*{yvu}``&tY+l}EI@_BD# zv8I>so}BH1RJg+wW)UP8{AUsM_cWpOG+}oY1T++(+xuKI@WTfu#R1Rl1yF2tD;8|N zy-lysv-sm%;`onXVYxe}+m9{Dvx$y905sq`W(Y0tB!Fd;68z%Jt7afq#K6@$>ON;|4;izV z4K)F>gE@(v?UBdU0|ICUo*Xo!4gN+%{$LX7^>`ZH2dQ^2|yVyp}Ok2vsT9f69jc)ald6}F43WO`N*EJ&#nL}_A@e|wS)D5Ah}x;{dS%AoYVz5f*6j{Rd1 zHH5ymb)p2;AXC-`jAjKZ70V}XBVBpIJlxnTLPeI?W2K*jKGu|mEGBrk@n*d#!s<0V zS*8uwd2ACdz|l$QTJUph<5pD28!C>E68Vv9bF8^kr1lD)Qex051@nJmjiH^#u45r5 zaXej&RYVW{mV@tkeIh*kdfWjo#Uy2+lKjRRy7Wu)hh_Ao9ksnW0XbXDlRj3o7=nrx zlmE){R(8eoLvinOZP;~J?Gi8+-#>`CTRAMff4+U!Wk~95xFug4A=yrbG~C6 z^#bu!8Y5poHJ6%y$@({HSLm|FHdr3<$JdTjy)T_vTl?Pd=8vviZd#sPg|&&Fi|8BOl^8i_(~C}f6^ zUR9<)`lpkTDwFEg$|qT~fc>iih6Q3Np_Vr6Z0X@}tK^zv>GYfQA;~%9-~NgI-YreZ zP4Xwqp;Z!oiQB5bUf=*QLlZwHe?`)?l4h<|6=Wkv|LzM%^R! z#}hMm`C{UF?#S{!czd9x;-IgTZqXxnVyk^uQ|2ac3a=QE$c@O)r8_zd60b{ zh||~(tQBfN*x=b&qZ1givdIbk5(9Z2I7d1M{=gzVyN{nC{66?ScS8XH2++TuYLtsX zHB;HV3-@r$T~mZE#0k89jt%D!M|5p@g9m{e5Nv|hD%lu|!*RIHESb=?=<6;{5u%$3 zpi>-GAYC-vq7Hyg+@-5N>nsN}e(Ar? zV=N;e&RMbnJz^d&-8F-`%2N0n3;U@*B@pyKNr+2r~!1e-$jZ*uxfn2IFTAa8l$)+WeG1#zbX%>VgA#m#@ z1{;V9wk*dRQbF3L_D zl2ubVlYc6rA%Vq z%9u&bDlm{(Duv&f?8qW zLVq7_&9+9z!f#ZAU&i&i99@6n^e;w)>YfKvGjo+ovAvVER(xN(y@=2d4(K}zs##vV zklqt)JKd!n2=~4xL2;6{ti=A* z_)<;OK>jGvGRRdZx=|*dRreS~<#ed2q1hR#kefzY*|LiQL2sO%m_g0W+95Zqh zz*neSu_^2ztOO;ruFmyAYW|pa0yVi-wtixh1W=pe?tovYH-;!x7DxpZ~Gy2f6MRs%_e+Jhn#rKxx4(Cy=ZRQ-k0~Dg6|WSgX>6@ zwypNzWEilcyu`7q8JoDA?X(eFHEIorq1$5`R8bvyWb?PJpNhTTcP5~*SJh*~v%5#aI>3)3_9LP~K&e)} zU^G$On;zMfWOA@|Xt6RAklbTzy79`8kBh90%!EZ>qeN4c&YYSD3AN2qd!2F%T83Qdzm|f=s25M#NzgA!=T9J3D6IR|(O^@CsSL+5S1GM>rm}YM%E2k(dj!PXL zDmf;~M#W*H>YJ!`U`UxAFLVn$71|ffOb1gUdl|kixQ!ErtTW58G%!QD2DtP;u!bbSR4S@Wc>1bXE(8L{!eM{wMWj~JCKy9o~Vb>f0*eX z{_MAiM6)FxU~{B7s!*)G5M5x~^jLhF5OVY<2(~-&sDOln5%MsEjGXy_)G@_E@mp@{ zY-x2iCadh`olYMlQEzY<>9a1Wr}OykX4Ec%PHsCnG#-Db{?4rBwZA12Mog`r@5(X8^b#5)8`SuGZ)bH7LFK!}k{=;mP6W+6}n} zrJjOY?_->Rl#wC(rn+WFgX4883D_-)Auxj7+kg)E1Y$7NJXx;dI{*1<1e+t; z3rp?R=8$o?N}J8Cx`)Kb>6GMAYoLD_|OuEC+uD zhJeWb&iZzz@JZ3$Hw3H>poOb*v|o}<+q8xtTm%|9fqnV-Umz){%=fPg+8yiWf9yI` zcH{}=yNwpn0-R4|6F@Wo-JcNt&O2GPr5BK7JL)cHZ=hzE;}quOsikg#)5=_0a!k7b z^OSnoyt5DoGK_C#SHw!3(Z!Gqhy;^G##ETe4Zf?;>|H{1!7~#jG9Zz}6es%pJjiBe zV!W%|;lR7lZcY6hZ15E$6MYx>nN>K`#}0~_P!9!U5KBo3Z1JK1fg^n}kb}^{g6P)u z`ik>QjwGnf^@$svEc*O2oUDZtfNPXmA_-=?)9%l9f8h=GkP>*HY-~FAs86A%0|KTK zpp1wA2|_?Kz1ChJ&`>6N(Z(nR39iS=rmU$bPI)TlAl*n7*deVSOD;_kEQ;-HFb1mb zu2Tb=%ltNP zHq}!5-t26*%kcYL@k_!(Pz9e?zxO}AVJ+NGneKg=>ED%P@)}}-^Lw$P>V#N*$vrYC zyZ<*Msd5DNuV;4LWmxWNHAHkz0D7^T`)yB1_GEtXa8Ixaf1OCqMKtLoUw%*#=PYBM z-{Q1V{)1t`T&YRkC$x)|w5I!QB5;ydS`;}nTwi=0l)0e=eN26K?L+03yR!W*@!q%i z)#T~5^dZG`_w+&NA7oFHisAUif^n>~>;=b`ucWE#l_Z71bHRgL6KdhSRFC<976N zzSRLDQi^$Cg0p_0B}K7!*h^(Z{NvPE&0zp~yv8ITezz=*A@R#sAn^Lgukw!{Wlvb6be)kljcAg$Zd z4~Petwh5Yn5Q3v@ z&|D*22vAUS`f`Xvc0pRw_|$t2V%%YWd@bwftq70p%KoyRMrAPilmi0`L26=fSqrB- zwQ`vk=*1PzDZ&(Bi?||A{B#wI0n!*s@}VWz(76z`iDdNDWu3XDd`b!N!iTTh0LiRi zE}>a%u+QX|jt9f?A@IT{574u9!d8C}p)7Co`>b}(JL2Bi`b64z0v20(8w1`@uVh3a>k|=y-%YzE1xos2kdz@b$!McY^~1@{w|gaP5r z`RaH7r_~JKSHo#0Ygs-{^V5G;GyVMM&m>k~B5iITNTVNmM8D{M&oleMHT*MeP*^pQ z?UHLqr@_OD*7pCe>_vq+sL^8Ch8t#VX4>`O&fbn zndjb{_ti5Wy>ZZyI^515PcD>${aZ#F_ckt}V`0Y^j}d_~&D#kHM>$o?K*tF2BSVUa zh)E? !q9)+k|dkKt_&B#LDMJY^42QO{Xv9Ysl)EBR|QEcSU7cikTHXV;KCYV{72 z_@X+6Ji`smW!WO4>rt%2ijrv$RoHi(){VnBYgo1_G#wA+k=d=afU#=b6X>U>0Cq*$ zW@$b20ry9F4@W;}*`Y3#vP~$K12>KuYRT}$a<~ZuUvQ%v^{JrSr>7kIoMARI80}Xy z`ixm@RiGa~068oocX|ae9uLKKf~Qh`qX@w^XhQArygk_tz`+y5Mh4LJAwX#TcG09$ z@6cRZTiU5YHLg={W~kuyVqNb&Vqj`rR{!LtxZe@DT61om2lg3FaID+inAe5SwhKgj|}>)xVvFI5&6rDx6Yg$%cvZp47n1MQ1r${TSf?;w9v%IxvK^{189M zw-sCz6wtMSB6#lV*>#CsObo5|XmK!#AcCJtd6BsTf*ekH1&-PbaHW7shJgq|>Ez(K zqoYB*yfp?HeQwlG({f;kaPv-*;JcBOU8FQ59ynU!%EXZS8TSqN?MVcaxu+Osf4i;{ zGegnLEo#XjEo1*&jgB5y`3{7j;t6}$wJj%Tkt{V+%iL%1px4%&9ppA0WyL ze-(04YFA#;0i(k91dzp%wR`?In53br9j%S}Na&-v6K?P6v|sjb^|vN{izl-`YsskD z%kG5Pb_Va6+`GnVCB(g%Pm$9%cFR|ZHZ=CpKW&XmyPT(Ape#*b<9!>QQ1>Iy?D=`2 zXF;IKz_osHGUr?WXYfaQ&&t0Id`kI|C}+@CbMPu5Nm!H2NVehN87|vIm+ZQhbD{s> zQch6j0HZ%lt3D6@aCqH#if3bBy$%@5*}JDs70@8>-jQ+!YEuU8-MTe)qDr-qAbRtK z{(X*2me0F4#Aj`}?}jB2NkT zqPlUzcD!CcrceG#o*6dtT$TY3RJCRsC$q~-b zIy>*mU}ad_ZWQxgEAWvKe(;?W;fx)<()Kb>#y2!euDu-~CT+X%vOPXN>=W;AdX{WH z@GL1Uxjb3)p=kX0yrUG1RZ2O$Uvs#u{LSk%{bBu8M;QrknI|q6XFe~pvm2JWE-Qrx z7u>8Anx3gn_vevj?n2w`de4+)gi{6TYm`+!G;6%NkC^;!^zov`8qJ@r+_%=} zGaNp0qCfokef3GmK-OVG*Gr`K+VH zOy#4t`Plw2m&OwB2_Fkla^JT44pC^)G)^( zBji46v8g>cftkt3C-F1HBfW6aO>({~0zyjLL+|iQ4Q$j$Nkl4@(zULLdR_IMkiXcM zUKNn!&MNvNnAy==qJ~6}Ry5a%R7iqiQmb3B86&bx-S%eGYy z_qMlHOi+DBoBLEeInzBTW&89-OExm~4ey>w@(J{8PsilRp6{XIRLjyplGUMCHbjQ;}Ad=pV<2AP}rQ%mK*M`yV5K z3@G`=9!y!+9lShW0{{TP_m>Jg;X_GpP6gQ{Uj;}4`E)s+de4xfF&|hSc2OMm&ABtP z)4BEi`wx3#Dx9&O^d^qOi9E=(zTOQ#t#0FjL7vX@ZZ2D}PJKabHn)J}9`@ zO&)Gib0UUR5<tD2B^HAUHQ!C2W5`~y0vxT5U;3$jEI!m}<8G+#G9MgNF zR5!`CZyX>u#n$%(*GQ zyx$l`=0xf^@9Mx0yA3X&`lVd?Ub;X}`~%Ow+)^L44MhAr6Qo{3b9Da}6!}w9#ZhRl zz{`W(|G>ak!*B=|e`y$|#+Z^O4&@DSNu`F`8di!UNFdIBcx^COn-)exbHCc z&f#6##|eQj-3T1+Z3I9RthVC60NLi5l&lO;Mp`*02p5r&2NWRn?Uw6|Vkn`IKQrs> zimE#BrxK%;uBW)!q*ZY>o*JbWihpsZwHUV}?wIJR+k$0G&-;C>=(h--o-;QuSqax9 zuBs5|;)*a1-d|MNEsq94;!3PV)e-91WKbn`L?3Pch69Y=BOyzNghQ08;I1n5e7#;! zuTepgSk+Kys-9pbo7s;{N|8Jr1$CEm*=0&TWH(ph>}Okd-U6OZz|*)~e-HXP!$Ee* zLv(l`SB?gHy>oN6aC7?ShW@`_>VFT{-697~eFuOTfERCp@qafE0Sxc`5{WqPXPU9W zoUea~WoivZdhI>paUp@8rkT7xX|e%N+f@*8l8n)HQpQR1n!3`@QC~)K?2Mvcd-i=R z?`E7jwKC|I<~Hdj5v&!0K7N=}%A$t~?nPenp;&gYW6kEHMY&2e&ig6&P$9Qqmht3E4~ACpz6#$RSCC{s){=7BfDFvqeT&wSjYf z)GhR4mBQhI4KUz$YDuA-tyF|Djl=no7)F_QL&S6N2h|)E-?r)2z9P&Z(u}iuC* z3d0>(*@%az7}`*>5YV{di$;!3-B_y9CATn@A&P2HY~&qMYy$gd3Evf-NHG#1xDg1d zQS1=smiY0V;ml+_^qgqZgwX z2?V}f1Us#$Gnh|pe(7s5?nOtS=;(p4R^Zkwf|y8r$6M)bPh%mZWhjb@P{sJgZAkS$ z1TEC#(-J~u=jq8l@KSzp#gR$foQ4B#P+?f%B6A$YlZ^jf&$m-ZFft9H)Fb+6NGdwo z_C@mZW8~m?5|S9SM`98dFHc9tys5EW$_KT#BGf2pEWB+W`55?-a^U<~2Pwvgk6lJn zvqwYSl~RN6fqo;@c6uXZ2*3)&T{~1xfbTt(`bjh|31i79K1jmXKu?#l9Q{6~D2Ga2 z{T!G4f&yLZ^k|0_S)1zC{6mu*q9uI=Jj9oQ=UX=v|9jB_Ki{T`Q3Q!F)VGhEXiExT zB=aO4JGMS?jIZc`&I~#Ws(`5dp_c6Tb$BQ zH@RhLhF77Ydd=c)s#jWWI5v8q!j0`Dekkaur2YdR&xpj@n=F&9f*|E@WA$Bk?85vW zl)x7|Fwuc3YlTyU6|US}v;ssxkkvH(Z|i*|D*(bI^K*8<^MmnJlpiCU-+J_qH_PYC zaNHJe=8d&f@p3DoT>Qx2ykhmwP$EDwC5sCx!Z$jE6%P+3)AW)HDV;l9oTevrC&a*= zUweKjoC7++9V%-%0GSN=6_@V{mSGFAt`s%`{Se%Kaan8?ltIoBm4bL z;gIA}(oHLU&rQ39)Xm$E?;ic%8|4h-A9lJ1a6r{b*y<7%WDyLqeA@$h3%&mE+Z90L zzXD59k^>MUT}lKf+|#NPo+%Enwb6gKfuuY8RLcl*;D$4msa2ddHx4HTvlavV9l@x` zkk?gCgdH6e4z&UkTqB>6+ql~i=?P8{p|qGw(qlZ+0|6*+2`G05*cg6bVD^SO-qa-TZxrqX4LLuw2U(4jPqmF1!XVZxk{Ha&1K#W?kgTFP1oaiY6Y)M zjDDkxod^NN5|OqkOmHky+u$QBySQ`0`Ihf!u-D`djIUE8EhA=Fqt;(jL#vD)G`T1w zS`zwG{GcF42jr8d^`l@Oi3LkJd&>pJAcN*THMN=aS!b$y*%2IDod{D+$A15Ji!$v0Y;CV{iyt7id|WQTbH1H;qyLn zyR{Y9Z&sSGt8Nx9|NT#I^xYH#?{6~5!Epx}RzVx

~lru8@)7RKTw0F3U$+*$m1 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 z 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

?o^HOu4S$DqdNGE%~Ik@AW!4>PV}EAaw>V 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 ilqX}Ay)nMRVsA<;o&DAL`k_7GpT3T diff --git a/docs/synthuse-screenshot2.png b/docs/synthuse-screenshot2.png deleted file mode 100644 index 46da5a2e8286834e673a9f944134e59ede43d160..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 116158 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%0A=0UchAZp6BT#|4>vxX_#pEeP)LA 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 ZUC~iqY~vozH=->kNpU%`LXp=#{|BB(yfOd) diff --git a/native/MsgHook.sln b/native/MsgHook.sln deleted file mode 100644 index a18befb..0000000 --- a/native/MsgHook.sln +++ /dev/null @@ -1,35 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 11.00 -# Visual Studio 2010 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MsgHook", "MsgHook\MsgHook.vcxproj", "{8E038A94-7D02-49E9-B9F6-5224D9D11225}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SetMsgHook", "SetMsgHook\SetMsgHook.vcxproj", "{34A73B55-8A93-4FB5-83CE-7759C1D23348}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - Debug|x64 = Debug|x64 - Release|Win32 = Release|Win32 - Release|x64 = Release|x64 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {8E038A94-7D02-49E9-B9F6-5224D9D11225}.Debug|Win32.ActiveCfg = Debug|Win32 - {8E038A94-7D02-49E9-B9F6-5224D9D11225}.Debug|Win32.Build.0 = Debug|Win32 - {8E038A94-7D02-49E9-B9F6-5224D9D11225}.Debug|x64.ActiveCfg = Debug|x64 - {8E038A94-7D02-49E9-B9F6-5224D9D11225}.Debug|x64.Build.0 = Debug|x64 - {8E038A94-7D02-49E9-B9F6-5224D9D11225}.Release|Win32.ActiveCfg = Release|Win32 - {8E038A94-7D02-49E9-B9F6-5224D9D11225}.Release|Win32.Build.0 = Release|Win32 - {8E038A94-7D02-49E9-B9F6-5224D9D11225}.Release|x64.ActiveCfg = Release|x64 - {8E038A94-7D02-49E9-B9F6-5224D9D11225}.Release|x64.Build.0 = Release|x64 - {34A73B55-8A93-4FB5-83CE-7759C1D23348}.Debug|Win32.ActiveCfg = Debug|Win32 - {34A73B55-8A93-4FB5-83CE-7759C1D23348}.Debug|Win32.Build.0 = Debug|Win32 - {34A73B55-8A93-4FB5-83CE-7759C1D23348}.Debug|x64.ActiveCfg = Debug|Win32 - {34A73B55-8A93-4FB5-83CE-7759C1D23348}.Release|Win32.ActiveCfg = Release|Win32 - {34A73B55-8A93-4FB5-83CE-7759C1D23348}.Release|Win32.Build.0 = Release|Win32 - {34A73B55-8A93-4FB5-83CE-7759C1D23348}.Release|x64.ActiveCfg = Release|Win32 - {34A73B55-8A93-4FB5-83CE-7759C1D23348}.Release|x64.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/native/MsgHook.suo b/native/MsgHook.suo deleted file mode 100644 index 122cf7b5b383ded683018ac4d90a25555326ac06..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35328 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 - Event.lParam = cwps->lParam; - Event.wParam = cwps->wParam; - Event.nCode = cwps->message; - Event.dwHookType = WH_CALLWNDPROC; - memset((void *)&Event.wParamStr, '\0', sizeof(TCHAR) * 25); - memset((void *)&Event.lParamStr, '\0', sizeof(TCHAR) * 25); - bool errorFlg = false; - if (cwps->message == WM_SETTEXT && cwps->lParam != 0 && cwps->wParam == 0) - { - if (IsWindowUnicode(Event.hWnd)) - { - _tcsncpy_s(Event.lParamStr, 25, (const wchar_t*)Event.lParam, _TRUNCATE); - } - else - { - int asciiSize = (int)strlen((const char*)Event.lParam); - int unicodeSize = (int)_tcslen((const wchar_t*)Event.lParam); - if (unicodeSize > asciiSize) - _tcsncpy_s(Event.lParamStr, 25, (const wchar_t*)Event.lParam, _TRUNCATE); - else - { - int tstrLen = MultiByteToWideChar(CP_UTF8, 0, (LPCSTR)cwps->lParam, (int)strlen((LPCSTR)cwps->lParam), NULL, 0); //get t len - if (tstrLen > 24) - tstrLen = 24; - MultiByteToWideChar(CP_UTF8, 0, (LPCSTR)cwps->lParam, (int)strlen((LPCSTR)cwps->lParam), Event.lParamStr, tstrLen); // convert char to tchar - } - } - } - - //printf("debug: sending to hwnd (%ld) msg %d, wParam %ld, lParam %ld\n", pData->g_hWnd, Event.nCode, Event.wParam, Event.lParam); - if (cwps->hwnd != pData->g_hWnd) - { - BOOL bRes = (BOOL)SendMessage(pData->g_hWnd, WM_COPYDATA, 0, (LPARAM)(VOID*)&CDS); // ask the controlling program if the hook should be passed - } - } - return CallNextHookEx(pData->g_CwpHook, nCode, wParam, lParam); // pass hook to next handler - //return bRes; // Don't tell the other hooks about this message. -} - -LRESULT CALLBACK MsgHookProc(int nCode, WPARAM wParam, LPARAM lParam) -{ - COPYDATASTRUCT CDS; - HEVENT Event; - - CDS.dwData = 0; - CDS.cbData = sizeof(Event); - CDS.lpData = &Event; - - if (nCode >=0 && nCode == HC_ACTION) - { - //For WH_GETMESSAGE hook a pointer to a MSG structure that contains details about the message. - MSG *msg = (MSG *)lParam; - Event.hWnd = msg->hwnd; - Event.lParam = msg->lParam; - Event.wParam = msg->wParam; - Event.nCode = msg->message; - Event.dwHookType = WH_GETMESSAGE; - memset((void *)&Event.wParamStr, '\0', sizeof(TCHAR) * 25); - memset((void *)&Event.lParamStr, '\0', sizeof(TCHAR) * 25); - //if (msg->message == WM_SETTEXT && msg->lParam != 0) - // _tcscpy_s(Event.lParamStr, 25, (const wchar_t*)Event.lParam); - //if (msg->message == WM_COMMAND || msg->message == WM_MENUCOMMAND) //infinite loop? - if (msg->hwnd != pData->g_hWnd) - { - BOOL bRes = (BOOL)SendMessage(pData->g_hWnd, WM_COPYDATA, 0, (LPARAM)(VOID*)&CDS); // ask the controlling program if the hook should be passed - } - } - - return CallNextHookEx(pData->g_MsgHook, nCode, wParam, lParam); // pass hook to next handler - //return bRes; // Don't tell the other hooks about this message. -} - -//support for 32-bit/64-bit apps means the dll might be different to match the process we want to see -extern "C" __declspec(dllexport) BOOL SetCustomMsgHookDll(const TCHAR * hookDll, const char * hookDllProcName) -{ - HMODULE dll = LoadLibrary(hookDll); //should provide full dll path and filename - if (dll == NULL) - { - TCHAR errorStr[200]; - _stprintf_s(errorStr, _T("Error loading hook library %s"), hookDll); - MessageBox(0, errorStr, _T("Set Hook Dll Error"), 0); - return false; - } - HOOKPROC addr = (HOOKPROC)GetProcAddress(dll, hookDllProcName); //should provide the 'CwpHookProc' - if (addr == NULL) - { - char errorStr[200]; - sprintf_s(errorStr, "Error loading hook library procedure %s", hookDllProcName); - MessageBoxA(0, errorStr, "Set Hook Dll Error", 0); - return false; - } - pData->g_hInstance = dll; - pData->g_CwpHookProc = addr; - return true; -} - -extern "C" __declspec(dllexport) BOOL SetMsgHook(HWND callerHWnd, DWORD threadId) -{ -// if(bStartingProcess) // if we're just starting the DLL for the first time, - { - pData->g_hWnd = callerHWnd; // remember the windows and hook handle for further instances - if (pData->g_CwpHookProc == NULL) - pData->g_CwpHookProc = (HOOKPROC)CwpHookProc; - pData->g_CwpHook = SetWindowsHookEx(WH_CALLWNDPROC, pData->g_CwpHookProc, (HINSTANCE)pData->g_hInstance, threadId); - //pData->g_MsgHook = SetWindowsHookEx(WH_GETMESSAGE, (HOOKPROC)MsgHookProc, (HINSTANCE)pData->g_hInstance, threadId); - if (pData->g_CwpHook == NULL) { - TCHAR tmp[100]; - _stprintf_s(tmp, _T("Last Error # %ld on threadId %ld"), GetLastError(), threadId); - MessageBox(0, tmp, _T("Set Hook Error"), 0); - } - - return (pData->g_CwpHook != NULL); //pData->g_CwpHook != NULL && - } - /*else - { - //MessageBox(0, _T("Error: Not starting process"), _T("Set Hook Error"), 0); - return false; - }*/ -} - -extern "C" __declspec(dllexport) HHOOK GetCurrentHookHandle() -{ - return pData->g_CwpHook; //if NULL hook isn't running -} - -extern "C" __declspec(dllexport) void SetGlobalDLLInstance(HANDLE dllInstance) -{ - pData->g_hInstance = dllInstance; -} - -extern "C" __declspec(dllexport) BOOL RemoveHook() -{ - if (pData == NULL) - return false; - if(pData->g_MsgHook) // if the hook is defined - { - UnhookWindowsHookEx(pData->g_MsgHook); - pData->g_MsgHook = NULL; - } - if(pData->g_CwpHook) // if the hook is defined - { - BOOL ret = UnhookWindowsHookEx(pData->g_CwpHook); - pData->g_hWnd = NULL; // reset data - pData->g_CwpHook = NULL; - pData->g_CwpHookProc = NULL; - return ret; - } - return false; -} - - -//testing if process 64 bit, needed to verify this dll can hook & attach to target process -typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL); -LPFN_ISWOW64PROCESS fnIsWow64Process; - -extern "C" __declspec(dllexport) BOOL IsCurrentProcess64Bit() -{ - return IsProcess64Bit(_getpid()); -} - -extern "C" __declspec(dllexport) BOOL IsProcess64Bit(DWORD procId) -{ - SYSTEM_INFO stInfo; - GetNativeSystemInfo(&stInfo); // if native system is x86 skip wow64 test - if (stInfo.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_INTEL) - return false; //printf( "Processor Architecture: Intel x86\n"); - - BOOL bIsWow64 = FALSE; - //IsWow64Process is not available on all supported versions of Windows. - //Use GetModuleHandle to get a handle to the DLL that contains the function - //and GetProcAddress to get a pointer to the function if available. - - fnIsWow64Process = (LPFN_ISWOW64PROCESS)GetProcAddress(GetModuleHandle(TEXT("kernel32")),"IsWow64Process"); - if(fnIsWow64Process != NULL) - { - HANDLE procHandle = NULL;//GetCurrentProcess(); - procHandle = OpenProcess(PROCESS_QUERY_INFORMATION, false, procId); - if (!fnIsWow64Process(procHandle, &bIsWow64)) - { - //handle error - } - CloseHandle(procHandle); - if (bIsWow64) // NOT a native 64bit process - return false; - return true;// is a native 64bit process - } - return false; //some error finding function "IsWow64Process" assume not 64-bit -} - -extern "C" __declspec(dllexport) DWORD GetProcessMainThreadId(DWORD procId) -{ - -#ifndef MAKEULONGLONG - #define MAKEULONGLONG(ldw, hdw) ((ULONGLONG(hdw) << 32) | ((ldw) & 0xFFFFFFFF)) -#endif -#ifndef MAXULONGLONG - #define MAXULONGLONG ((ULONGLONG)~((ULONGLONG)0)) -#endif - - DWORD dwMainThreadID = 0; - ULONGLONG ullMinCreateTime = MAXULONGLONG; - //includes all threads in the system - HANDLE hThreadSnap = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0); - if (hThreadSnap != INVALID_HANDLE_VALUE) { - THREADENTRY32 th32; - th32.dwSize = sizeof(THREADENTRY32); - BOOL bOK = TRUE; - //Enumerate all threads in the system and filter on th32OwnerProcessID = pid - for (bOK = Thread32First(hThreadSnap, &th32); bOK ; bOK = Thread32Next(hThreadSnap, &th32)) { - //if (th32.dwSize >= FIELD_OFFSET(THREADENTRY32, th32OwnerProcessID) + sizeof(th32.th32OwnerProcessID)) { - if (th32.th32OwnerProcessID == procId && (th32.dwSize >= FIELD_OFFSET(THREADENTRY32, th32OwnerProcessID) + sizeof(th32.th32OwnerProcessID))) { - //_tprintf(_T("DEBUG Enumerate Process (%ld) Thread Id: %ld\n"), procId, th32.th32ThreadID); - HANDLE hThread = OpenThread(THREAD_QUERY_INFORMATION, TRUE, th32.th32ThreadID); - if (hThread) { - FILETIME afTimes[4] = {0}; - if (GetThreadTimes(hThread, &afTimes[0], &afTimes[1], &afTimes[2], &afTimes[3])) { - ULONGLONG ullTest = MAKEULONGLONG(afTimes[0].dwLowDateTime, afTimes[0].dwHighDateTime); - if (ullTest && ullTest < ullMinCreateTime) { //check each thread's creation time - ullMinCreateTime = ullTest; - dwMainThreadID = th32.th32ThreadID; // let it be main thread - } - } - CloseHandle(hThread); //must close opened thread - } - } - } -#ifndef UNDER_CE - CloseHandle(hThreadSnap); //close thread snapshot -#else - CloseToolhelp32Snapshot(hThreadSnap); //close thread snapshot -#endif - } - return dwMainThreadID; //returns main thread id or returns 0 if can't find it -} \ No newline at end of file diff --git a/native/MsgHook/MsgHook.def b/native/MsgHook/MsgHook.def deleted file mode 100644 index 0176c73..0000000 --- a/native/MsgHook/MsgHook.def +++ /dev/null @@ -1,5 +0,0 @@ -LIBRARY MsgHook - -EXPORTS - CwpHookProc @1 - MsgHookProc @2 \ No newline at end of file diff --git a/native/MsgHook/MsgHook.vcxproj b/native/MsgHook/MsgHook.vcxproj deleted file mode 100644 index 5f6a80f..0000000 --- a/native/MsgHook/MsgHook.vcxproj +++ /dev/null @@ -1,196 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - {8E038A94-7D02-49E9-B9F6-5224D9D11225} - Win32Proj - MsgHook - - - - DynamicLibrary - true - Unicode - - - DynamicLibrary - true - Unicode - - - DynamicLibrary - false - true - Unicode - - - DynamicLibrary - false - true - Unicode - - - - - - - - - - - - - - - - - - - true - $(JAVA_HOME)\include;$(JAVA_HOME)\include\win32;$(IncludePath) - - - true - - - false - $(JAVA_HOME)\include;$(JAVA_HOME)\include\win32;$(IncludePath) - - - false - $(JAVA_HOME)\include;$(JAVA_HOME)\include\win32;$(IncludePath) - - - - Use - Level3 - Disabled - WIN32;_DEBUG;_WINDOWS;_USRDLL;MSGHOOK_EXPORTS;%(PreprocessorDefinitions) - - - Windows - true - MsgHook.def - - - - - Use - Level3 - Disabled - WIN32;_DEBUG;_WINDOWS;_USRDLL;MSGHOOK_EXPORTS;%(PreprocessorDefinitions) - - - Windows - true - MsgHook.def - - - - - Level3 - Use - MaxSpeed - true - true - WIN32;NDEBUG;_WINDOWS;_USRDLL;MSGHOOK_EXPORTS;%(PreprocessorDefinitions) - - - Windows - true - true - true - MsgHook.def - - - mkdir "$(ProjectDir)bin" -copy /Y "$(TargetPath)" "$(ProjectDir)bin\MsgHook$(PlatformArchitecture)$(TargetExt)" - - - - - Level3 - Use - MaxSpeed - true - true - WIN32;NDEBUG;_WINDOWS;_USRDLL;MSGHOOK_EXPORTS;%(PreprocessorDefinitions) - - - Windows - true - true - true - MsgHook.def - - - mkdir "$(ProjectDir)bin" -copy /Y "$(TargetPath)" "$(ProjectDir)bin\MsgHook$(PlatformArchitecture)$(TargetExt)" - - - - - - - - - - - - - - - - - - - - - - false - false - - - - - false - false - - - - - - - - - - Create - Create - Create - Create - - - - - - - - - \ No newline at end of file diff --git a/native/MsgHook/MsgHook.vcxproj.filters b/native/MsgHook/MsgHook.vcxproj.filters deleted file mode 100644 index 8a2e05b..0000000 --- a/native/MsgHook/MsgHook.vcxproj.filters +++ /dev/null @@ -1,76 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - - - - Resource Files - - - Resource Files - - - Source Files - - - Resource Files - - - - - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - - - Resource Files - - - \ No newline at end of file diff --git a/native/MsgHook/MsgHook.vcxproj.user b/native/MsgHook/MsgHook.vcxproj.user deleted file mode 100644 index ace9a86..0000000 --- a/native/MsgHook/MsgHook.vcxproj.user +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/native/MsgHook/MsgHookTest.aps b/native/MsgHook/MsgHookTest.aps deleted file mode 100644 index 0f73f8487c5c01d13130d5523926a2b5414e4b13..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 73208 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

wrjh*UVo}_bKP2i&9Sq6*ceMP zpFf(+8UIx6YBF_gANI`7_F?C&b?buK*ZS<5R3pX$`@qT3n*aAGX#SS&mst zoJ$5;yUfpX)*3&z&2(3cq=2opvwhfUGf4*bG5nNi?cUD~!QR{1K5WF5#(%*pY|fqS z!&Y6u&RW3cTEGTd0_?Gc1f-pDl_q%*ck(ii3QFE40XuI2`)&dIZp2>%Y!I;j7O(@y z_vRe}Hsa#4j+e^w2R8Qt_WS}q00iv+1#JHXd;lnz(;6^Mjl)-fGw$SN8UTI+1bhMr z*zt>p3?$$qK)_dkfd2sjyMF=ue*r%L;? zx^;UT?RR^vn7)Lqy@1WUfDOHXEj{ox0`~O+HunNH^#V5d0=D>~@qu{25CQvp0XuvN zu+>Lba6KU9|EV3+}!^3k(+`~ADQ0{(Dw9^1wp`pr;p5Qd-~{t_NR{`|LDyjr;py+ z;q;MPJA8TMme4N`-_-8Q!wZ7GJUl<}%R}@0zkH{RBpjaC=F4|%^yNXo|J_7ieta{1 zeSCq}fA$v9a&8;o3BR%gv}32@m+Oa@)+Xb8U)S##irugKcMN>$kY6y)<2wekUJAJ6 zM*#D;1#nq-@Q`NF3xUrE7J=_3K-wc|y*Di#)$_y3r0ype7O7ZEyW?9Ebti5!MtnA| zZ-+NfzVyJl`~Cx)W&zt|0b61L`(GL7bZemTT8#tVvpWx0L^E?+T5DSx6)=|9L)t}I&(&O~E+Womat ze(P@j0=C@(cHRQ^-U7DZ5@74y6bB79;DEgXcH#o|;o=WDS0Cp2+mh4f6l~K4?9>J9 z)m3OO)39X+W(X3nTNkij7qEX9u%j3E&!6}j%8xrRFSzdb9sR%fuaC~W} zhU2$g(Qv$~Yr}C)FX`Cu{-R47KD@0{!^gLWH~inyh!d~g8ufW?QM*!<4+Q+Gp@N3t zw=u;-)sMkE2OQ?0_d0+O?E!oY5JkH9A6L99>2#s^Walfrm3zT|fs$gM&E6ClsqnDp zVIR`z)D(_1UvMfZ_JZK2a_Wd}as5?Jq`=cg<<>dlg ziC$bqJbuwz^D(T@Jbuy7EF0u_{Gy*#JkMN=e%d{L(a$tzaF^-vi|+0-w0YX&7v19* z-Rvw;T)q!dNob5f< z;}_lI7v19*9h>BL8qVc6`6tLfn_Kja9>3^KPQl&We|!9*d;FsR1l#ZIRVdFD%Jmq| zz&b$1&jVhl`y77J6_ptG=NSAjNIJmTo@0>h@r&;9i_Xiy6MlyhXyGW_;}?CM>I3}( z{GvmJ1Ht_qZu(tRC-XfQj|6@u30$a6;jdke#o_Ub{xkYk_xMFu{E>V7qBpk}((GX_ z1bh6V|8%navGVu$MgR3=&vV7P-X6c`zup|M9=*pe`mZa0k6-j(PyTF&*v>7J3I&fYx4K_MgQg2lV%_2@r(Y;$y_@(v2~r{f5@-9$1gf&Rh#3V6FV0V zA|Ai!7bbH}h8H?dT6vFO^b3>!e=B!Q{vN;Rzpfv3k6(0;Uv!UObdO*3pXs+~PqiKi zcqDM15>TFrTH3KxaCyxR=sfH4u&EM&+|DFdcY1Tb=pnKKcRem0s0P4!_!9%y?>ewT zvd1sF$1l3}swXl3X72HeettgY&gDyv^Vvrq2ajKLk6(0;Uv!UOblh`$c>JP!{Guy& z1?4`Y#rd1<+3qRYH(loU_(j*Gc7E977v19*-QySicm2NW9K3d7R5&R=d*m#B(b)pH zr9E1cU9e8(pXI`=9>3`7J@HIF(V6b?i>~-J_xMHk_(kV4u(@CKLV3hQp4BgUU^Bny zZJYT;Z`aH(dQdaJ=)ukWqPK767d@nzUvxgqBJfRE2P}jyps1C8@gH>PO{4H<4hzX5 z^ZhF_5VPT50Tt6sDw9;@;)6UJWs?H~Gq(5-M#**NO&KB+2@@Bzul1 zAR}5W2eu&{N||V}OxBqSthMP^F_BU!i!#8SiGN0#ge!*tH7AMEz>!LcG=`Evub`lc zIEq0ZX2`mAl#UilC`Z;`2D;V~;g75I#t1CvSE($Sk8~o+m5^QbWH9kR?wuyXz$O_| zpfAWWgwi#{eEdTC@ zS1RP81LVuT7b2dFF(~b5^}XZ*d^% zo`6=Yn3Dp?r5Ncb$Rx5^J(zveb49aylE7U`^FS*=&+?@_`%)71Lk-a=AB8z`4PNAv zJ{!5w=#LjNxUXq+on)B=0qG=-<+)JO&L+=}lH&*BKO9Mrllxi@pygh49#RBT`tA6$ zp{?~vRxK}H={r;&Z=|{3N!TC7a>Xg-ljBx_}6TePrW7KxF4t?d5qzrOpsp`;rF-FWg+VvdcDtSIGMQ#GM zQ|nozw%h!?X+8t8B+6yePM3M)Jvkb!jll_$igQYLUjHWIbV{Ugvdo!Em|b|93qtAt z&8_sm`CPg8pV!cMDx$tvLnm8VL!9qW^FKR7{&-p-%YS}`e21Ff*h;>#55lpwo8+E` zlY-A?zCUQY!Gzi1Q@yqR&!fxa9{8e_`jxdc68&pOU&?&mlXlF%4X093tM#qI91MXx zzH+H=6U3b?!HC&S!TgTFbqrQ>8mOabJW|P+YqO*>j}jtX?hVSBpxg)ejxi7{qX0rE zXBpG@j>t440Bc)@(YUTs<9^`L=xq=mqSED!3GrwxEwOto->A9nwXD-h@$C(vc`f`G z5BP-E?zuefB#d;t95MIbiwof-Z@Ld!EoCKkYmQ|wZiaUv@9gDSGR@2PEXXU)wdCm% z(=#&1C#R%krHq-7cAYUfxNXmZ;+#Tzu0_|wmTjGBvCXkq2j}+y-BO%ekOz!n1;v)8 zlBSg8WaF5ujLE4Z)65yJ70fLt&Mlc+rWCg~Z_m9H`iJFkj&U$Y^Kk_8pWW!I%=JjQ zHh7Qo2`I#3W=3$8Tk7@8WjmN!a1imj<6w~2vtJsK-M-tF_Ov1JweFj|%&&FN%r7X@ zm0C+?TC)+9LKWp;|qd@<>MQKce|eF%dk)@r0tKE zX(vV2a}a_U&arf&4cw3c&zH*bW-8Hi!c!D{o^>bc!s+u3I{cAx*LvK_4YpazZJ=Gs zZdrM3Ja%3LETz^%jJs~cRZ zFv>B4AjR1O*d-XaK5LmZ2Q(=Y$VT#Mi$>*D_$-AbV3a4wbd|5S%Ag_x(a7c$PfC-3 zVZ3SKiBha-lf$pE8<2jdscLbA0Tjn4mH+m#8%))~-y%bVy$MYnQtAr zu(kLbekR9m5%xDF?>05hSHDN>)7O0>xZ9$x7A;sYvVX7W+7do;T z%;-&H-d9hAEN+7;Kwl_3*tnSwN=g45k;)%@LzaESk?*|hoiV=4F}{?_J;Lm$+wwIE zim+5{iH5k!@4W4oCs!v0n5r`);^jaGBEy_>s^N;t?|kfG$ZOM-$A3XA+0iI=q*U$< zNO(77Sr(oU&DFu1uH?RCMnIJ2h{(iE+=RKRFe1{lD>*_ZpCZHdvH%sH;7RDT(eb*` zu}i4*U^}W1VQJW;n1Q}H-+2Z`V+L~3rtDaPl6Rtyk~bjH@w(WT?5J-Ti~-&TE)iBC z+X#MACd!b&4E2(73XYYuEQNvpGGn6SA81cWpX$n`_e0MJjX$k45VH6POS?L32lMa} z*uwdaUcaC!YoLQ@J8S5T{p{Dk+3Oh{u?69q-EMZFrjXlHaWr$ z;aD&&*>A%ii$y;_kf}X3e-Rb{eh6urYwIf)FVQ*Md;F8*4*Zn`VcyT+I$; z`I;QcayB7fE^mjj+|8i#@-;b@$=zhq@2$r&Bh$j2r65n+vDYOut!Gn0Z~=}@`z5CB z+e7od-7bXP`>P$M?R!E$c@4$(nkrAkqieJM@Mq_`;F9droG&s{TBO^pbch}Lu# zlf$=HB=Sv;NdbDHuWK}gtna!3t=T%85_Z@FK_T^;-%)Fa>Sq zvDZJ3eb_L>;b#SPNu9k##w}6toAbU+Kr0w$M!iMLwy=rK)QciaY!gl*+nd zU`KJ^f*k%1R6h#^cKKa_Og;gY2z#Ku&UCxqB_Nn8M|1}wTQ@L=BUb+%28r53jQYC7 z>U3`$RAI!7j^IG9(&6Wgrc6~{W{2M?-nWjhe*>q4yhoR>UHHF&`>i1M` z;L5zNmgP_6v5>A>5)(IPI`6IpzqiV^rn$Nl%GB1#~G! zTj1pMClBKjKCdxzL;!9-OHmW*8H+B8uvhV*fms+XXCXOa66T4|#px!8Ibu?M0WVRk z;B-^vf{1joCGrs(kMgJ>Il{zQksLE{tS`31_c*&at}~;2y4ismO%7D2-&21%>T2j= zax9LJ9jNl#%~MdVCM)X#Ad~TOR{Yj7s`Bf`m4Sabw^!w-19g|*H`uNaN!>2LM#Nae z=>Fs3%#j?CkN8S8UMj-;F}Nzf>8M7|Mg1HIgje7<*nf~f8YCvdzCfaK#4s?Cy{*DG zMvC|tGPZD2^1MCFWftyS3N}@~CWqI;_?)t$WA*`+<>9{eUJiq9gwF5Joorzvx-)7& zq6eckBgk-{m)*bq2R>1pQzYjIy;#q8q_7-RuV#r}z0vQzdkqn@rN`q0d0Cvw#-4wZp>PKTRrf&~+uKV_& z*sUzarnAjd-E{{q{^}81fg0MI96o$w^%na~l{*4V3IDX7blsEAGZEz;P|B@1k8+|H zk5ly8&AoMO->huw0Gp4#ZigwyG~DE~TVJ9Tkq<&5tPiS?@)cpv`0-8bV2b{T2wUS4UyV3($7`7nfMCWs8E@7fF>OLm z5kTpA(6mXfHfK)wr#U3~pt-8+m1r&H+qV$w!rekK122uN9eYKu!>CB~Ix4U4$?GwB zeP3QP<#iOU+PXJ7!cC6DX2+hy$`4K@enY-y$D6hei4H?RYEHWEw+GEWZ<=y;n|r>Q zlC$GlN5@c;BPrBj3NZOx7w}D@Plzojq$bg)@>rwkUbD|`v;GxGS}xO10^wgw?!8n; zA|5i4@n(G$MzzU{&l2VMbUrKKd0p|$s7waDe2J`Te`I*$5K|7nq5$wnU896Q*wzcR%?lMpe`@F zpwN=5D=f**EhwI;D=e5{&9=@%(Q5#MZ`3Hc-a}5G%|br~|i*G2cL)HbzO}uE@X= z(UsYASQ2^m!oqp@uvuU$$Sy3HZ^`9H0?t>ZVJmUTL|$%5v1Kr78JCfqQJM7hK7CO@ z(iZEE+4Z{j*74k3KWu7owyj`}WopxKr*gRSH6dM`Qq=P zgFUdVFSU*Fr?%1lrMY-e=e!>HxHuhaWnE_ldj)w@kk=(jnUO@7_2{`4xGjT1bH`CYOnNikPMv)y&}$5NgS-@V8@y4s+FyRx(?VO`b2_4Z zF0@ggZ368~!E-JulKHjI#Y7)7&J?q9o=n7pp0|1uCFbVhHy`}0n(sBrYO$ysw8$r| z)KaV-RTSViF}uJvs>GUsQ>oCBHe;40$3}I&8HE;0DSj78Dl93pn6is=3oUe=aoiZA zSsy((x3G}t1;0{jL9s25=t}>&Ic3E;rSr1Ns2|5|CCDG3#ENE=flR3x6OzV7MMf%R zANI=1E-IUuWhpPfC-&uDSy^-OyHOF&P5gia?khn_$|@_h zDYcC%D70CS^j0c((JL!QsmbK0;6HJVeC$|?=MdfIoyBn!DWcn(;#n5@J4%)m=M~Jf z$>SQ|$+I!e1t?u+vDwQ|AlsIY1Dt3la~AP$Gx%ulot3A=<|&+6*`=jfwt1z<8wE;^ z)s~fOnPHzf(_+oamp2HnYq)g`&t@?gCMQmsbUjV+&9WDx#T&_lG7u@wJ{HF}-dU3R zkWZFM`HYOkIcPb(1oFnXU-!+_D$}NsUiQMQC)ur5OR;tvqW68r7b~L6HJ0aCN^Q88 zXrg<;7boZ$v%P&%%97O)q+=1GQtItH&Q>^~z-qH+7mhFHAL@v@G0lt-+Dk{-i*vXE zW3i2IYvG)elwE4GTP;Z?=r(>!d6kkauH$&pXRO^~otJL0=9NIw#W~=#%MsqsYdEtY z=SE2&devog+Fb`<7F?*RAaKL2;IbL>%50XR%z`3IVi|^P;nGtQn z%`a0*V83U4e`v0gGZ?>{7vi5McqHJFfJXuz3H;_Ifah-Q*_&~82RyOhIh^r)Kn3E< zfu92$!+Ry(Pbm!V495`<2gZ9Toj{y%9&{$c!OyxA^VRqQ;FmAQV>{@(fdldGz&v=5 zr3f`X5cnuS2Rh@gRQlJz1M%))0G%=l|kG&(;EM7Bc5&k^#Q!z8?e zT@R+?N&y<4T~=l(nt}J@@}k1xvJpM(*5YAhIr)~N?6N^c1v%D|vXVU8AUt&r%PuP# zJSVD$4$nvhd6qKU1m(NHh#vSb(BtahwmRK#o7G-sODWDPInUbkN;#A)v*g&V1-5yz z9v#APt7Wzwtypr?tp#)N@HEp>=FD`>HkP9(Kl7O_b1a3rLcWgZkzJNjJg4MFi?xT& zUXUn11B~dAmt9z9>2dY&tDJQ=FYK(}g`-95!>?-A*Wp(=2aV#xuhQgsb$ViYVsdiI zn9-9asgeIC&F{t7#2sPDhk6&&!C z?X8kmuc*+#HsQ94BBX5-7FQHYyslz_#OozJ?}e(0LdoB`;s!~7QRTl~^0TfW*QE}X z_y;(%mml5aq8oUOyuI3a;o}{Y1Eh5x&~g5@ihCvR9o&(WIKDmk$uDY6n5H8e=b<6W zMK_Skabby_h>5fq_tD`TF{pZP9Cr=rM5}SeHtJfa*12-gQp~Brl>+{~u4%WprVAK@ zpZaCLc&zFjfhzDNMqg`0|NFt9G5tBxNCYo8n0QUjJHs z1FCdP25%6Ly8%fv?Hb;8UGKj+no0E=PTim#ZJ(0p>YE z^AawxUzrD`uCP2ux_4f}SZ{ksWu0&3c3%+f??I8vuXA1HLHxiSvUnKk*}UMw%l`*W zI_v?Jr=dOg8RC@!+JlZH-&rC(pH=$Q@o&XYD|d!ABvuM<*C_Z@AjQt}NhQbYAEQzxF@?!Ifsb6C-Milh0yd1w+P!iBJbbX2K3z zr-Ya70s3!7RoRa>geuYrV?i|>261H}xWUkNR=4_CZm%IhlAy>puqu`_^N)i!{~#{) zi~PVa83Ma}m+^ZnMxki)y^FT1V!NQ@T5X;4-{wMlxzK1?XqO+?hRyA;UGj!5#qYUff46dz4Y>WB zxAl95F0DrtN_&p&v%FSuvm$J#&Ono)s1ufqh$A>1qg`d=OF55wI*3&PE2qjlGbmL7 z_2ayW>er($l_NT0wUIq2Kko{zDi>Un>q}%#C?DANK(2ThlcCI0UxA!YUcjm15c0h5 z3u&zC8;eSVBlsGo<7?M0e2op~>xhoH<}C{|NE93+QP)t3{DLIv6(G?dU!Vv7=ob&< zFw&}l68o--1gnyA1CiS0r^8iIwTqCs*fPA8s+Jr? zk(ItOdXzl`ghgUFt4hH%%d0*GBbtnRPFM_x`9a-T3h{_mj$j6;aDt~7^W<~gB5XMF zFwX{{Jv*cnaF=tCs#@2-vOLts9^o)_Jd0|bU;SZ-OX>ihjXKMlusV4X9kByJ7YC}0$61vwNZ12J*aDCyH{@b}Kg4UY((=8^E%`(&F9D7o zt2Q1>uQnb}M=3`vuMu$|U9MxS_bTI2VLvVo$h9Ku#}MOk>Y}X=#6EKvkJd+^D?89q zA8tt*HfpOM2WcwWbCXTeK%THE939`rmx+#32``t0INB&DWaTd3gwxh9vTl%EI_Bcb z8M#ESN6}HIViO{YtWyKj-Q&eO2W=(}cj~!*4s~#4-mR$=$Eyq{|%K!ED1^wCvPLailipRzVdSGl5R=JwqN)`uz)s;)I007DmqJ zlgh5IYgs__TEWYp*K!vbD`UWEhyX>{P?#WuRs#kcYZ}h?7!F1u?57;Y@74ONjHjF< z+~L}k(z&tPYUwEKp~}+DAKd{W187|ijhVH|X@gh7K)E|*KL41f$;84F4 zgd28XlgNpzJP|5ITxmH)yz(<9){gne@YlZ*?9`x77`$YME%4iYt9aKpSSC~(Phrny zVzdtX_j)@_1iB!uZxmrV6-P*nfq<_s^BKR^8yoeF3E$e=Y)eDU4WUcEvIjX{4!&eG z(e`7Z?Ha3Mc?jPgsEXxQZpfOl2m3c4Wks(-c`cP!o4l6GYlXZnme-}Y{x5}P5kwCH z)&f{p;}yU$Kt14j=uU>XL>~cO z26%%W4j2fC10(~?fC+$7z#_mp@I3~&8^AUO6#%v>m<5;)7y~c>A^>a|&>r9mXas0s z0v4$j`iB`P?((LzM%TUtc!Mw$u&)Q;QX;+;@hz$~eX1ty9q9VF=uzR9+y7dJs;Tbt z)1TsT{FFLW|Be3CPoX=-<1z8&LIXB(D9&>)lxIDx-Y4q*@Iygr>f@7deEao2ZNB1p zZqmaVcUHx#PWauSwZMPB(^Adx|I+@w#!WBC=&kN9r(V#EW_m#t&Gdr)?c17O(DUb^ z7xa!(FKD=nUeIW#UQo(e^n##|nm+wi-Je0tG=j=h{hy6o(y9Nm zu1V*I);GnW|8t^M{h!BB+Fk#r!A1Ya=+ystMB#MN|M?DlE!BU#ThaficIy93K`l-C zKRtaE{hvKf{h#hU)*R^XXo^rViY`(yZQ{}Jk1bhqvu$N1#YCUW5!tLIg?Xi{cXh%$ zg*9qeqsYQqK+p%8X`xSCsYxY8rP)@CGn3x(Hd(SuagOruNvr~epLmEqb<;wsYefsG zuBAo}y>%8Xq{q*yg+#4rA-&?JL-fQMb%_4V>)l0%=%$OfZvX;Kq!8r#DU*7 zQWx1fazJEEWJ07Na&hF&NL^I#sHCWzs6|naN3D;ljoKCUM%00*e@1;2)et43e52b% z_l=H?z9xE9bY}GA=7mFnHp0NGe4#x z=JuEeVjhk8OU&As4KZ6{cE!9Fb0FqlF+ark#|FiAjMc?P$Bu|iiX9(2EjB;a7CS$- zGPWxAj@UoP-W&T!?BlT;V{2po9{XnO(b)gQQk;KWP~4?);c?yKddCfli-}8!8yS}p zH#Tl^Ty|Vh+?=?Z;ugj^;#R~x68Ci6y12TyzsJ2A_h#J3ai7Hv88TwXs3ECCCJnh^ z$m}7v4f)fMCx+Ax*)zmHzFqvl_^9~w_*3ye#D@$WG&FJO=%H(eZWy|K=zBv442v9Q z9d_5S$A+yPRx@nduvdnCHSD`#{s}<|mnMWKT$vD&&_5wEfuHyBpY}x_jXV|^6crk^ zGkSOQaJ@l4UB5tIp+}Y{cqH(%NMI^z)d7U?2egrGxcWkr1m~qg3vYOuFG=?6SOEWc za{*Q-Kfz;~;>pegA7|`;aRU5T8R3VGLkMm<{F=*t*+v56FR?Hg>IH$m{LapyyLyF6 zzvc_f3--UsNm;3rQnBPFG!O0FTSF`^U%Npi&#d?z?b6EU_(NDm4lOk;aLg#Zr| zOh_7^k(rj7WV#O2s7PMmO;oHCrbhA7N=eQdm0~t#Wk492yn09OK;9FCUabxSu4*|fS)at7P$d9*E4FxqcCf6O}n2ykRRW078tPm zo1Ynb##so?GWdebmbNraxh?(m1^TiV;HmKL$bMv-*FIHx87@9U zF8d)Kj8f$QR*hmGicOvXE6{@rtyzz$ZmM}ni*xyv7BY^)frG=(oV2{V1BCNQ-V z>GP(9nHpQRBX3GyNP5%l=u4M0--y2Q;rU87W~7WBgC~GA8a+NG*=SA~W5j$QaBe0J z$CNQi=JClmbz7z4oNk2|r?W~`o(JR;g6k8*IcI9KY+oyl2NP#$JZqe@^cGn`${x^Cz>J&GL}oiFe)UMJfYJg#pPmEzTT>kbq6h9Y1TDAA5XD`c014GRCdc}`Fx$N<+D<9^YUxZrLCn}J}WCX&u958o~PwYJ&I=S zuYr7mZq@S9m|J=N`?PPb*7EUy?Uv8-dGJLoAIxs~ET4!ioX_$pl=-gmVMWQUGT#^Z z%0hL`mo;wX@~!*)XCMEOGGFoS%ni7fXP@;If8+9spJ(^{O(1l6iP!ms`@-#hDX*~ZAn}Y(H diff --git a/native/MsgHook/MsgHookTest.ico b/native/MsgHook/MsgHookTest.ico deleted file mode 100644 index d551aa3aaf80adf9b7760e2eb8de95a5c3e53df6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23558 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 (TXTBOX_LIMIT - 500)) - {//need to truncate the beginning so the text doesn't go past it's limit - SendMessage(txtHwnd, EM_SETSEL, 0, 20000); - SendMessage(txtHwnd, EM_REPLACESEL, 0, (LPARAM)_T("")); - len = GetWindowTextLength(txtHwnd); - } - //DWORD l,r; - //SendMessage(txtHwnd, EM_GETSEL,(WPARAM)&l,(LPARAM)&r); - SendMessage(txtHwnd, EM_SETSEL, len, len); - SendMessage(txtHwnd, EM_REPLACESEL, 0, (LPARAM)newText); - len = GetWindowTextLength(txtHwnd); - SendMessage(txtHwnd, EM_SETSEL, len, len); - //SendMessage(txtHwnd, EM_SETSEL,l,r); -} - -void InitMsgFiltersAndLookup() -{ - if (!filterWmCommand && !filterAbove && !filterWmNotify && !filterCustom) - InitializeMsgLookup(); - else - { - int allowList[4]; - for (int i = 0; i < 4; i ++) - allowList[i] = -1; - - if (filterWmCommand) { - AppendText(txtbox, _T("filtering on WM_COMMAND & WM_MENUCOMMAND\r\n")); - allowList[0] = WM_COMMAND; - allowList[1] = WM_MENUCOMMAND; - } - if (filterWmNotify) - { - AppendText(txtbox, _T("filtering on WM_NOTIFY\r\n")); - allowList[2] = WM_NOTIFY; - } - //if (filterAbove) - // allowList[0] = WM_COMMAND; - if (filterCustom && _tcslen(customMsgStr) > 0) - { - InitializeMsgLookup(); //initialize full msg list and do reverse lookup based on custom filter string - for (int x = 0; x < MAX_MSG_LOOKUP; x++) - { - if (_tcscmp(customMsgStr, MSG_LOOKUP[x]) == 0) { - TCHAR tmp[100]; - _stprintf_s(tmp, _T("filtering on %s (%d)\r\n"), customMsgStr, x); - AppendText(txtbox, tmp); - allowList[3] = x; - } - } - } - InitializeMsgLookup(allowList, 4); - } -} - -void StartMessageHook() -{ - AppendText(txtbox, _T("Starting Message Hook\r\n")); - //targetHwnd = FindWindow(targetClassname, NULL); - - TCHAR tmp[500]; - - DWORD tid = 0; - if (_tcscmp(targetHwndStr, _T("")) != 0) //if target HWND was used - { - TCHAR *stopStr; - targetHwnd = (HWND)_tcstol(targetHwndStr, &stopStr, 10); - tid = GetWindowThreadProcessId(targetHwnd, NULL); - _stprintf_s(tmp, _T("Target Handle: %ld, and Thread Id: %ld\r\n"), targetHwnd, tid); - } - - targetPid = 0; - if (_tcscmp(targetProcessId, _T("")) != 0) //if target pid was used - { - TCHAR *stopStr; - targetPid = (DWORD)_tcstol(targetProcessId, &stopStr, 10); - tid = GetProcessMainThreadId(targetPid); - _stprintf_s(tmp, _T("Target PId: %ld, and Thread Id: %ld\r\n"), targetPid, tid); - } - - InitMsgFiltersAndLookup(); - //InitializeMsgLookup(); - - AppendText(txtbox, tmp); - - //block self/global msg hook - if (tid == 0) { - AppendText(txtbox, _T("Target thread not found\r\n")); - return; - } - - if (targetPid != 0) // handle various types of bit matching - { - BOOL current64bit = IsCurrentProcess64Bit(); - if (IsProcess64Bit(targetPid) && current64bit) - { - _stprintf_s(tmp, _T("Target PId (%ld) is a matching 64 bit process\r\n"), targetPid); - SetCustomMsgHookDll(dll64bitName, dllProcName); - } - else if(!IsProcess64Bit(targetPid) && !current64bit) - { - _stprintf_s(tmp, _T("Target PId (%ld) is a matching 32 bit process\r\n"), targetPid); - SetCustomMsgHookDll(dll32bitName, dllProcName); - } - else - { - if (current64bit) - _stprintf_s(tmp, _T("Target PId (%ld) is a not matching 64 bit process.\r\n"), targetPid); - else - _stprintf_s(tmp, _T("Target PId (%ld) is a not matching 32 bit process.\r\n"), targetPid); - AppendText(txtbox, tmp); - TCHAR *dllname = dll32bitName; - TCHAR *exename = _T("SetMsgHook32.exe"); - int setMsgHookRes = IDR_SETMH32; - if (IsProcess64Bit(targetPid)) - { - dllname = dll64bitName; - exename = _T("SetMsgHook64.exe"); - setMsgHookRes = IDR_SETMH64; - } - _tcscat_s(tmp, 500, _T("Do you wish to open a new matching Message Hook Window?")); - int mbResult = MessageBox(mainHwnd, tmp, _T("Message Hook"), MB_ICONQUESTION | MB_YESNO); - if (mbResult == IDNO) - return ; - _stprintf_s(tmp, _T("%s %s 0 %d"), exename, dllname, targetPid); - RunResource(setMsgHookRes, tmp); - //EnableMenuItem(mainMenu, ID_FILE_STOPHOOK, MF_ENABLED); - //EnableMenuItem(mainMenu, ID_FILE_STARTHOOK, MF_DISABLED | MF_GRAYED); - _tcscat_s(tmp, 500, _T("\r\n")); - AppendText(txtbox, tmp); - PostQuitMessage(2); - return; - } - AppendText(txtbox, tmp); - } - if (SetMsgHook(mainHwnd, tid)) - { - EnableMenuItem(mainMenu, ID_FILE_STOPHOOK, MF_ENABLED); - EnableMenuItem(mainMenu, ID_FILE_STARTHOOK, MF_DISABLED | MF_GRAYED); - AppendText(txtbox, _T("Hook successfully initialized\r\n")); - } - else - AppendText(txtbox, _T("Hook failed to initialize\r\n")); -} - -void StopMessageHook() -{ - EnableMenuItem(mainMenu, ID_FILE_STOPHOOK, MF_DISABLED | MF_GRAYED); - EnableMenuItem(mainMenu, ID_FILE_STARTHOOK, MF_ENABLED); - AppendText(txtbox, TEXT("Stopping Message Hook\r\n")); - //KillHook(); - RemoveHook(); - msgCount = 0; -} - -bool OnCopyData(COPYDATASTRUCT* pCopyDataStruct) // WM_COPYDATA lParam will have this struct -{ - if( pCopyDataStruct->cbData!=sizeof(HEVENT)) - return false; - HEVENT Event; - memcpy(&Event, (HEVENT*)pCopyDataStruct->lpData, sizeof(HEVENT)); // transfer data to internal variable - if (Event.dwHookType == WH_KEYBOARD) - { - //KBDLLHOOKSTRUCT* pkh = (KBDLLHOOKSTRUCT*) Event.lParam; - //char tmp[50]; - //return wkvn->KeyboardData(pkh->vkCode,Event.wParam); - } - else if (Event.dwHookType == WH_MOUSE) - { - //MSLLHOOKSTRUCT* pmh = (MSLLHOOKSTRUCT*) Event.lParam; - //char tmp[50]; - //if (Event.wParam == WM_LBUTTONDOWN) - // return wkvn->MouseClickData(1,true); - // else - // return wkvn->MouseMoveData(pmh->pt.x,pmh->pt.y); - } - else if (Event.dwHookType == WH_CALLWNDPROC) - { - TCHAR *msgName = _T("unknown"); - if (Event.nCode < MAX_MSG_LOOKUP) - msgName = MSG_LOOKUP[Event.nCode]; - else - { - if (!filterAbove) - return false; - } - if (_tcscmp(msgName, _T("")) != 0) - { - ++msgCount; - TCHAR msgHwndClassname[20]; - GetClassName(Event.hWnd, msgHwndClassname, 20); - TCHAR tmp[200]; - _stprintf_s(tmp, _T("<%07ld> hwnd: %ld (%s), msg: %s (%ld), wparam: '%s'[%ld], lparam: '%s'{%ld}\r\n"), msgCount, Event.hWnd, msgHwndClassname, msgName, Event.nCode, Event.wParamStr, Event.wParam, Event.lParamStr,Event.lParam); - AppendText(txtbox, tmp); - } - } - return false; -} - -void SendWmSettext() //ID_TESTMSGS_WM -{ - //SetWindowText(targetHwnd, _T("This is a test")); - //TCHAR txt[] = _T("This is a test"); - TCHAR *stopStr; - long wparam = _tcstol(testWmSettextW, &stopStr, 10); - SendMessage(targetHwnd, WM_SETTEXT, wparam, (LPARAM)testWmSettextL); - //PostMessage(targetHwnd, WM_SETTEXT, 0 , (LPARAM)txt); -} - - -void SendWmCommand() //ID_TESTMSGS_WM -{ - TCHAR *stopStr; - HWND sendHwnd = targetHwnd; - if (_tcscmp(targetHwndStr, _T("")) != 0) - { - sendHwnd = (HWND)_tcstol(targetHwndStr, &stopStr, 10); - } - long wparam = _tcstol(testWmCommandW, &stopStr, 10); - long lparam = _tcstol(testWmCommandL, &stopStr, 10); - SendMessage(sendHwnd, WM_COMMAND, wparam, lparam); - - /* - TCHAR tmp[500]; - _stprintf_s(tmp, _T("hook handle %ld\r\n"), (long)GetCurrentHookHandle()); - AppendText(txtbox, tmp); */ -} - -void HotKeyPressed(WPARAM wParam) -{ - //AppendText(txtbox, _T("hotkey test")); - if (wParam == (pauseHotKey + hotkeyIdOffset)) - { - if (!isPaused) - { - AppendText(txtbox, _T("Paused\r\n")); - isPaused = true; - } - else - { - isPaused = false; - AppendText(txtbox, _T("Unpaused\r\n")); - } - } -} - -extern "C" __declspec(dllexport) void CreateMsgHookWindow(LPTSTR lpCmdLine) -{ - //StartWinMain(GetModuleHandle(NULL), NULL, lpCmdLine, SW_SHOW); - StartWinMain((HINSTANCE)pData->g_hInstance, NULL, lpCmdLine, SW_SHOW); - -} - -int APIENTRY StartWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) -{ - // get this Dlls path, by default set both 32 and 64 bit names the same - if (_tcscmp(dll32bitName, _T("")) == 0 && _tcscmp(dll64bitName, _T("")) == 0) - { - HMODULE hm = NULL; - if (!GetModuleHandleEx(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS | GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT,(LPCWSTR) &StartWinMain, &hm)) - { - int ret = GetLastError(); - fprintf(stderr, "GetModuleHandle returned %d\n", ret); - } - GetModuleFileName(hm, dll32bitName, sizeof(dll32bitName)); - GetModuleFileName(hm, dll64bitName, sizeof(dll64bitName)); - //MessageBox(0, dll32bitname, dll64bitname, 0); - } - - UNREFERENCED_PARAMETER(hPrevInstance); - UNREFERENCED_PARAMETER(lpCmdLine); - - // TODO: Place code here. - MSG msg; - HACCEL hAccelTable; - - // Initialize global strings - LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING); - LoadString(hInstance, IDC_MSGHOOKTEST, szWindowClass, MAX_LOADSTRING); - MyRegisterClass(hInstance); - - // Perform application initialization: - if (!InitInstance (hInstance, nCmdShow)) - { - return FALSE; - } - - hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_MSGHOOKTEST)); - - if (lpCmdLine != NULL) //process command line args - { - if (_tcslen(lpCmdLine) > 0) - { - TCHAR *stopStr; - targetPid = (DWORD)_tcstol(lpCmdLine, &stopStr, 10); - _stprintf_s(targetProcessId, _T("%ld"), (long)targetPid); - StartMessageHook(); - } - } - - // Main message loop: - while (GetMessage(&msg, NULL, 0, 0)) - { - //if (msg.message == WM_HOTKEY) - // HotKeyPressed(msg.wParam); - if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)) - { - TranslateMessage(&msg); - DispatchMessage(&msg); - } - } - UnregisterHotKey(mainHwnd, pauseHotKey + hotkeyIdOffset); - - return (int) msg.wParam; -} - -// -// FUNCTION: MyRegisterClass() -// -// PURPOSE: Registers the window class. -// -// COMMENTS: -// -// This function and its usage are only necessary if you want this code -// to be compatible with Win32 systems prior to the 'RegisterClassEx' -// function that was added to Windows 95. It is important to call this function -// so that the application will get 'well formed' small icons associated -// with it. -// -ATOM MyRegisterClass(HINSTANCE hInstance) -{ - WNDCLASSEX wcex; - - wcex.cbSize = sizeof(WNDCLASSEX); - - wcex.style = CS_HREDRAW | CS_VREDRAW; - wcex.lpfnWndProc = WndProc; - wcex.cbClsExtra = 0; - wcex.cbWndExtra = 0; - wcex.hInstance = hInstance; - wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_MSGHOOKICO)); - wcex.hCursor = LoadCursor(NULL, IDC_ARROW); - wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); - wcex.lpszMenuName = MAKEINTRESOURCE(IDC_MSGHOOKTEST); - wcex.lpszClassName = szWindowClass; - wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL)); - - return RegisterClassEx(&wcex); -} - -// -// FUNCTION: InitInstance(HINSTANCE, int) -// -// PURPOSE: Saves instance handle and creates main window -// -// COMMENTS: -// -// In this function, we save the instance handle in a global variable and -// create and display the main program window. -// -BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) -{ - HWND hWnd; - - hInst = hInstance; // Store instance handle in our global variable - - hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, - CW_USEDEFAULT, 0, 700, 300, NULL, NULL, hInstance, NULL); - - if (!hWnd) { - DWORD lastErr = GetLastError(); - printf("Error Creating Window %d\n", lastErr); - _tprintf(_T("Window Class Name: %s, Instance: %ld\n"), szWindowClass, (long)hInstance); - return FALSE; - } - mainHwnd = hWnd; - - RECT rect; - GetClientRect(hWnd, &rect); - // make the txtbox edit control almost the same size as the parent window - //WS_CHILD | WS_VISIBLE | WS_VSCROLL | ES_LEFT | ES_MULTILINE | ES_AUTOVSCROLL - txtbox = CreateWindow(TEXT("Edit"),TEXT(""), WS_CHILD | WS_VISIBLE | ES_MULTILINE | WS_VSCROLL | ES_AUTOVSCROLL | ES_READONLY, - txtboxSpacing, txtboxSpacing,rect.right-(txtboxSpacing*2), rect.bottom-(txtboxSpacing*2), hWnd, NULL, NULL, NULL); - SendMessage(txtbox, EM_SETLIMITTEXT, (WPARAM)TXTBOX_LIMIT, 0); - - HFONT hFont = CreateFont(14, 0, 0, 0, FW_DONTCARE, FALSE, FALSE, FALSE, ANSI_CHARSET, - OUT_TT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, - DEFAULT_PITCH | FF_DONTCARE, TEXT("Arial")); - SendMessage(txtbox, WM_SETFONT, (WPARAM)hFont, TRUE); - - mainMenu = GetMenu(mainHwnd); - EnableMenuItem(mainMenu, ID_FILE_STOPHOOK, MF_DISABLED | MF_GRAYED); - - RegisterHotKey(mainHwnd, pauseHotKey + hotkeyIdOffset, MOD_NOREPEAT | MOD_SHIFT | MOD_CONTROL, pauseHotKey); - - ShowWindow(hWnd, nCmdShow); - UpdateWindow(hWnd); - - //set always on top - SetWindowPos(mainHwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE| SWP_NOMOVE); - - return TRUE; -} - -// -// FUNCTION: WndProc(HWND, UINT, WPARAM, LPARAM) -// -// PURPOSE: Processes messages for the main window. -// -// WM_COMMAND - process the application menu -// WM_PAINT - Paint the main window -// WM_DESTROY - post a quit message and return -// -// -LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) -{ - int wmId, wmEvent; - PAINTSTRUCT ps; - HDC hdc; - - switch (message) - { - case WM_CREATE: - //appendText(txtbox, TEXT("test\r\n")); - break; - case WM_COPYDATA: - return (OnCopyData((COPYDATASTRUCT *) lParam)); - break; - case WM_COMMAND: - wmId = LOWORD(wParam); - wmEvent = HIWORD(wParam); - // Parse the menu selections: - switch (wmId) - { - case ID_FILE_STARTHOOK: - StartMessageHook(); - break; - case ID_FILE_STOPHOOK: - StopMessageHook(); - break; - case ID_TESTMSGS_WM: - SendWmSettext(); - break; - case ID_TESTMSGS_WMCOM: - SendWmCommand(); - break; - case ID_PROC64TEST: - if (_tcscmp(targetProcessId, _T("")) != 0) //if target pid was used - { - TCHAR tmp[500]; - TCHAR *stopStr; - targetPid = (DWORD)_tcstol(targetProcessId, &stopStr, 10); - BOOL current64bit = IsCurrentProcess64Bit(); - if (IsProcess64Bit(targetPid) && current64bit) - _stprintf_s(tmp, _T("Target pid (%ld) is a matching 64 bit process\r\n"), targetPid); - else if(!IsProcess64Bit(targetPid) && !current64bit) - _stprintf_s(tmp, _T("Target pid (%ld) is a matching 32 bit process\r\n"), targetPid); - else if (IsProcess64Bit(targetPid)) - _stprintf_s(tmp, _T("Target pid (%ld) is 64 bit process\r\n"), targetPid); - else - _stprintf_s(tmp, _T("Target pid (%ld) is 32 bit process\r\n"), targetPid); - AppendText(txtbox, tmp); - //ExtractResource(IDR_SETMH32, _T("SetMsgHook32.exe")); - //_stprintf_s(tmp, _T(" %s %ld %d"), dll32bitName, (long)mainHwnd, targetPid); - //RunResource(IDR_SETMH32, tmp); - - //MessageBox(0, , _T("64 bit Test"), 0); - } - break; - case ID_FILE_SETTINGS: - DialogBox(hInst, MAKEINTRESOURCE(IDD_DIALOG1), hWnd, DlgProc); - break; - case IDM_ABOUT: - DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, DlgProc); - break; - case ID_FILE_CLEAR: - SetWindowText(txtbox, _T("")); - break; - case IDM_EXIT: - DestroyWindow(hWnd); - break; - default: - return DefWindowProc(hWnd, message, wParam, lParam); - } - break; - case WM_HOTKEY: - HotKeyPressed(wParam); - break; - case WM_PAINT: - hdc = BeginPaint(hWnd, &ps); - // TODO: Add any drawing code here... - EndPaint(hWnd, &ps); - break; - case WM_SIZE: - { //resize the txtbox when the parent window size changes - int nWidth = LOWORD(lParam); - int nHeight = HIWORD(lParam); - SetWindowPos(txtbox, HWND_NOTOPMOST, txtboxSpacing, txtboxSpacing, nWidth-(txtboxSpacing*2), nHeight-(txtboxSpacing*2), SWP_NOZORDER|SWP_NOMOVE); - } - break; - case WM_DESTROY: - PostQuitMessage(0); - break; - default: - return DefWindowProc(hWnd, message, wParam, lParam); - } - return 0; -} - -// Message handler for about box. -INT_PTR CALLBACK DlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) -{ - UNREFERENCED_PARAMETER(lParam); - switch (message) - { - case WM_INITDIALOG: - { - //IDC_EDIT1 - //SendDlgItemMessage(hDlg, IDC_EDIT1, WM_SETTEXT, 0 , (LPARAM)targetClassname); - SendDlgItemMessage(hDlg, IDC_TARGETPID, WM_SETTEXT, 0 , (LPARAM)targetProcessId); - if (filterWmCommand) - SendDlgItemMessage(hDlg, IDC_CHECK_CMD, BM_SETCHECK, BST_CHECKED, 0); - if (filterWmNotify) - SendDlgItemMessage(hDlg, IDC_CHECK_NOT, BM_SETCHECK, BST_CHECKED, 0); - if (filterAbove) - SendDlgItemMessage(hDlg, IDC_CHECK_ABO, BM_SETCHECK, BST_CHECKED, 0); - if (filterCustom) - SendDlgItemMessage(hDlg, IDC_CUSTOMCHK, BM_SETCHECK, BST_CHECKED, 0); - SendDlgItemMessage(hDlg, IDC_WMCOMW, WM_SETTEXT, 0 , (LPARAM)testWmCommandW); - SendDlgItemMessage(hDlg, IDC_WMCOML, WM_SETTEXT, 0 , (LPARAM)testWmCommandL); - SendDlgItemMessage(hDlg, IDC_WMSETW, WM_SETTEXT, 0 , (LPARAM)testWmSettextW); - SendDlgItemMessage(hDlg, IDC_WMSETL, WM_SETTEXT, 0 , (LPARAM)testWmSettextL); - SendDlgItemMessage(hDlg, IDC_HWND, WM_SETTEXT, 0 , (LPARAM)targetHwndStr); - SendDlgItemMessage(hDlg, IDC_CUSTOMMSG, WM_SETTEXT, 0 , (LPARAM)customMsgStr); - } - return (INT_PTR)TRUE; - - case WM_COMMAND: - if (LOWORD(wParam) == IDOK) //only save on OK - { - //GetDlgItemText(hDlg, IDC_EDIT1, targetClassname, MAX_TEST_SIZE); - GetDlgItemText(hDlg, IDC_TARGETPID, targetProcessId, MAX_TEST_SIZE); - GetDlgItemText(hDlg, IDC_WMCOMW, testWmCommandW, MAX_TEST_SIZE); - GetDlgItemText(hDlg, IDC_WMCOML, testWmCommandL, MAX_TEST_SIZE); - GetDlgItemText(hDlg, IDC_WMSETW, testWmSettextW, MAX_TEST_SIZE); - GetDlgItemText(hDlg, IDC_WMSETL, testWmSettextL, MAX_TEST_SIZE); - GetDlgItemText(hDlg, IDC_HWND, targetHwndStr, MAX_TEST_SIZE); - GetDlgItemText(hDlg, IDC_CUSTOMMSG, customMsgStr, MAX_TEST_SIZE); - // check filter options - filterWmCommand = (SendDlgItemMessage(hDlg, IDC_CHECK_CMD, BM_GETCHECK, 0, 0) == BST_CHECKED); // the hard way - filterWmNotify = (IsDlgButtonChecked(hDlg, IDC_CHECK_NOT) == BST_CHECKED);// the easy way - filterAbove = (IsDlgButtonChecked(hDlg, IDC_CHECK_ABO) == BST_CHECKED); - filterCustom = (IsDlgButtonChecked(hDlg, IDC_CUSTOMCHK) == BST_CHECKED); - - InitMsgFiltersAndLookup(); - } - if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) - { - EndDialog(hDlg, LOWORD(wParam)); - return (INT_PTR)TRUE; - } - break; - } - return (INT_PTR)FALSE; -} diff --git a/native/MsgHook/MsgLookup.h b/native/MsgHook/MsgLookup.h deleted file mode 100644 index e432123..0000000 --- a/native/MsgHook/MsgLookup.h +++ /dev/null @@ -1,250 +0,0 @@ - -#include "stdafx.h" - -// MSG Array LOOKUP -const int MAX_MSG_LOOKUP = 1024; -const int MAX_MSG_NAME = 21; -TCHAR MSG_LOOKUP[MAX_MSG_LOOKUP][MAX_MSG_NAME] = { -}; - - -//void InitializeMsgLookup() below -void InitializeMsgLookup(int allowList[], int allowSize) -{ - for (int i = 0 ; i < MAX_MSG_LOOKUP ; i++) - { - bool allowFlg = true; - if (allowSize > 0) - allowFlg = false; - for (int a = 0 ; a < allowSize ; a++) - if (allowList[a] == i) - allowFlg = true; - if (!allowFlg) - { - memset((void *)&MSG_LOOKUP[i], '\0', sizeof(TCHAR) * MAX_MSG_NAME); //blank it - continue; - } - switch (i) - { - case WM_NULL: _tcscpy_s(MSG_LOOKUP[i], _T("WM_NULL")); break; - case WM_CREATE: _tcscpy_s(MSG_LOOKUP[i], _T("WM_CREATE")); break; - case WM_DESTROY: _tcscpy_s(MSG_LOOKUP[i], _T("WM_DESTROY")); break; - case WM_MOVE: _tcscpy_s(MSG_LOOKUP[i], _T("WM_MOVE")); break; - case WM_SIZE: _tcscpy_s(MSG_LOOKUP[i], _T("WM_SIZE")); break; - case WM_ACTIVATE: _tcscpy_s(MSG_LOOKUP[i], _T("WM_ACTIVATE")); break; - case WM_SETFOCUS: _tcscpy_s(MSG_LOOKUP[i], _T("WM_SETFOCUS")); break; - case WM_KILLFOCUS: _tcscpy_s(MSG_LOOKUP[i], _T("WM_KILLFOCUS")); break; - case WM_ENABLE: _tcscpy_s(MSG_LOOKUP[i], _T("WM_ENABLE")); break; - case WM_SETREDRAW: _tcscpy_s(MSG_LOOKUP[i], _T("WM_SETREDRAW")); break; - case WM_SETTEXT: _tcscpy_s(MSG_LOOKUP[i], _T("WM_SETTEXT")); break; - case WM_GETTEXT: _tcscpy_s(MSG_LOOKUP[i], _T("WM_GETTEXT")); break; - case WM_GETTEXTLENGTH: _tcscpy_s(MSG_LOOKUP[i], _T("WM_GETTEXTLENGTH")); break; - case WM_PAINT: _tcscpy_s(MSG_LOOKUP[i], _T("WM_PAINT")); break; - case WM_CLOSE: _tcscpy_s(MSG_LOOKUP[i], _T("WM_CLOSE")); break; - case WM_QUERYENDSESSION: _tcscpy_s(MSG_LOOKUP[i], _T("WM_QUERYENDSESSION")); break; - case WM_QUIT: _tcscpy_s(MSG_LOOKUP[i], _T("WM_QUIT")); break; - case WM_QUERYOPEN: _tcscpy_s(MSG_LOOKUP[i], _T("WM_QUERYOPEN")); break; - case WM_ERASEBKGND: _tcscpy_s(MSG_LOOKUP[i], _T("WM_ERASEBKGND")); break; - case WM_SYSCOLORCHANGE: _tcscpy_s(MSG_LOOKUP[i], _T("WM_SYSCOLORCHANGE")); break; - case WM_ENDSESSION: _tcscpy_s(MSG_LOOKUP[i], _T("WM_ENDSESSION")); break; - case 0x17: _tcscpy_s(MSG_LOOKUP[i], _T("WM_SYSTEMERROR")); break; - case WM_SHOWWINDOW: _tcscpy_s(MSG_LOOKUP[i], _T("WM_SHOWWINDOW")); break; - case 0x19: _tcscpy_s(MSG_LOOKUP[i], _T("WM_CTLCOLOR")); break; - case WM_WININICHANGE: _tcscpy_s(MSG_LOOKUP[i], _T("WM_WININICHANGE")); break; - //case WM_SETTINGCHANGE: _tcscpy_s(MSG_LOOKUP[i], _T("WM_SETTINGCHANGE")); break; - case WM_DEVMODECHANGE: _tcscpy_s(MSG_LOOKUP[i], _T("WM_DEVMODECHANGE")); break; - case WM_ACTIVATEAPP: _tcscpy_s(MSG_LOOKUP[i], _T("WM_ACTIVATEAPP")); break; - case WM_FONTCHANGE: _tcscpy_s(MSG_LOOKUP[i], _T("WM_FONTCHANGE")); break; - case WM_TIMECHANGE: _tcscpy_s(MSG_LOOKUP[i], _T("WM_TIMECHANGE")); break; - case WM_CANCELMODE: _tcscpy_s(MSG_LOOKUP[i], _T("WM_CANCELMODE")); break; - case WM_SETCURSOR: _tcscpy_s(MSG_LOOKUP[i], _T("WM_SETCURSOR")); break; - case WM_MOUSEACTIVATE: _tcscpy_s(MSG_LOOKUP[i], _T("WM_MOUSEACTIVATE")); break; - case WM_CHILDACTIVATE: _tcscpy_s(MSG_LOOKUP[i], _T("WM_CHILDACTIVATE")); break; - case WM_QUEUESYNC: _tcscpy_s(MSG_LOOKUP[i], _T("WM_QUEUESYNC")); break; - case WM_GETMINMAXINFO: _tcscpy_s(MSG_LOOKUP[i], _T("WM_GETMINMAXINFO")); break; - case WM_PAINTICON: _tcscpy_s(MSG_LOOKUP[i], _T("WM_PAINTICON")); break; - case WM_ICONERASEBKGND: _tcscpy_s(MSG_LOOKUP[i], _T("WM_ICONERASEBKGND")); break; - case WM_NEXTDLGCTL: _tcscpy_s(MSG_LOOKUP[i], _T("WM_NEXTDLGCTL")); break; - case WM_SPOOLERSTATUS: _tcscpy_s(MSG_LOOKUP[i], _T("WM_SPOOLERSTATUS")); break; - case WM_DRAWITEM: _tcscpy_s(MSG_LOOKUP[i], _T("WM_DRAWITEM")); break; - case WM_MEASUREITEM: _tcscpy_s(MSG_LOOKUP[i], _T("WM_MEASUREITEM")); break; - case WM_DELETEITEM: _tcscpy_s(MSG_LOOKUP[i], _T("WM_DELETEITEM")); break; - case WM_VKEYTOITEM: _tcscpy_s(MSG_LOOKUP[i], _T("WM_VKEYTOITEM")); break; - case WM_CHARTOITEM: _tcscpy_s(MSG_LOOKUP[i], _T("WM_CHARTOITEM")); break; - case WM_SETFONT: _tcscpy_s(MSG_LOOKUP[i], _T("WM_SETFONT")); break; - case WM_GETFONT: _tcscpy_s(MSG_LOOKUP[i], _T("WM_GETFONT")); break; - case WM_SETHOTKEY: _tcscpy_s(MSG_LOOKUP[i], _T("WM_SETHOTKEY")); break; - case WM_GETHOTKEY: _tcscpy_s(MSG_LOOKUP[i], _T("WM_GETHOTKEY")); break; - case WM_QUERYDRAGICON: _tcscpy_s(MSG_LOOKUP[i], _T("WM_QUERYDRAGICON")); break; - case WM_COMPAREITEM: _tcscpy_s(MSG_LOOKUP[i], _T("WM_COMPAREITEM")); break; - case WM_COMPACTING: _tcscpy_s(MSG_LOOKUP[i], _T("WM_COMPACTING")); break; - case WM_WINDOWPOSCHANGING: _tcscpy_s(MSG_LOOKUP[i], _T("WM_WINDOWPOSCHANGING")); break; - case WM_WINDOWPOSCHANGED: _tcscpy_s(MSG_LOOKUP[i], _T("WM_WINDOWPOSCHANGED")); break; - case WM_POWER: _tcscpy_s(MSG_LOOKUP[i], _T("WM_POWER")); break; - case WM_COPYDATA: _tcscpy_s(MSG_LOOKUP[i], _T("WM_COPYDATA")); break; - case WM_CANCELJOURNAL: _tcscpy_s(MSG_LOOKUP[i], _T("WM_CANCELJOURNAL")); break; - case WM_NOTIFY: _tcscpy_s(MSG_LOOKUP[i], _T("WM_NOTIFY")); break; - case WM_INPUTLANGCHANGEREQUEST: _tcscpy_s(MSG_LOOKUP[i], _T("WM_INPUTLANGCHANGERE")); break; - case WM_INPUTLANGCHANGE: _tcscpy_s(MSG_LOOKUP[i], _T("WM_INPUTLANGCHANGE")); break; - case WM_TCARD: _tcscpy_s(MSG_LOOKUP[i], _T("WM_TCARD")); break; - case WM_HELP: _tcscpy_s(MSG_LOOKUP[i], _T("WM_HELP")); break; - case WM_USERCHANGED: _tcscpy_s(MSG_LOOKUP[i], _T("WM_USERCHANGED")); break; - case WM_NOTIFYFORMAT: _tcscpy_s(MSG_LOOKUP[i], _T("WM_NOTIFYFORMAT")); break; - case WM_CONTEXTMENU: _tcscpy_s(MSG_LOOKUP[i], _T("WM_CONTEXTMENU")); break; - case WM_STYLECHANGING: _tcscpy_s(MSG_LOOKUP[i], _T("WM_STYLECHANGING")); break; - case WM_STYLECHANGED: _tcscpy_s(MSG_LOOKUP[i], _T("WM_STYLECHANGED")); break; - case WM_DISPLAYCHANGE: _tcscpy_s(MSG_LOOKUP[i], _T("WM_DISPLAYCHANGE")); break; - case WM_GETICON: _tcscpy_s(MSG_LOOKUP[i], _T("WM_GETICON")); break; - case WM_SETICON: _tcscpy_s(MSG_LOOKUP[i], _T("WM_SETICON")); break; - case WM_NCCREATE: _tcscpy_s(MSG_LOOKUP[i], _T("WM_NCCREATE")); break; - case WM_NCDESTROY: _tcscpy_s(MSG_LOOKUP[i], _T("WM_NCDESTROY")); break; - case WM_NCCALCSIZE: _tcscpy_s(MSG_LOOKUP[i], _T("WM_NCCALCSIZE")); break; - case WM_NCHITTEST: _tcscpy_s(MSG_LOOKUP[i], _T("WM_NCHITTEST")); break; - case WM_NCPAINT: _tcscpy_s(MSG_LOOKUP[i], _T("WM_NCPAINT")); break; - case WM_NCACTIVATE: _tcscpy_s(MSG_LOOKUP[i], _T("WM_NCACTIVATE")); break; - case WM_GETDLGCODE: _tcscpy_s(MSG_LOOKUP[i], _T("WM_GETDLGCODE")); break; - case WM_NCMOUSEMOVE: _tcscpy_s(MSG_LOOKUP[i], _T("WM_NCMOUSEMOVE")); break; - case WM_NCLBUTTONDOWN: _tcscpy_s(MSG_LOOKUP[i], _T("WM_NCLBUTTONDOWN")); break; - case WM_NCLBUTTONUP: _tcscpy_s(MSG_LOOKUP[i], _T("WM_NCLBUTTONUP")); break; - case WM_NCLBUTTONDBLCLK: _tcscpy_s(MSG_LOOKUP[i], _T("WM_NCLBUTTONDBLCLK")); break; - case WM_NCRBUTTONDOWN: _tcscpy_s(MSG_LOOKUP[i], _T("WM_NCRBUTTONDOWN")); break; - case WM_NCRBUTTONUP: _tcscpy_s(MSG_LOOKUP[i], _T("WM_NCRBUTTONUP")); break; - case WM_NCRBUTTONDBLCLK: _tcscpy_s(MSG_LOOKUP[i], _T("WM_NCRBUTTONDBLCLK")); break; - case WM_NCMBUTTONDOWN: _tcscpy_s(MSG_LOOKUP[i], _T("WM_NCMBUTTONDOWN")); break; - case WM_NCMBUTTONUP: _tcscpy_s(MSG_LOOKUP[i], _T("WM_NCMBUTTONUP")); break; - case WM_NCMBUTTONDBLCLK: _tcscpy_s(MSG_LOOKUP[i], _T("WM_NCMBUTTONDBLCLK")); break; - //case WM_KEYFIRST: _tcscpy_s(MSG_LOOKUP[i], _T("WM_KEYFIRST")); break; - case WM_KEYDOWN: _tcscpy_s(MSG_LOOKUP[i], _T("WM_KEYDOWN")); break; - case WM_KEYUP: _tcscpy_s(MSG_LOOKUP[i], _T("WM_KEYUP")); break; - case WM_CHAR: _tcscpy_s(MSG_LOOKUP[i], _T("WM_CHAR")); break; - case WM_DEADCHAR: _tcscpy_s(MSG_LOOKUP[i], _T("WM_DEADCHAR")); break; - case WM_SYSKEYDOWN: _tcscpy_s(MSG_LOOKUP[i], _T("WM_SYSKEYDOWN")); break; - case WM_SYSKEYUP: _tcscpy_s(MSG_LOOKUP[i], _T("WM_SYSKEYUP")); break; - case WM_SYSCHAR: _tcscpy_s(MSG_LOOKUP[i], _T("WM_SYSCHAR")); break; - case WM_SYSDEADCHAR: _tcscpy_s(MSG_LOOKUP[i], _T("WM_SYSDEADCHAR")); break; - case WM_KEYLAST: _tcscpy_s(MSG_LOOKUP[i], _T("WM_KEYLAST")); break; - case WM_IME_STARTCOMPOSITION: _tcscpy_s(MSG_LOOKUP[i], _T("WM_IME_STARTCOMPOSIT")); break; - case WM_IME_ENDCOMPOSITION: _tcscpy_s(MSG_LOOKUP[i], _T("WM_IME_ENDCOMPOSITIO")); break; - case WM_IME_COMPOSITION: _tcscpy_s(MSG_LOOKUP[i], _T("WM_IME_COMPOSITION")); break; - //case WM_IME_KEYLAST: _tcscpy_s(MSG_LOOKUP[i], _T("WM_IME_KEYLAST")); break; - case WM_INITDIALOG: _tcscpy_s(MSG_LOOKUP[i], _T("WM_INITDIALOG")); break; - case WM_COMMAND: _tcscpy_s(MSG_LOOKUP[i], _T("WM_COMMAND")); break; - case WM_SYSCOMMAND: _tcscpy_s(MSG_LOOKUP[i], _T("WM_SYSCOMMAND")); break; - case WM_TIMER: _tcscpy_s(MSG_LOOKUP[i], _T("WM_TIMER")); break; - case WM_HSCROLL: _tcscpy_s(MSG_LOOKUP[i], _T("WM_HSCROLL")); break; - case WM_VSCROLL: _tcscpy_s(MSG_LOOKUP[i], _T("WM_VSCROLL")); break; - case WM_INITMENU: _tcscpy_s(MSG_LOOKUP[i], _T("WM_INITMENU")); break; - case WM_INITMENUPOPUP: _tcscpy_s(MSG_LOOKUP[i], _T("WM_INITMENUPOPUP")); break; - case WM_MENUSELECT: _tcscpy_s(MSG_LOOKUP[i], _T("WM_MENUSELECT")); break; - case WM_MENUCHAR: _tcscpy_s(MSG_LOOKUP[i], _T("WM_MENUCHAR")); break; - case WM_ENTERIDLE: _tcscpy_s(MSG_LOOKUP[i], _T("WM_ENTERIDLE")); break; - case WM_CTLCOLORMSGBOX: _tcscpy_s(MSG_LOOKUP[i], _T("WM_CTLCOLORMSGBOX")); break; - case WM_CTLCOLOREDIT: _tcscpy_s(MSG_LOOKUP[i], _T("WM_CTLCOLOREDIT")); break; - case WM_CTLCOLORLISTBOX: _tcscpy_s(MSG_LOOKUP[i], _T("WM_CTLCOLORLISTBOX")); break; - case WM_CTLCOLORBTN: _tcscpy_s(MSG_LOOKUP[i], _T("WM_CTLCOLORBTN")); break; - case WM_CTLCOLORDLG: _tcscpy_s(MSG_LOOKUP[i], _T("WM_CTLCOLORDLG")); break; - case WM_CTLCOLORSCROLLBAR: _tcscpy_s(MSG_LOOKUP[i], _T("WM_CTLCOLORSCROLLBAR")); break; - case WM_CTLCOLORSTATIC: _tcscpy_s(MSG_LOOKUP[i], _T("WM_CTLCOLORSTATIC")); break; - //case WM_MOUSEFIRST: _tcscpy_s(MSG_LOOKUP[i], _T("WM_MOUSEFIRST")); break; - case WM_MOUSEMOVE: _tcscpy_s(MSG_LOOKUP[i], _T("WM_MOUSEMOVE")); break; - case WM_LBUTTONDOWN: _tcscpy_s(MSG_LOOKUP[i], _T("WM_LBUTTONDOWN")); break; - case WM_LBUTTONUP: _tcscpy_s(MSG_LOOKUP[i], _T("WM_LBUTTONUP")); break; - case WM_LBUTTONDBLCLK: _tcscpy_s(MSG_LOOKUP[i], _T("WM_LBUTTONDBLCLK")); break; - case WM_RBUTTONDOWN: _tcscpy_s(MSG_LOOKUP[i], _T("WM_RBUTTONDOWN")); break; - case WM_RBUTTONUP: _tcscpy_s(MSG_LOOKUP[i], _T("WM_RBUTTONUP")); break; - case WM_RBUTTONDBLCLK: _tcscpy_s(MSG_LOOKUP[i], _T("WM_RBUTTONDBLCLK")); break; - case WM_MBUTTONDOWN: _tcscpy_s(MSG_LOOKUP[i], _T("WM_MBUTTONDOWN")); break; - case WM_MBUTTONUP: _tcscpy_s(MSG_LOOKUP[i], _T("WM_MBUTTONUP")); break; - case WM_MBUTTONDBLCLK: _tcscpy_s(MSG_LOOKUP[i], _T("WM_MBUTTONDBLCLK")); break; - case WM_MOUSEWHEEL: _tcscpy_s(MSG_LOOKUP[i], _T("WM_MOUSEWHEEL")); break; - case WM_MOUSEHWHEEL: _tcscpy_s(MSG_LOOKUP[i], _T("WM_MOUSEHWHEEL")); break; - case WM_PARENTNOTIFY: _tcscpy_s(MSG_LOOKUP[i], _T("WM_PARENTNOTIFY")); break; - case WM_ENTERMENULOOP: _tcscpy_s(MSG_LOOKUP[i], _T("WM_ENTERMENULOOP")); break; - case WM_EXITMENULOOP: _tcscpy_s(MSG_LOOKUP[i], _T("WM_EXITMENULOOP")); break; - case WM_NEXTMENU: _tcscpy_s(MSG_LOOKUP[i], _T("WM_NEXTMENU")); break; - case WM_SIZING: _tcscpy_s(MSG_LOOKUP[i], _T("WM_SIZING")); break; - case WM_CAPTURECHANGED: _tcscpy_s(MSG_LOOKUP[i], _T("WM_CAPTURECHANGED")); break; - case WM_MOVING: _tcscpy_s(MSG_LOOKUP[i], _T("WM_MOVING")); break; - case WM_POWERBROADCAST: _tcscpy_s(MSG_LOOKUP[i], _T("WM_POWERBROADCAST")); break; - case WM_DEVICECHANGE: _tcscpy_s(MSG_LOOKUP[i], _T("WM_DEVICECHANGE")); break; - case WM_MDICREATE: _tcscpy_s(MSG_LOOKUP[i], _T("WM_MDICREATE")); break; - case WM_MDIDESTROY: _tcscpy_s(MSG_LOOKUP[i], _T("WM_MDIDESTROY")); break; - case WM_MDIACTIVATE: _tcscpy_s(MSG_LOOKUP[i], _T("WM_MDIACTIVATE")); break; - case WM_MDIRESTORE: _tcscpy_s(MSG_LOOKUP[i], _T("WM_MDIRESTORE")); break; - case WM_MDINEXT: _tcscpy_s(MSG_LOOKUP[i], _T("WM_MDINEXT")); break; - case WM_MDIMAXIMIZE: _tcscpy_s(MSG_LOOKUP[i], _T("WM_MDIMAXIMIZE")); break; - case WM_MDITILE: _tcscpy_s(MSG_LOOKUP[i], _T("WM_MDITILE")); break; - case WM_MDICASCADE: _tcscpy_s(MSG_LOOKUP[i], _T("WM_MDICASCADE")); break; - case WM_MDIICONARRANGE: _tcscpy_s(MSG_LOOKUP[i], _T("WM_MDIICONARRANGE")); break; - case WM_MDIGETACTIVE: _tcscpy_s(MSG_LOOKUP[i], _T("WM_MDIGETACTIVE")); break; - case WM_MDISETMENU: _tcscpy_s(MSG_LOOKUP[i], _T("WM_MDISETMENU")); break; - case WM_ENTERSIZEMOVE: _tcscpy_s(MSG_LOOKUP[i], _T("WM_ENTERSIZEMOVE")); break; - case WM_EXITSIZEMOVE: _tcscpy_s(MSG_LOOKUP[i], _T("WM_EXITSIZEMOVE")); break; - case WM_DROPFILES: _tcscpy_s(MSG_LOOKUP[i], _T("WM_DROPFILES")); break; - case WM_MDIREFRESHMENU: _tcscpy_s(MSG_LOOKUP[i], _T("WM_MDIREFRESHMENU")); break; - case WM_IME_SETCONTEXT: _tcscpy_s(MSG_LOOKUP[i], _T("WM_IME_SETCONTEXT")); break; - case WM_IME_NOTIFY: _tcscpy_s(MSG_LOOKUP[i], _T("WM_IME_NOTIFY")); break; - case WM_IME_CONTROL: _tcscpy_s(MSG_LOOKUP[i], _T("WM_IME_CONTROL")); break; - case WM_IME_COMPOSITIONFULL: _tcscpy_s(MSG_LOOKUP[i], _T("WM_IME_COMPOSITIONFU")); break; - case WM_IME_SELECT: _tcscpy_s(MSG_LOOKUP[i], _T("WM_IME_SELECT")); break; - case WM_IME_CHAR: _tcscpy_s(MSG_LOOKUP[i], _T("WM_IME_CHAR")); break; - case WM_IME_KEYDOWN: _tcscpy_s(MSG_LOOKUP[i], _T("WM_IME_KEYDOWN")); break; - case WM_IME_KEYUP: _tcscpy_s(MSG_LOOKUP[i], _T("WM_IME_KEYUP")); break; - case WM_MOUSEHOVER: _tcscpy_s(MSG_LOOKUP[i], _T("WM_MOUSEHOVER")); break; - case WM_NCMOUSELEAVE: _tcscpy_s(MSG_LOOKUP[i], _T("WM_NCMOUSELEAVE")); break; - case WM_MOUSELEAVE: _tcscpy_s(MSG_LOOKUP[i], _T("WM_MOUSELEAVE")); break; - case WM_CUT: _tcscpy_s(MSG_LOOKUP[i], _T("WM_CUT")); break; - case WM_COPY: _tcscpy_s(MSG_LOOKUP[i], _T("WM_COPY")); break; - case WM_PASTE: _tcscpy_s(MSG_LOOKUP[i], _T("WM_PASTE")); break; - case WM_CLEAR: _tcscpy_s(MSG_LOOKUP[i], _T("WM_CLEAR")); break; - case WM_UNDO: _tcscpy_s(MSG_LOOKUP[i], _T("WM_UNDO")); break; - case WM_RENDERFORMAT: _tcscpy_s(MSG_LOOKUP[i], _T("WM_RENDERFORMAT")); break; - case WM_RENDERALLFORMATS: _tcscpy_s(MSG_LOOKUP[i], _T("WM_RENDERALLFORMATS")); break; - case WM_DESTROYCLIPBOARD: _tcscpy_s(MSG_LOOKUP[i], _T("WM_DESTROYCLIPBOARD")); break; - case WM_DRAWCLIPBOARD: _tcscpy_s(MSG_LOOKUP[i], _T("WM_DRAWCLIPBOARD")); break; - case WM_PAINTCLIPBOARD: _tcscpy_s(MSG_LOOKUP[i], _T("WM_PAINTCLIPBOARD")); break; - case WM_VSCROLLCLIPBOARD: _tcscpy_s(MSG_LOOKUP[i], _T("WM_VSCROLLCLIPBOARD")); break; - case WM_SIZECLIPBOARD: _tcscpy_s(MSG_LOOKUP[i], _T("WM_SIZECLIPBOARD")); break; - case WM_ASKCBFORMATNAME: _tcscpy_s(MSG_LOOKUP[i], _T("WM_ASKCBFORMATNAME")); break; - case WM_CHANGECBCHAIN: _tcscpy_s(MSG_LOOKUP[i], _T("WM_CHANGECBCHAIN")); break; - case WM_HSCROLLCLIPBOARD: _tcscpy_s(MSG_LOOKUP[i], _T("WM_HSCROLLCLIPBOARD")); break; - case WM_QUERYNEWPALETTE: _tcscpy_s(MSG_LOOKUP[i], _T("WM_QUERYNEWPALETTE")); break; - case WM_PALETTEISCHANGING: _tcscpy_s(MSG_LOOKUP[i], _T("WM_PALETTEISCHANGING")); break; - case WM_PALETTECHANGED: _tcscpy_s(MSG_LOOKUP[i], _T("WM_PALETTECHANGED")); break; - case WM_HOTKEY: _tcscpy_s(MSG_LOOKUP[i], _T("WM_HOTKEY")); break; - case WM_PRINT: _tcscpy_s(MSG_LOOKUP[i], _T("WM_PRINT")); break; - case WM_PRINTCLIENT: _tcscpy_s(MSG_LOOKUP[i], _T("WM_PRINTCLIENT")); break; - case WM_HANDHELDFIRST: _tcscpy_s(MSG_LOOKUP[i], _T("WM_HANDHELDFIRST")); break; - case WM_HANDHELDLAST: _tcscpy_s(MSG_LOOKUP[i], _T("WM_HANDHELDLAST")); break; - case WM_PENWINFIRST: _tcscpy_s(MSG_LOOKUP[i], _T("WM_PENWINFIRST")); break; - case WM_PENWINLAST: _tcscpy_s(MSG_LOOKUP[i], _T("WM_PENWINLAST")); break; - case 0x390: _tcscpy_s(MSG_LOOKUP[i], _T("WM_COALESCE_FIRST")); break; - case 0x39F: _tcscpy_s(MSG_LOOKUP[i], _T("WM_COALESCE_LAST")); break; - case 0x3E0: _tcscpy_s(MSG_LOOKUP[i], _T("WM_DDE_FIRST")); break; - //case 0x3E0: _tcscpy_s(MSG_LOOKUP[i], _T("WM_DDE_INITIATE")); break; - case 0x3E1: _tcscpy_s(MSG_LOOKUP[i], _T("WM_DDE_TERMINATE")); break; - case 0x3E2: _tcscpy_s(MSG_LOOKUP[i], _T("WM_DDE_ADVISE")); break; - case 0x3E3: _tcscpy_s(MSG_LOOKUP[i], _T("WM_DDE_UNADVISE")); break; - case 0x3E4: _tcscpy_s(MSG_LOOKUP[i], _T("WM_DDE_ACK")); break; - case 0x3E5: _tcscpy_s(MSG_LOOKUP[i], _T("WM_DDE_DATA")); break; - case 0x3E6: _tcscpy_s(MSG_LOOKUP[i], _T("WM_DDE_REQUEST")); break; - case 0x3E7: _tcscpy_s(MSG_LOOKUP[i], _T("WM_DDE_POKE")); break; - case 0x3E8: _tcscpy_s(MSG_LOOKUP[i], _T("WM_DDE_EXECUTE")); break; - //case 0x3E8: _tcscpy_s(MSG_LOOKUP[i], _T("WM_DDE_LAST")); break; - - //case : _tcscpy_s(MSG_LOOKUP[i], _T("")); break; - default: - memset((void *)&MSG_LOOKUP[i], '\0', sizeof(TCHAR) * MAX_MSG_NAME); - //_tcscpy_s(MSG_LOOKUP[i], 20, _T("")); - break; - } - } -} - -void InitializeMsgLookup() -{ - int allowList[1]; - allowList[0] = -1; - InitializeMsgLookup(allowList, 0); -} - diff --git a/native/MsgHook/ReadMe.txt b/native/MsgHook/ReadMe.txt deleted file mode 100644 index 4420318..0000000 --- a/native/MsgHook/ReadMe.txt +++ /dev/null @@ -1,48 +0,0 @@ -======================================================================== - DYNAMIC LINK LIBRARY : MsgHook Project Overview -======================================================================== - -AppWizard has created this MsgHook DLL for you. - -This file contains a summary of what you will find in each of the files that -make up your MsgHook application. - - -MsgHook.vcxproj - This is the main project file for VC++ projects generated using an Application Wizard. - It contains information about the version of Visual C++ that generated the file, and - information about the platforms, configurations, and project features selected with the - Application Wizard. - -MsgHook.vcxproj.filters - This is the filters file for VC++ projects generated using an Application Wizard. - It contains information about the association between the files in your project - and the filters. This association is used in the IDE to show grouping of files with - similar extensions under a specific node (for e.g. ".cpp" files are associated with the - "Source Files" filter). - -MsgHook.cpp - This is the main DLL source file. - - When created, this DLL does not export any symbols. As a result, it - will not produce a .lib file when it is built. If you wish this project - to be a project dependency of some other project, you will either need to - add code to export some symbols from the DLL so that an export library - will be produced, or you can set the Ignore Input Library property to Yes - on the General propert page of the Linker folder in the project's Property - Pages dialog box. - -///////////////////////////////////////////////////////////////////////////// -Other standard files: - -StdAfx.h, StdAfx.cpp - These files are used to build a precompiled header (PCH) file - named MsgHook.pch and a precompiled types file named StdAfx.obj. - -///////////////////////////////////////////////////////////////////////////// -Other notes: - -AppWizard uses "TODO:" comments to indicate parts of the source code you -should add to or customize. - -///////////////////////////////////////////////////////////////////////////// diff --git a/native/MsgHook/ResExtract.h b/native/MsgHook/ResExtract.h deleted file mode 100644 index e7662ce..0000000 --- a/native/MsgHook/ResExtract.h +++ /dev/null @@ -1,86 +0,0 @@ -//This function will extract a binary resource. -// -//IDR_SETMH64 BINARY MOVEABLE PURE "..\\SetMsgHook\\bin\\SetMsgHook64.exe" -//IDR_SETMH32 BINARY MOVEABLE PURE "..\\SetMsgHook\\bin\\SetMsgHook32.exe" - -#include "stdafx.h" - -void ExtractResource(const WORD nID, LPCTSTR szFilename) -{ - const HINSTANCE hInstance = (HINSTANCE)pData->g_hInstance;//GetModuleHandle(NULL); - HRSRC hResource = FindResource(hInstance, MAKEINTRESOURCE(nID), _T("BINARY"));// _ASSERTE(hResource); - if (hResource == NULL) // no resource found. - { - //MessageBoxA(0, "error, no resource found", "error", 0); - printf("error, resource %d not found\n", nID); - return; - } - HGLOBAL hFileResource = LoadResource(hInstance, hResource);// _ASSERTE(hFileResource); - LPVOID lpFile = LockResource(hFileResource); - - DWORD dwSize = SizeofResource(hInstance, hResource); - - // Open the file and filemap - HANDLE hFile = CreateFile(szFilename, GENERIC_READ | GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); - HANDLE hFilemap = CreateFileMapping(hFile, NULL, PAGE_READWRITE, 0, dwSize, NULL); - - // Get a pointer to write to - LPVOID lpBaseAddress = MapViewOfFile(hFilemap, FILE_MAP_WRITE, 0, 0, 0); - - // Write the file - CopyMemory(lpBaseAddress, lpFile, dwSize); - - // Unmap the file and close the handles - UnmapViewOfFile(lpBaseAddress); - CloseHandle(hFilemap); - CloseHandle(hFile); - -} - -void RunResource(const WORD nID, LPWSTR params) -{ - TCHAR tmpFilename[500]; - TCHAR tmpPath[500]; - GetTempPath(500, tmpPath); - if (GetTempFileName(tmpPath, _T(""), 0, tmpFilename) == 0) - { - MessageBox(0,_T("Error getting temp file name"), _T("Error"), 0); - return; - } - - ExtractResource(nID, tmpFilename); - //MessageBox(0, tmpFilename, _T("tmp file2"), 0); - - STARTUPINFO si; - ZeroMemory( &si, sizeof(si) ); - si.cb = sizeof(si); - - PROCESS_INFORMATION pi; - ZeroMemory( &pi, sizeof(pi) ); - - si.wShowWindow = SW_MINIMIZE; - - // Start the child process. - if(!CreateProcess(tmpFilename, // No module name (use command line) - params, // Command line - NULL, // Process handle not inheritable - NULL, // Thread handle not inheritable - FALSE, // Set handle inheritance to FALSE - 0, // No creation flags - NULL, // Use parent's environment block - NULL, // Use parent's starting directory - &si, // Pointer to STARTUPINFO structure - &pi )) // Pointer to PROCESS_INFORMATION structure - { - MessageBox(0, _T("CreateProcess failed"), _T("error"), 0); - printf( "CreateProcess failed (%d).\n", GetLastError() ); - return; - } - //MessageBox(0, tmpFilename, _T("tmp file3"), 0); - - // Wait until child process exits. - //WaitForSingleObject( pi.hProcess, INFINITE ); - // Close process and thread handles. - //CloseHandle( pi.hProcess ); - //CloseHandle( pi.hThread ); -} \ No newline at end of file diff --git a/native/MsgHook/bin/MsgHook32.dll b/native/MsgHook/bin/MsgHook32.dll deleted file mode 100644 index e4595045326b7bf208acbe470e464fce3bc3400d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 108032 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 diff --git a/native/MsgHook/build.bat b/native/MsgHook/build.bat deleted file mode 100644 index 626076c..0000000 --- a/native/MsgHook/build.bat +++ /dev/null @@ -1,6 +0,0 @@ -REM set path=C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin;%path% - -%WinDir%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe /p:configuration=release /p:platform=x64 %* -%WinDir%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe /p:configuration=release /p:platform=win32 %* - -pause \ No newline at end of file diff --git a/native/MsgHook/dllmain.cpp b/native/MsgHook/dllmain.cpp deleted file mode 100644 index f9560c6..0000000 --- a/native/MsgHook/dllmain.cpp +++ /dev/null @@ -1,61 +0,0 @@ -// dllmain.cpp : Defines the entry point for the DLL application. -#include "stdafx.h" - -HANDLE hMappedFile; -GLOBALDATA* pData; -bool bStartingProcess = false; - - -BOOL APIENTRY DllMain( HMODULE hModule, - DWORD ul_reason_for_call, - LPVOID lpReserved - ) -{ - switch (ul_reason_for_call) - { - case DLL_PROCESS_ATTACH: - { - //printf("debug DLL_PROCESS_ATTACH hModule: %ld\n", (long)hModule); - TCHAR szBaseName[_MAX_FNAME], szTmp[_MAX_FNAME]; - memset((void *)&szBaseName, '\0', sizeof(TCHAR) * _MAX_FNAME); - - if (GetModuleBaseName(GetCurrentProcess(), (HMODULE)hModule, szTmp, sizeof(szTmp)))// compute MMF-filename from current module base name, uses Psapi - _wsplitpath_s(szTmp, NULL, NULL, szBaseName, _MAX_FNAME, NULL, NULL, NULL, NULL); - //_wsplitpath(szTmp, NULL, NULL, szBaseName, NULL); - - wcscat_s(szBaseName, TEXT("MsgHookSharedMem")); // add specifier string - if (IsCurrentProcess64Bit()) - wcscat_s(szBaseName, TEXT("64")); // add bit specifier - else - wcscat_s(szBaseName, TEXT("32")); // add bit specifier - - hMappedFile = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, sizeof(GLOBALDATA), szBaseName); - pData = (GLOBALDATA*)MapViewOfFile(hMappedFile, FILE_MAP_WRITE, 0, 0, 0); - bStartingProcess = (hMappedFile != NULL) && (GetLastError() != ERROR_ALREADY_EXISTS); - - if(bStartingProcess) // if the MMF doesn't exist, we have the first instance - { - pData->g_hInstance = hModule; // so set the instance handle - pData->g_hWnd = NULL; // and initialize the other handles - pData->g_CwpHook = NULL; - pData->g_MsgHook = NULL; - pData->g_CwpHookProc = NULL; - } - else - { - //open - hMappedFile = OpenFileMapping(FILE_MAP_ALL_ACCESS, false, szBaseName); - pData = (GLOBALDATA*)MapViewOfFile(hMappedFile, FILE_MAP_ALL_ACCESS, 0, 0, 0); - } - DisableThreadLibraryCalls((HMODULE)hModule); - } - break; - case DLL_THREAD_ATTACH: - case DLL_THREAD_DETACH: - case DLL_PROCESS_DETACH: - CloseHandle(hMappedFile); // on detaching the DLL, close the MMF - break; - } - return TRUE; -} - diff --git a/native/MsgHook/org_synthuse_MsgHook.cpp b/native/MsgHook/org_synthuse_MsgHook.cpp deleted file mode 100644 index b851c18..0000000 --- a/native/MsgHook/org_synthuse_MsgHook.cpp +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright 2014, Synthuse.org - * Released under the Apache Version 2.0 License. - * - * last modified by ejakubowski7@gmail.com -*/ - -#include "stdafx.h" -#include "org_synthuse_MsgHook.h" - -/* - * Class: org_synthuse_MsgHook - * Method: initialize - * Signature: (Ljava/lang/String;Ljava/lang/String;)Z - */ -JNIEXPORT jboolean JNICALL Java_org_synthuse_MsgHook_initialize(JNIEnv *env, jobject obj, jstring jdll32bitname, jstring jdll64bitname) -{ - const char *tdll32bitname = env->GetStringUTFChars(jdll32bitname, 0);//convert string - - memset((void *)&dll32bitName, '\0', sizeof(TCHAR) * MAX_TEST_SIZE); // set TCHAR array to all 0 - int tstrLen = MultiByteToWideChar(CP_UTF8, 0, tdll32bitname, (int)strlen(tdll32bitname), NULL, 0); //get t len - MultiByteToWideChar(CP_UTF8, 0, tdll32bitname, (int)strlen(tdll32bitname), dll32bitName, tstrLen); // convert char to tchar - - env->ReleaseStringUTFChars(jdll32bitname, tdll32bitname); //release string - - const char *tdll64bitname = env->GetStringUTFChars(jdll64bitname, 0);//convert string - - memset((void *)&dll64bitName, '\0', sizeof(TCHAR) * MAX_TEST_SIZE); // set TCHAR array to all 0 - tstrLen = MultiByteToWideChar(CP_UTF8, 0, tdll64bitname, (int)strlen(tdll64bitname), NULL, 0); //get t len - MultiByteToWideChar(CP_UTF8, 0, tdll64bitname, (int)strlen(tdll64bitname), dll64bitName, tstrLen); // convert char to tchar - - env->ReleaseStringUTFChars(jdll64bitname, tdll64bitname); //release string - return true; -} - -/* - * Class: org_synthuse_MsgHook - * Method: createMsgHookWindow - * Signature: ()Z - */ -JNIEXPORT jboolean JNICALL Java_org_synthuse_MsgHook_createMsgHookWindow(JNIEnv *env, jobject obj) -{ - CreateMsgHookWindow(NULL); - return true; -} - -/* - * Class: org_synthuse_MsgHook - * Method: setMsgHookWindowTargetHwnd - * Signature: (I)Z - */ -JNIEXPORT jboolean JNICALL Java_org_synthuse_MsgHook_setMsgHookWindowTargetHwnd(JNIEnv *env, jobject obj, jint jhwnd) -{ - _stprintf_s(targetHwndStr, _T("%ld"), (long)jhwnd); - return true; -} - -/* - * Class: org_synthuse_MsgHook - * Method: setMsgHookWindowTargetClass - * Signature: (Ljava/lang/String;)Z - */ -JNIEXPORT jboolean JNICALL Java_org_synthuse_MsgHook_setMsgHookWindowTargetClass(JNIEnv *env, jobject obj, jstring jclassname) -{ - const char *classname = env->GetStringUTFChars(jclassname, 0);//convert string - - memset((void *)&targetClassname, '\0', sizeof(TCHAR) * MAX_TEST_SIZE); // set TCHAR array to all 0 - int tstrLen = MultiByteToWideChar(CP_UTF8, 0, classname, (int)strlen(classname), NULL, 0); //get t len - MultiByteToWideChar(CP_UTF8, 0, classname, (int)strlen(classname), targetClassname, tstrLen); // convert char to tchar - - env->ReleaseStringUTFChars(jclassname, classname); //release string - return true; -} - -JNIEXPORT jboolean JNICALL Java_org_synthuse_MsgHook_setMsgHookWindowTargetPid(JNIEnv *env, jobject obj, jint jpid) -{ - _stprintf_s(targetProcessId, _T("%ld"), (long)jpid); - return true; -} - -/* - * Class: org_synthuse_MsgHook - * Method: setMessageHook - * Signature: (JJ)Z - */ -//JNIEXPORT jboolean JNICALL Java_org_synthuse_MsgHook_setMessageHook(JNIEnv *env, jobject obj, jlong jhWnd, jlong jthreadId) -JNIEXPORT jboolean JNICALL Java_org_synthuse_MsgHook_setMessageHook(JNIEnv *env, jobject obj, jint jhWnd, jint jthreadId) -{ - return SetMsgHook((HWND)jhWnd, (DWORD)jthreadId); -} - -/* - * Class: org_synthuse_MsgHook - * Method: removeMessageHook - * Signature: ()Z - */ -JNIEXPORT jboolean JNICALL Java_org_synthuse_MsgHook_removeMessageHook(JNIEnv *env, jobject obj) -{ - return RemoveHook(); -} \ No newline at end of file diff --git a/native/MsgHook/org_synthuse_MsgHook.h b/native/MsgHook/org_synthuse_MsgHook.h deleted file mode 100644 index 5bd9535..0000000 --- a/native/MsgHook/org_synthuse_MsgHook.h +++ /dev/null @@ -1,61 +0,0 @@ -/* DO NOT EDIT THIS FILE - it is machine generated */ -#include -/* Header for class org_synthuse_MsgHook */ - -#ifndef _Included_org_synthuse_MsgHook -#define _Included_org_synthuse_MsgHook -#ifdef __cplusplus -extern "C" { -#endif -/* - * Class: org_synthuse_MsgHook - * Method: initialize - * Signature: (Ljava/lang/String;Ljava/lang/String;)Z - */ -JNIEXPORT jboolean JNICALL Java_org_synthuse_MsgHook_initialize - (JNIEnv *, jobject, jstring, jstring); - -/* - * Class: org_synthuse_MsgHook - * Method: createMsgHookWindow - * Signature: ()Z - */ -JNIEXPORT jboolean JNICALL Java_org_synthuse_MsgHook_createMsgHookWindow - (JNIEnv *, jobject); - -/* - * Class: org_synthuse_MsgHook - * Method: setMsgHookWindowTargetHwnd - * Signature: (I)Z - */ -JNIEXPORT jboolean JNICALL Java_org_synthuse_MsgHook_setMsgHookWindowTargetHwnd - (JNIEnv *, jobject, jint); - -/* - * Class: org_synthuse_MsgHook - * Method: setMsgHookWindowTargetPid - * Signature: (I)Z - */ -JNIEXPORT jboolean JNICALL Java_org_synthuse_MsgHook_setMsgHookWindowTargetPid - (JNIEnv *, jobject, jint); - -/* - * Class: org_synthuse_MsgHook - * Method: setMessageHook - * Signature: (II)Z - */ -JNIEXPORT jboolean JNICALL Java_org_synthuse_MsgHook_setMessageHook - (JNIEnv *, jobject, jint, jint); - -/* - * Class: org_synthuse_MsgHook - * Method: removeMessageHook - * Signature: ()Z - */ -JNIEXPORT jboolean JNICALL Java_org_synthuse_MsgHook_removeMessageHook - (JNIEnv *, jobject); - -#ifdef __cplusplus -} -#endif -#endif diff --git a/native/MsgHook/resource.h b/native/MsgHook/resource.h deleted file mode 100644 index 24aed165846e44f32464893c5268ca82040c75f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4568 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 -#include -#include -#include -#include -#include -#include //CreateToolhelp32Snapshot - -#pragma comment( lib, "psapi.lib" ) -//#pragma comment( lib, "kernel32.lib" ) - -// TODO: reference additional headers your program requires here - -typedef struct -{ - HWND hWnd; - int nCode; - DWORD dwHookType; - WPARAM wParam; - LPARAM lParam; - TCHAR wParamStr[25]; - TCHAR lParamStr[25]; -}HEVENT; - -typedef struct -{ - HHOOK g_CwpHook; - HHOOK g_MsgHook; - //HHOOK g_hHook; - HWND g_hWnd; - HANDLE g_hInstance; - HOOKPROC g_CwpHookProc; -}GLOBALDATA; - -#ifndef GLOBAL_VARS_H // header guards -#define GLOBAL_VARS_H - -extern "C" __declspec(dllexport) void CreateMsgHookWindow(LPTSTR lpCmdLine); -extern "C" __declspec(dllexport) BOOL SetCustomMsgHookDll(const TCHAR * hookDll, const char * hookDllProcName); -extern "C" __declspec(dllexport) BOOL SetMsgHook(HWND callerHWnd, DWORD threadId); -extern "C" __declspec(dllexport) HHOOK GetCurrentHookHandle(); -extern "C" __declspec(dllexport) void SetGlobalDLLInstance(HANDLE dllInstance); -extern "C" __declspec(dllexport) BOOL RemoveHook(); -extern "C" __declspec(dllexport) BOOL IsCurrentProcess64Bit(); -extern "C" __declspec(dllexport) BOOL IsProcess64Bit(DWORD procId); -extern "C" __declspec(dllexport) DWORD GetProcessMainThreadId(DWORD procId); - -//void ExtractResource(const WORD nID, LPCTSTR szFilename); - -//Global variables , remember not to initialize here -extern HANDLE hMappedFile; -extern GLOBALDATA* pData; -extern bool bStartingProcess; - -#define MAX_TEST_SIZE 100 -extern TCHAR targetHwndStr[MAX_TEST_SIZE]; -extern TCHAR targetProcessId[MAX_TEST_SIZE]; -extern TCHAR targetClassname[MAX_TEST_SIZE]; -extern TCHAR dll32bitName[500]; -extern TCHAR dll64bitName[500]; -extern char dllProcName[500]; - -#endif \ No newline at end of file diff --git a/native/MsgHook/targetver.h b/native/MsgHook/targetver.h deleted file mode 100644 index 87c0086..0000000 --- a/native/MsgHook/targetver.h +++ /dev/null @@ -1,8 +0,0 @@ -#pragma once - -// Including SDKDDKVer.h defines the highest available Windows platform. - -// If you wish to build your application for a previous Windows platform, include WinSDKVer.h and -// set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h. - -#include diff --git a/native/SetMsgHook/MsgHook.h b/native/SetMsgHook/MsgHook.h deleted file mode 100644 index 6a33d5c..0000000 --- a/native/SetMsgHook/MsgHook.h +++ /dev/null @@ -1,133 +0,0 @@ -/* - * Copyright 2014, Synthuse.org - * Released under the Apache Version 2.0 License. - * - * last modified by ejakubowski7@gmail.com -*/ - -#include - -typedef struct -{ - HHOOK g_CwpHook; - HHOOK g_MsgHook; - //HHOOK g_hHook; - HWND g_hWnd; - HANDLE g_hInstance; - HOOKPROC g_CwpHookProc; -}GLOBALDATA; - -//#define MSGHOOKER_FILE TEXT("MsgHook.dll") -TCHAR MSGHOOK_DLL_NAME[MAX_NAME_SIZE] = _T("MsgHook.dll"); - -HINSTANCE msgHookDll; - -//void CreateMsgHookWindow(LPTSTR lpCmdLine) -typedef VOID (* CREATEMSGHOOKWINDOW)(LPTSTR); -CREATEMSGHOOKWINDOW CreateMsgHookWindow; - -//BOOL SetCustomMsgHookDll(const TCHAR * hookDll, const char * hookDllProcName) -typedef BOOL (* SETCUSTOMMSGHOOKDLL)(LPCTSTR, LPCSTR); -SETCUSTOMMSGHOOKDLL SetCustomMsgHookDll; - -//BOOL SetMsgHook(HWND callerHWnd, DWORD threadId) -typedef BOOL (* SETMSGHOOK)(HWND, DWORD); -SETMSGHOOK SetMsgHook; - -//HHOOK GetCurrentHookHandle() -typedef HHOOK (* GETCURRENTHOOKHANDLE)(VOID); -GETCURRENTHOOKHANDLE GetCurrentHookHandle; - -//void SetGlobalDLLInstance(HANDLE dllInstance) -typedef VOID (* SETGLOBALDLLINSTANCE)(HANDLE); -SETGLOBALDLLINSTANCE SetGlobalDLLInstance; - -//BOOL RemoveHook() -typedef BOOL (* REMOVEHOOK)(VOID); -REMOVEHOOK RemoveHook; - -// DWORD GetProcessMainThreadId(DWORD procId) -typedef DWORD (* GETPROCESSMAINTHREADID)(DWORD); -GETPROCESSMAINTHREADID GetProcessMainThreadId; - - -typedef struct -{ - HWND hWnd; - int nCode; - DWORD dwHookType; - WPARAM wParam; - LPARAM lParam; - TCHAR wParamStr[25]; - TCHAR lParamStr[25]; -}HEVENT; - -/* -typedef struct { - DWORD vkCode; - DWORD scanCode; - DWORD flags; - DWORD time; - ULONG_PTR dwExtraInfo; -} KBDLLHOOKSTRUCT, *PKBDLLHOOKSTRUCT; -*/ - -void MsgHook_CreateMsgHookWindow(LPTSTR args) -{ - msgHookDll = LoadLibrary(MSGHOOK_DLL_NAME); - if (msgHookDll != NULL) - { - CreateMsgHookWindow = (CREATEMSGHOOKWINDOW)GetProcAddress(msgHookDll, "CreateMsgHookWindow"); - SetGlobalDLLInstance = (SETGLOBALDLLINSTANCE)GetProcAddress(msgHookDll, "SetGlobalDLLInstance"); - if (CreateMsgHookWindow) - { - SetGlobalDLLInstance(msgHookDll); - CreateMsgHookWindow(args); - } - } - if (msgHookDll != NULL) - FreeLibrary(msgHookDll); -} - -BOOL MsgHook_SetMsgHook(HWND hw, int threadId) -{ - msgHookDll = LoadLibrary(MSGHOOK_DLL_NAME); - if (msgHookDll != NULL) - { - SetMsgHook = (SETMSGHOOK)GetProcAddress(msgHookDll, "SetMsgHook"); - GetCurrentHookHandle = (GETCURRENTHOOKHANDLE)GetProcAddress(msgHookDll, "GetCurrentHookHandle"); - SetGlobalDLLInstance = (SETGLOBALDLLINSTANCE)GetProcAddress(msgHookDll, "SetGlobalDLLInstance"); - RemoveHook = (REMOVEHOOK)GetProcAddress(msgHookDll, "RemoveHook"); - if (SetMsgHook) - { - //printf("LoadLibrary MSGHOOK %ld\n", (long)msgHookDll); - SetGlobalDLLInstance(msgHookDll); - return SetMsgHook(hw, threadId); - } - } - return false; -} - -void MsgHook_RemoveHook() -{ - if (RemoveHook) - RemoveHook(); - - if (msgHookDll != NULL) - FreeLibrary(msgHookDll); -} - -DWORD MsgHook_GetProcessMainThreadId(DWORD procId) -{ - msgHookDll = LoadLibrary(MSGHOOK_DLL_NAME); - if (msgHookDll != NULL) - { - GetProcessMainThreadId = (GETPROCESSMAINTHREADID)GetProcAddress(msgHookDll, "GetProcessMainThreadId"); - if (GetProcessMainThreadId) - { - return GetProcessMainThreadId(procId); - } - } - printf("error, failed loading library"); - return 0; -} diff --git a/native/SetMsgHook/ReadMe.txt b/native/SetMsgHook/ReadMe.txt deleted file mode 100644 index 48ecfa9..0000000 --- a/native/SetMsgHook/ReadMe.txt +++ /dev/null @@ -1,40 +0,0 @@ -======================================================================== - CONSOLE APPLICATION : SetMsgHook Project Overview -======================================================================== - -AppWizard has created this SetMsgHook application for you. - -This file contains a summary of what you will find in each of the files that -make up your SetMsgHook application. - - -SetMsgHook.vcxproj - This is the main project file for VC++ projects generated using an Application Wizard. - It contains information about the version of Visual C++ that generated the file, and - information about the platforms, configurations, and project features selected with the - Application Wizard. - -SetMsgHook.vcxproj.filters - This is the filters file for VC++ projects generated using an Application Wizard. - It contains information about the association between the files in your project - and the filters. This association is used in the IDE to show grouping of files with - similar extensions under a specific node (for e.g. ".cpp" files are associated with the - "Source Files" filter). - -SetMsgHook.cpp - This is the main application source file. - -///////////////////////////////////////////////////////////////////////////// -Other standard files: - -StdAfx.h, StdAfx.cpp - These files are used to build a precompiled header (PCH) file - named SetMsgHook.pch and a precompiled types file named StdAfx.obj. - -///////////////////////////////////////////////////////////////////////////// -Other notes: - -AppWizard uses "TODO:" comments to indicate parts of the source code you -should add to or customize. - -///////////////////////////////////////////////////////////////////////////// diff --git a/native/SetMsgHook/SetMsgHook.cpp b/native/SetMsgHook/SetMsgHook.cpp deleted file mode 100644 index bcb9f57..0000000 --- a/native/SetMsgHook/SetMsgHook.cpp +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Copyright 2014, Synthuse.org - * Released under the Apache Version 2.0 License. - * - * last modified by ejakubowski7@gmail.com -*/ -// SetMsgHook.cpp : Defines the entry point for the console application. -// - -#include "stdafx.h" -#include "MsgHook.h" - - -int _tmain(int argc, _TCHAR* argv[]) -{ - if (argc == 1) //no args passed, show MsgHook Viewer gui - { - MsgHook_CreateMsgHookWindow(NULL); - return 0; - } - - HWND hookHwnd = NULL; - long procId = 0; - TCHAR *stopStr; - - for (int i = 1 ; i < argc ; i++) - { - if (_tcscmp(argv[i], _T("?")) == 0 || _tcscmp(argv[i], _T("-?")) == 0 || argc == 3 || argc > 4) - { - printf("SetMsgHook version 1.0 by Edward Jakubowski \n\n"); - printf("Usage: SetMsgHook.exe [(MSG_HOOK_DLL) (MSG_HOOK_HWND_OR_ZERO) (TARGET_PID)] [MSG_HOOK_DLL] [?] \n\n"); - printf(" Additional Notes:\n"); - printf(" Message Hook Viewer Gui - To open the gui you must provide the path to the msg hook dll as the "); - printf("only argument when running SetMsgHook.exe. Also setting the (MSG_HOOK_HWND) argument to 0 (zero) "); - printf("will start the gui and message hook on the given Process Id.\n\n"); - HWND currentHwnd = FindWindow(_T("MSGHOOKVIEW"), NULL); - printf(" Current MSG_HOOK_HWND: %ld\n", (long)currentHwnd); - return 0; - } - if (i == 1) - _tcsncpy_s(MSGHOOK_DLL_NAME, MAX_NAME_SIZE, argv[i], _TRUNCATE); - if (i == 2) - hookHwnd = (HWND)_tcstol(argv[i], &stopStr, 10); - if (i == 3) - procId = (long)_tcstol(argv[i], &stopStr, 10); - } - - if (argc == 2) //one arg passed (dll), show MsgHook Viewer gui - { - printf("Starting msg hook viewer..."); - MsgHook_CreateMsgHookWindow(NULL); - return 0; - } - if (argc == 4 && hookHwnd == 0) - { - printf("Starting msg hook viewer on pid %ld...", (long)procId); - TCHAR tmp[100]; - _stprintf_s(tmp, _T("%ld"), (long)procId); - MsgHook_CreateMsgHookWindow(tmp); - //_getch(); - return 0; - } - - char tmp[MAX_NAME_SIZE]; - size_t convertedCnt = 0; - wcstombs_s(&convertedCnt, tmp, MAX_NAME_SIZE, MSGHOOK_DLL_NAME, _TRUNCATE); - printf("MsgHook DLL: %s, HWND: %ld, PID: %ld", tmp, (long)hookHwnd, procId); - DWORD threadId = MsgHook_GetProcessMainThreadId(procId); - printf(", ThreadId: %ld\n", (long)threadId); - - if (MsgHook_SetMsgHook(hookHwnd, threadId)) - printf("Hook successfully initialized\n"); - else - { - printf("Hook failed to initialize\n"); - return -1; - } - - //don't exit SetMsgHook until hooked process exits - HANDLE process = OpenProcess(SYNCHRONIZE, FALSE, procId); - while(WaitForSingleObject(process, 0) == WAIT_TIMEOUT) - { - Sleep(1000); //check once per second - if (GetCurrentHookHandle() == NULL) - { - printf("unhooked."); - break; - } - } - CloseHandle(process); - MsgHook_RemoveHook(); - - //_getch(); - printf("done."); - return 0; -} - diff --git a/native/SetMsgHook/SetMsgHook.vcxproj b/native/SetMsgHook/SetMsgHook.vcxproj deleted file mode 100644 index d9ee930..0000000 --- a/native/SetMsgHook/SetMsgHook.vcxproj +++ /dev/null @@ -1,169 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - {34A73B55-8A93-4FB5-83CE-7759C1D23348} - Win32Proj - SetMsgHook - - - - Application - true - Unicode - - - Application - true - Unicode - - - Application - false - true - Unicode - - - Application - false - true - Unicode - - - - - - - - - - - - - - - - - - - true - - - true - - - false - - - false - - - - Use - Level3 - Disabled - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - - - Console - true - - - mkdir "$(ProjectDir)bin" -copy /Y "$(TargetPath)" "$(ProjectDir)bin\SetMsgHook$(PlatformArchitecture)$(TargetExt)" - - - - - Use - Level3 - Disabled - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - - - Console - true - - - mkdir "$(ProjectDir)bin" -copy /Y "$(TargetPath)" "$(ProjectDir)bin\SetMsgHook$(PlatformArchitecture)$(TargetExt)" - - - - - Level3 - Use - MaxSpeed - true - true - WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - - - Console - true - true - true - - - mkdir "$(ProjectDir)bin" -copy /Y "$(TargetPath)" "$(ProjectDir)bin\SetMsgHook$(PlatformArchitecture)$(TargetExt)" - - - - - Level3 - Use - MaxSpeed - true - true - WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - - - Console - true - true - true - - - mkdir "$(ProjectDir)bin" -copy /Y "$(TargetPath)" "$(ProjectDir)bin\SetMsgHook$(PlatformArchitecture)$(TargetExt)" - - - - - - - - - - - - - - Create - Create - Create - Create - - - - - - \ No newline at end of file diff --git a/native/SetMsgHook/SetMsgHook.vcxproj.filters b/native/SetMsgHook/SetMsgHook.vcxproj.filters deleted file mode 100644 index ff22488..0000000 --- a/native/SetMsgHook/SetMsgHook.vcxproj.filters +++ /dev/null @@ -1,39 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - - - - - - Header Files - - - Header Files - - - Header Files - - - - - Source Files - - - Source Files - - - \ No newline at end of file diff --git a/native/SetMsgHook/SetMsgHook.vcxproj.user b/native/SetMsgHook/SetMsgHook.vcxproj.user deleted file mode 100644 index ace9a86..0000000 --- a/native/SetMsgHook/SetMsgHook.vcxproj.user +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/native/SetMsgHook/bin/SetMsgHook32.exe b/native/SetMsgHook/bin/SetMsgHook32.exe deleted file mode 100644 index 9cf45b12cd9551ac8a76c4a679233465792030c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10240 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 TKDe7bR{R(S^TPB0CIbHra@W_1 diff --git a/native/SetMsgHook/build.bat b/native/SetMsgHook/build.bat deleted file mode 100644 index 626076c..0000000 --- a/native/SetMsgHook/build.bat +++ /dev/null @@ -1,6 +0,0 @@ -REM set path=C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin;%path% - -%WinDir%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe /p:configuration=release /p:platform=x64 %* -%WinDir%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe /p:configuration=release /p:platform=win32 %* - -pause \ No newline at end of file diff --git a/native/SetMsgHook/stdafx.cpp b/native/SetMsgHook/stdafx.cpp deleted file mode 100644 index 77e5e87..0000000 --- a/native/SetMsgHook/stdafx.cpp +++ /dev/null @@ -1,8 +0,0 @@ -// stdafx.cpp : source file that includes just the standard includes -// SetMsgHook.pch will be the pre-compiled header -// stdafx.obj will contain the pre-compiled type information - -#include "stdafx.h" - -// TODO: reference any additional headers you need in STDAFX.H -// and not in this file diff --git a/native/SetMsgHook/stdafx.h b/native/SetMsgHook/stdafx.h deleted file mode 100644 index fe28c4b..0000000 --- a/native/SetMsgHook/stdafx.h +++ /dev/null @@ -1,23 +0,0 @@ -// stdafx.h : include file for standard system include files, -// or project specific include files that are used frequently, but -// are changed infrequently -// - -#pragma once - -#include "targetver.h" - -#include -#include -#include - - -// TODO: reference additional headers your program requires here - -#ifndef GLOBAL_VARS_H // header guards -#define GLOBAL_VARS_H - -#define MAX_NAME_SIZE 500 -extern TCHAR MSGHOOK_DLL_NAME[MAX_NAME_SIZE]; - -#endif \ No newline at end of file diff --git a/native/SetMsgHook/targetver.h b/native/SetMsgHook/targetver.h deleted file mode 100644 index 87c0086..0000000 --- a/native/SetMsgHook/targetver.h +++ /dev/null @@ -1,8 +0,0 @@ -#pragma once - -// Including SDKDDKVer.h defines the highest available Windows platform. - -// If you wish to build your application for a previous Windows platform, include WinSDKVer.h and -// set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h. - -#include diff --git a/native/uiabridge.sln b/native/uiabridge.sln deleted file mode 100644 index 88b543c..0000000 --- a/native/uiabridge.sln +++ /dev/null @@ -1,36 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 11.00 -# Visual Studio 2010 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "uiabridge", "uiabridge\uiabridge.vcxproj", "{BAC1B079-7B87-4396-B17F-91A86DF1AE29}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "uiabtest", "uiabtest\uiabtest.vcxproj", "{7958D1B7-F169-40FA-A7A0-10E8E0F90CDA}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - Debug|x64 = Debug|x64 - Release|Win32 = Release|Win32 - Release|x64 = Release|x64 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {BAC1B079-7B87-4396-B17F-91A86DF1AE29}.Debug|Win32.ActiveCfg = Debug|Win32 - {BAC1B079-7B87-4396-B17F-91A86DF1AE29}.Debug|Win32.Build.0 = Debug|Win32 - {BAC1B079-7B87-4396-B17F-91A86DF1AE29}.Debug|x64.ActiveCfg = Debug|x64 - {BAC1B079-7B87-4396-B17F-91A86DF1AE29}.Debug|x64.Build.0 = Debug|x64 - {BAC1B079-7B87-4396-B17F-91A86DF1AE29}.Release|Win32.ActiveCfg = Release|Win32 - {BAC1B079-7B87-4396-B17F-91A86DF1AE29}.Release|Win32.Build.0 = Release|Win32 - {BAC1B079-7B87-4396-B17F-91A86DF1AE29}.Release|x64.ActiveCfg = Release|x64 - {BAC1B079-7B87-4396-B17F-91A86DF1AE29}.Release|x64.Build.0 = Release|x64 - {7958D1B7-F169-40FA-A7A0-10E8E0F90CDA}.Debug|Win32.ActiveCfg = Debug|Win32 - {7958D1B7-F169-40FA-A7A0-10E8E0F90CDA}.Debug|Win32.Build.0 = Debug|Win32 - {7958D1B7-F169-40FA-A7A0-10E8E0F90CDA}.Debug|x64.ActiveCfg = Debug|x64 - {7958D1B7-F169-40FA-A7A0-10E8E0F90CDA}.Debug|x64.Build.0 = Debug|x64 - {7958D1B7-F169-40FA-A7A0-10E8E0F90CDA}.Release|Win32.ActiveCfg = Release|Win32 - {7958D1B7-F169-40FA-A7A0-10E8E0F90CDA}.Release|Win32.Build.0 = Release|Win32 - {7958D1B7-F169-40FA-A7A0-10E8E0F90CDA}.Release|x64.ActiveCfg = Release|x64 - {7958D1B7-F169-40FA-A7A0-10E8E0F90CDA}.Release|x64.Build.0 = Release|x64 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/native/uiabridge.suo b/native/uiabridge.suo deleted file mode 100644 index 0c2f744a2c91bbe8b8fc4400524c0394dc21e4c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14336 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 F@Lz`cVaxyk diff --git a/native/uiabridge/AssemblyInfo.cpp b/native/uiabridge/AssemblyInfo.cpp deleted file mode 100644 index 5ef1b63..0000000 --- a/native/uiabridge/AssemblyInfo.cpp +++ /dev/null @@ -1,40 +0,0 @@ -#include "stdafx.h" - -using namespace System; -using namespace System::Reflection; -using namespace System::Runtime::CompilerServices; -using namespace System::Runtime::InteropServices; -using namespace System::Security::Permissions; - -// -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -// -[assembly:AssemblyTitleAttribute("uiabridge")]; -[assembly:AssemblyDescriptionAttribute("")]; -[assembly:AssemblyConfigurationAttribute("")]; -[assembly:AssemblyCompanyAttribute("na")]; -[assembly:AssemblyProductAttribute("uiabridge")]; -[assembly:AssemblyCopyrightAttribute("Copyright (c) na 2014")]; -[assembly:AssemblyTrademarkAttribute("")]; -[assembly:AssemblyCultureAttribute("")]; - -// -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the value or you can default the Revision and Build Numbers -// by using the '*' as shown below: - -[assembly:AssemblyVersionAttribute("1.0.*")]; - -[assembly:ComVisible(false)]; - -[assembly:CLSCompliantAttribute(true)]; - -[assembly:SecurityPermission(SecurityAction::RequestMinimum, UnmanagedCode = true)]; diff --git a/native/uiabridge/Global.cpp b/native/uiabridge/Global.cpp deleted file mode 100644 index 2523535..0000000 --- a/native/uiabridge/Global.cpp +++ /dev/null @@ -1,10 +0,0 @@ -/* - * Copyright 2014, Synthuse.org - * Released under the Apache Version 2.0 License. - * - * last modified by ejakubowski7@gmail.com -*/ -#include "stdafx.h" -#include "Global.h" -#include "uiabridge.h" -using namespace uiabridge; diff --git a/native/uiabridge/Global.h b/native/uiabridge/Global.h deleted file mode 100644 index c486cd8..0000000 --- a/native/uiabridge/Global.h +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright 2014, Synthuse.org - * Released under the Apache Version 2.0 License. - * - * last modified by ejakubowski7@gmail.com -*/ -#pragma once -#include "uiabridge.h" -using namespace uiabridge; -namespace Globals -{ - using namespace System; - - public ref class Global - { - public: - static AutomationBridge ^AUTO_BRIDGE = nullptr; - }; - -} - diff --git a/native/uiabridge/ReadMe.txt b/native/uiabridge/ReadMe.txt deleted file mode 100644 index bba57e9..0000000 --- a/native/uiabridge/ReadMe.txt +++ /dev/null @@ -1,8 +0,0 @@ -======================================================================== - DYNAMIC LINK LIBRARY : uiabridge Project Overview -======================================================================== -Created By Edward Jakubowski ejakubowski7@gmail.com - -Description: -This is a bridge for java to access .net 4 UI Automation libraries. This -library enables Synthuse to access and automate WinForms, WPF and Silverlight apps. \ No newline at end of file diff --git a/native/uiabridge/Stdafx.cpp b/native/uiabridge/Stdafx.cpp deleted file mode 100644 index c445b97..0000000 --- a/native/uiabridge/Stdafx.cpp +++ /dev/null @@ -1,6 +0,0 @@ -// stdafx.cpp : source file that includes just the standard includes -// uiabridge.pch will be the pre-compiled header -// stdafx.obj will contain the pre-compiled type information - -#include "stdafx.h" -#include \ No newline at end of file diff --git a/native/uiabridge/Stdafx.h b/native/uiabridge/Stdafx.h deleted file mode 100644 index 3cc4c24..0000000 --- a/native/uiabridge/Stdafx.h +++ /dev/null @@ -1,7 +0,0 @@ -// stdafx.h : include file for standard system include files, -// or project specific include files that are used frequently, -// but are changed infrequently - -#pragma once - - diff --git a/native/uiabridge/app.ico b/native/uiabridge/app.ico deleted file mode 100644 index 3a5525fd794f7a7c5c8e6187f470ea3af38cd2b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1078 zcmeHHJr05}7=1t!Hp3A*8IHkVf+j?-!eHY14Gtcw1Eb*_9>Bq^zETJ@GKj{_2j4$w zo9}xCh!8{T3=X##Skq>ikMjsvB|y%crWBM2iW(4pI}c%z6%lW!=~4v77#3{z!dmB1 z__&l)-{KUYR+|8|;wB^R|9ET$J@(@=#rd^=)qs85?vAy(PSF5CyNkus435LVkZ$rj zNw|JG-P7^hF<(;#o*Vk}5R#e|^13tBbQkeF?djULtvqyxd3<{9 diff --git a/native/uiabridge/app.rc b/native/uiabridge/app.rc deleted file mode 100644 index eab43064f13cd0a8912887c2c7299ddb6d7d2240..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2558 zcmds(T~8B16o%hx6aT}cz0qh|kt;8OHl(p2u|ObcVzjun$-0o1ioYIx-q}uzY&RON zHfA$lXU?2CAMZJ{zwW#0D(FZvO*GfF7PL&a(9WSPwA5$itPb>wFX)@Ts-VrG-!fi7 zn=|^{lG%iLU}b4D-N4h)b3NmhZXDZC3wCq3uOe@&a=xRfT9Ml)+mSDe=PY|qCmQKg zXXO<`@Kh{u}P)77e+J`b^ZYfCz>(RWgv~!7P?33(2w$i>2#H#>Fc|_Qh z^$Vg|uu6y;F)Q)4&`b6oBW$sbY4hW1i<6cC#7@YRVoj;;1hOW_dS{Ze%gCRTQO?P0 zWC0DOPI5U zsW~oLw6^XIsan`<>ynio16ff0_sBq)>sz3jP1&!{CS&XIJM!nhN%CW}eNvC;0#Epr I_*Z2A2KzE2Bme*a diff --git a/native/uiabridge/bin/uiabridge32.dll b/native/uiabridge/bin/uiabridge32.dll deleted file mode 100644 index 49b226eadf612c6d2dba4fa62861a48be08b60bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 78336 zcmeFadwi7DwLZS*_Rb|UNhXsEAWC2e3?$(qAa_Za3?z^n$pjOt1{@GjAQ%!AFAzFn zMZ|imwMtuXY{k}AtG1=BwUMz^PwhF>T1#6>siSSI+Un6Nt=9aW^}Kr~8N{CRJ>TCS zzt8V;M&Gsf^Q^VkUi{;kTUl(OR(98~HMQu$O-{ujccRPLDX=c>ouKO1|< zQvb8D(e)d)mTu|pTGzdLQ)z7V=FMF_r5CR)?e5)Nx?yu^O;c;>rmi(>r}%uH@!It} z4}SmPcb|RngY@y_BTGN{Ht>V@nCU}pwI4iA{VzYb4e3K|%cy^-ZTkm5Al{+VrVqYD z+^Ew!rY##{>&5pcwWK+sRK3Na%8u@BP1~GM*0DJjk5cD?dCO!=8<6JXXeQ2Q-l~*C zp%d^)r)mo@I`iA#wJ58q0ze@tmq|^yztW;!MfrV`ET+q5i#lkC-6@|{7PSU;Z=v4N zr>KU*5iO^T8SL*LX5d|+RP8W4rDyF`J;1+P2qE!FTV)aq`;;oRYD)K-)jg|~+I0d7 z_*5_BSd3%XrwUb1G0oKd=r%SRF{|-r-=s}p*FU9uYj+F;+ln?T7r=y%*;P&HUc0eN z3}ten4;b5&kJ+6P32guO^MBL>wrLhspi9^)T-H!rDWlx5hH{niOn&}((NEI)Zgl^a zzU3H;Znxy>C08OjEDn2jP;!mPp%}|KbvbLuM`z+I%@y`xxxvyl&8kopKh~12&!Ki} zC@)>NRUxZ#l=53WMujVcNIXWn$B-J#&tMs5TfWq1RS3%TV+&m^e#C09%%0K9RFjXb z!fv%Ki_*zpnM>t6trMZX+F8;*6g=b0&-g!2`?qJc)oUvq930$nPEPkTR(P2pUUZdqR%x|mshP7d^ zY(&Q2(ky?oW;hu5tn!h?c8Ap#GM(9G<{J#rZHzb{LAI6`4|6@Njp=wtYyU%Y=XCR_ zq%WG8PwDw=-HIvcxvmY0bP>+WS%~vY8OLix6&eSloB~T|EYgZG$dn?}i#^eTaWIUo zF@RcK`3H&WV{7J1=%!QFj2Cst$9m05sbd=~Cd(W}WeOGft)Y8B*+YoK$Q@Eu+MvBc8Wdb6hEfwax4JL_EFG>&VZ=MA4Z2pfTe81V9 zSP!MTKkdq&_6@tzeVF|)#rjN}as>>Qjo0>$%syeY*-_wrvjEOn!wU?Sg+9UlplRO|AJx&-|_A|9TdQSV-U7_1IN9(QZk8+f@ zmwaULY?uAX2wg7&M@v%-mMzfs7TK5hp=sy_S`L;~W&B~BhOMtzhOOjcPr0=S!yUQ; z#!=a42Fq$P{?hxCb(uL|q{hLr+Ke78Rt>Xi@H+A#mknewOiAI<1b z@4sE^Z7O|vVqIn}Hg`{n?}AME^xmFcY%+ff5zpD^Q`@o}>oVsQk8>FomECGAW9y~- zDwfZ|yv3$1dy*gVV=KqTQ_@lT5w^ZrwFNe#v-_qoRgKRMgW*`vOg$P!b=@FKh4MV5&jY! zl3t1<%@3O%XwMqmA6e(MFC&hu^BMwG=SW+Zd0my(!pW{2r^mUZ!iBxnV=SpWX*fH4 zE_Vo1ENl9~|9ahDHul$C@xi^sT6~>sHTJ>~+U}`v*ovd&4fYTQ#mFhJI(6?^hk6g= zVGm(W7zNg4o&pRhwjuFgGosQn*rlK`d$5@Or%t7Z^%vF+uM^PWnSPOe+JFP=Qe8HT zm;Li}`(qAx)XI;o!Z&Q|EYDZgPyzuRcbZow$56GZ#zrZ=WgnBdjSZ037cy2d_cHUn zxa)qD<^CIjjeLe}od0q^&4C}eM3#@OV$$i0jT=UD8)m!@ep0-Z@FlUyc}UjGY2y7_ zI^H1k^JI)G?S(nzqpTk5@JV9r@LFA*BsorVPZ%uQn3;ctD2vN_e}To?y!8M)dTd6h z1e0TelYN0x2-l_z{iychDAs84sY`UQY)i)9uc^4)PuuswHIff zH*jfTFZ7m=GI9*G3YSJXPE38L(cv@9sqb}d-3f2{TG8AOdvrVwbshXxiC@Plesey? zpe9FQz)^mt;ghP|CG9>ps&X400jJ@2vI_$arx@AG&vbfaDY{D9y)GEJoE-tf={HOx zJ9m4(-R}tPLTE!fvAGKjmRroHD~)fM1#+et>Tig>2C<{Q({&5tFisb&*YJDI zI1DomBeWMzWe+KyY~5kO@*Q^059GLR33#l2k3UCxXxIrg;Mn>_lnc21?tr~Gr`UDN z)QHP@Prz5;^V`kKA_+F&vie;pIqc#f;I#T3PQMfEuoEuF&UMS#Kd{;jXoj8ZkGuSK zUP2wyso#-ayRtv@;fUc#;gB^UYax3-y_WqceKrVvMEBXLL+&Z?*+aOPH3#~?*LOaQ z>COLd_Fis5?*C=)IsQAnC;OiC-Ay>8@7~0b?z_RVKHXmqbuaiO(qCR{?rE2vuYB~! zmR`VR_{}ZF#~EgKxI?$fRB*z{Dbbm8$nYCpzcb)2aJz=h90#V!DKp1@-03o>f|>a3 zlevdWTUOzabI2YX={?b0@7HJAgDp%gHQV#?;diHp-(L9NX_nvZ4t>^a)~S7-)hbVc z=YP;D^V}rulIsO&*KIh4w<|rz2g`2EwC^?8)PBPJ&iVK*!QBco-RYCvDzl|wxAHnO zyF_N+^UA)L+0wA@et#}={GA?tnEsvfp`_&xuvUE|~XfLv~6 z#vdmQRf*$QIMQ?39RHiyKXT0=&%f%>Kh|rSumHMnN#U_xgJ)85zib$xOM!V_lk)Ph z+OES>FFQD!T8*u-QOa(`6^Z9MDP@-3z79CFKI5w-gdy|Ta%}oK%C#NE>^bEDTlXut z1MXT2ZG~ZyA*?=6XbnWbzV%`xK4|MrXLUcOvat1)=K_9J&a?**)5xwwv$X ze&H#07o_cUInlG6#^($E6hyJN*l)jOYPa9+y2sN!2R;K1Bh&#+_mWHnV@zf^kNZqd zNqeXr2~K-Bmr2BxxlYr@j6dKuhQ)5Meoi3Nc=jz;cL*1Yp6l@3QTJpBchmC72=}cv zUW;)II94`$7cLCZ3miDyS!uiB*MXTa<#=6-3p?2Pi*bG&D#f$hHBx23Qyg#>`#rZT zh{6(QIOjb%X8XO)kG0=qhV#SQ?=>q3VXk;W@a+j;9}i)Mc;>!{S%W-6^LXqPjdr68 zlfhFl&e&d$7`m597bE8hH3*%9JID5bea`JDl{Ot^Y=`bt(|LPgVgw9MDW73Fl9=R# zTr{QFDE7NU%Yl7{9}C+YC!G5I2IpU8f!P)f=Z=Lpx=Odb5rLUAb+yeIS_VfwHl@x8 zxQYXgVn0sy6@HiBac98i^7}$qQl9RIGEI^8c>NBv#Nl_q_Uso+_Toy_63D?-#AhWp zrn1$Ay#rg7$6G$$dW|fyiab<=lZ~efJ2YsYuGfSvvx|)`oW4C~U{lP_vRABgvolTB zjee_vP5BBp`^{|bn)1c=ibd}2=n?xVc9VwLRgAXNWN2Klqe*kg!2$9ksn)SrM;rfQP#B>{z^K!!blh)hrV+D zkfvI~FSl2OhNx4FbB8oy%zCg3DXbqqhtXr(UIhgQE@1a#=K1X$K(BeJHo@h*6YCty z_B3PXNneZo#vC`FJ2Psys+K{M=cn?V2$xIzbl>ezTkN(j?8hEk7tU6mPz40yvhv&| zM&>=eb?Zhbu9Kx|Ei^aL67I29#vQsHv)X*7JJEFgUzW3F%GicIzby=XhMt~(UY-lA zz}&@7g=^)K!a#AMuQ1>#47dve`GuasoWg*s&|4TNDh%Wm1_~KQAm9&RbOV8c;(%fA zek8LPY$bZh1#sxZmD&s>=0N37;9m|q<5`F;NUTNeBq_5gpr z-*=D4+`|I}^rJUL*YM4s4gN1q3NAaY0>!X0h^Jt3LNQU13Cv|!iMyh?a>g$7`dvJu znZcIYw(|@o8_za8<*+QRbj&#m0pk8sIPAFGGvt0$_6%>iE3I+C@?Ch;@eXZdpK_U7 zSdqUdkXIb=Vl&LUW$HwKp5J?CV1&~@;&f{v$M3~L_m;n)w=loopIHn}zn`lir+kEq zyHt*o1JgYUt06QEVF{5rp$m7`o zo}t*e{xSM^hG5%h-x!+0Mq_?s6VVICJc&)V8dyQMan;J2#eJN@1&Y7WV+-LKgvWQh z2#+e*pRC`UoX1Cg%nP1h(F>xJ`yBZoEba|CNQ-btY&p{$>I394&#*5zw&MAMN3Pkp zhMmsPLg2~U@#G{k+45cK^*k4>r`+YTh2}^u9YVSk@NDpNzX10R?)PXLH>7~w#4~Kg z<(85caI0Kd>a-em8$;$09#arNkD2YK-1-e7Rp z+wH0tI$VtUc^R9dEu2`15s1223M_S`JD7{ z&AgJ`U=A*OiuHM=Z(KwDrJLoRoF03*mUrWjHp%%a-7Z{6NPGR=>k(s)d3oWq@hX$e z@tN+eZtY!Pdpf&tli`_Q+)_Nl|LX4iJ!5LKR6BfzhNzP%;>)e z-rDxOv0_E*jQ*A9&5d|_&z|e3ud(EB51O?N`ULH1x5w9hsP@d7hI)Qzn5As+ST9VzI4n0HZt}4-1U#cc>O~V&p1Rch64_$Iy!ds=k2;0 z({24hF}WXN;E!lw$L?8TIODe+b1(Gvx=>9~6?AjY+z+;A^m<9y6>!kw8|=+rIoRtO zEE0N*G|&&-PBNrAzuWwH&pH-A9(*@t6*!=QXzu%m#NJX2?J%?CBCiWe78PWY>FAm8~}{{uV)x zLbkDHMLlNyFfL2i|N0qwB5&+*?Q!pJIMKXf;8)nMJ35kk)(*tizM^DKKNI;7=d{5A zS;%`LuMAY6?j+_K8Vh>RTpu#SdmRIH&|$LdX~^Hx<{fw*=N-H4kh+nfTKf?_-0#uMED#u^sF^ft*Z_>=qpxI3J-TQBx%YD-TT*D-oY)h41|& z&@!2Wc;*agK2c)Tdm3Da8t{zZlDU>1`;30nT)n{d)Xq8bvQzJ0XT0#e94xL&=GKnL zyYuj#!xtvg52KKp&m?EUT(~I;k>;yt`V3RXY9GoyQkJW|L@)I zJ?$>rujhZz?O7b}56yq6dtgRCrg@e-)8C~Zt?xr))_-q?%3pH;lR!1c-*C0AJnz7M zOo8chleuQZziJ;<4@bsP0>9OmpmiNZ#Ff})VQFTx2J0S zQv+k(KN3G-(L=MR;jJ~hed4AALG5`JogkBR#tS>=VrT1T%Vmyg^BMggFECiv!`|IO zxsh@`B>RZdwIIGw7NhEQbH?EXseCMFnXlt?wjXbD|xvYX-}f?0h4H z^_5r^!6xauKx9$7$TOoNXElplSPyy0%|%x+@oi*sW-Sv(4U@7eCY1}2?E9=^3z9t% zl~}{no>-4`Z^V`85xncfhl7L9I3B_7W5Ejq2Sk}z1N4le9nx)A{m(cqpcZFWiG262 zqbPDf8oGPeF=PjeTxdYzAdD`x4B+BZbzF)wv=`+1r!jj5i}I0;FBAjS>w=A3y672G?Py#8GK2nG9-pu?mxtXeE-$bP=hx(q4i$BZ@tS z1lSMf=7rIoD!c4WS>NT_LbxtBpP9(%L_WBx4c#pyZHGTcu!laM;fH-6{6F?F>>Z?Q za6hZxUz2N8`QUjoNqPQ>dgUDfzqRX2h@c|ZOuOy{@Rl3faYc+9lMv4926RlR%h9@= zQG0R4ix-fJtzBP)?R{20ovHAcDZa^c(g&UbmG~X^xhfnkd~vBcyD`FVzt34=clxwD zpE1&XU-#z?wZ#bC1$XB2pYe>^?7w|rZQaj1)fO|FBXXfFZ@+ltPDT3Lo_P;Y`ukBt zZZ!)GGyNP)dsy<2c?*HDv+#L7`)BLpV6VmyKb@IBLu0u0F|B-7lyVP=TOYLveOSz= zFQ(W&2HjquLibC&p&KEswyy0+j^`Q`9%@5h0hAX6((ebzHd2aXB92@fRlI++tJTQk z{>ESIl}9?m{afkZ+I1ahkI{8Cl8Qp3>l&mzn7|f1&%Ocq@>h-r@P#tp70Yo}7*6xs zt>d|_Q$yi1NWzV->C}TgqIlccvH3DNXIDiKD~ywm!jR)5H@WC{r9}? zKcBoCpt{k90%cu>FY)WFqj8+ozSKI#Ey5!rM}${|PeiVWy!NH?P6r+Z4wfB(H|g&V z`08bU@4&60U2gUbpF3deK*yQL>k2sVR?1B%7_b+ZZ>o8Yd*vCPC+E0w7N0%Jz`H$T zX5vk-hP zhMZ8Zlvw4>JvhSKLd9pFS%9a`J&46E&lo&CO>pWxp68UOImR(V?$SMY)g~Q>#2|ew z_rbCjWDKep$1%ns_rJJ5R@b7Q9dpus5U}sS{%rP#-){DWqrkzp_B`?^5Hn)gn9_DH zp0@5pg;twu*`%0shO>C8;baiUeZxCu_*|7aItfQJ4(Wp`#&bgV%dq`N-udA={-piR z!h2@8P<##ZW_Yy7o2i~+^y4eyQ05mNzo{JvZaX^EK4Qkq9kY>oD0h?~J9Ct=tTNXa zg}0K3XTMeMD(VyClF7wPizl;ek$LtQfMfBCIjQ=@FFFK%SM5MW_8iI`we;(RU*{;i z@`~>utE^nZ`e70A>0-g4*Zd+ze;#_VomIuGGicUf+=PDqx zm#+)@%VUg; ziqcRY22)CUD%{2LDASlwo+FREhGMcyQI4~$HTi5G2YtoF9V3vGgziJ(%27MeQTEV& znHnEiLI}Zlp@Ls6NV8mYK_8e8@_v@TFtkT%z6HW##a=ub8NALnSmqtFJp;CJ*vh`d zCCL|6_@3>}Fqany2g~w@>_>f~y-i*}@QC|Dn9JNk?4RWOvoM9_2s)PYa6WA1Bj+qR z!Qk=zAtX4T*|_#a*Zn-6Az5u(zXOGwokr_=WS`iDHdsU00X)`^j3;5R6^zHjzBjr) zjl9mHv2p<-@ukPf+WiL3r}CAeF`=Zd44u3K&9v`;-Y$J&j39{`OLe@~p?7S%FL9;I z%413yit#!wG?E`{x8I$y!Kun9;hd4Tgm&I)ZKxV2I6NA7IJp824miEa^jJ_Ru;w zm@u@%=$;T&3D*Q1Rb=`@*06l6-A+%sttEY!U3U4tAAWE`weP_0o$gUl!NWA&S8}eE zkG1N>cS4d6QpbWl!4j9Gw z7MkA&;kBcd=8xO8(vx?`UIUF15D=Bv)`YLPxcp-;7h*R$%$MMM62w^1|$30#=pJz^)b)z^xGDdQE za1^2rlA4pXB)p$>FVOSCGW1;`?nW^UtnkYZ-oMV+I5lULulCVi`QUx)O#Ct6-Egh1 zFRk69bJA0c7lg-i&6a&x`VymKl`pG|<7emKWP%rJmjjqf#3|pG8plU^MNv3RQD`cp zz4c}v%ibk@EB%>^qe{0|V#N|*pN~YE?uRswDa3aw%zmiVZLsp17P~R_S@~|qn1HlV zV!;c%4M+i_NRA;DXnv<+hc6cnHxBsA#DQl@nZ7FmFQ2VGG`>$Ry0`ui4*KLWRPM9n zy;y03d~DW9d*SJL{)Es2unzUX@FV|(<7hUo_tFC@^%aXf4$0$P)l577?|p62z8suO zaIb83N3PvE>E{1VY-lFiBe6*y&wg}YSmm6@^WJtW4tvFj0>z9zt38Mo-@Fo|IJpqp z$W>BE&H*r0x1-|FdFTx64&_#!G->HEwn>4@MTEYF@^TF;C(%BspxkS!tvv6+=e4F! zi<0y29Ya1Vw4uDm=3(u93>o!Xl$?Ku+xktX^1h>|nDxN(^=bQ|chy7ZBi_QHrwKR0 zMA{>BQa;-kBgB%9K1rCbbjXWHvW4E9jx)zJRrD45hD3)4mFc>M{%*q5f5p__IixQ@ z`Auji*5w6oUEvIMA}Qg$%H52|{F}9Gn^hT`eY62g$8izz2w^{X*|+4+67LrOc+;)Y zS~OX{*)~e54A72cq0Im}b~E+hHT;0vwydPX?;f$H`a5uFTQ=%^pSx5R&`gIr;3{`A zA8-}q;;Z3yzJpreGjBui&3ta?A+%54H3<~p@E7}^@Hm{IEofmBUj#Be?!ZDl?mq4eT?`th3{Rz_2+tC1{0e)r>|64YbHn90zKR29 z54B3~TLI+X#o)tbLQJH&Hvw&5 zgq+#?+pE%9kF#jXWzLHAM#Wkuo^=H5#;6Vq%IsQWS*Q!~PWdY`GGYc{bkeQjGvmoO z2hU4fp7KWua7WgI5yG27nBshyPo~O22~?hW$U2gbmA$n? zqTNv?f_1D#&9Hum&ElT;b=ck`G0cb2-2Fh?7o;1Lv;Ew3R@&9&tk`H&Y`|rN*|cJL z5yYh%n4=pw!&?3(+8fr*45Si>@tf~8t7Zu(TC{^f=)QQ|>du&AU$~cgTIoo&Hj`0@r&vB<-Ce(4*X5k%p&VDz9>6spI~kMI*gCfzlCEC zb9H1p{uY+c{<^*?UG*&pm>o;|90QvKe1x_lOmBhJ8hQj4auRzOX}X6|;)Iki?}