From 1809e2ad55b254516a711d395a5d02d5d78a2624 Mon Sep 17 00:00:00 2001 From: Edward Jakubowski Date: Sat, 5 Apr 2014 17:24:08 -0400 Subject: [PATCH] Updated Synthuse to list WPF and Silverlight Windows The WpfBridge native library can now enumerate all WPF and Silverlight Windows and list them in Synthuse. Still need to add a method to connect the Drag Target to locate the WPF window. --- .gitignore | 3 +- native/WpfBridge/WpfAutomation.cpp | 110 +++++++++++++++++--- native/WpfBridge/WpfAutomation.h | 6 +- native/WpfBridge/bin/wpfbridge32.dll | Bin 74240 -> 76288 bytes native/WpfBridge/bin/wpfbridge64.dll | Bin 88576 -> 91136 bytes native/WpfBridge/build.bat | 1 + native/WpfBridge/org_synthuse_WpfBridge.cpp | 63 ++++++++--- native/WpfBridge/org_synthuse_WpfBridge.h | 74 +++++++------ src/org/synthuse/Config.java | 1 + src/org/synthuse/SynthuseDlg.java | 4 +- src/org/synthuse/WindowInfo.java | 40 ++++++- src/org/synthuse/WindowsEnumeratedXml.java | 45 +++++++- src/org/synthuse/WpfBridge.java | 26 ++--- synthuse.properties | 3 +- 14 files changed, 297 insertions(+), 79 deletions(-) diff --git a/.gitignore b/.gitignore index dc6b6da..8df1a62 100644 --- a/.gitignore +++ b/.gitignore @@ -5,4 +5,5 @@ dist/ synthuse.properties native/WpfBridge/x64 native/WpfBridge/release -!native/WpfBridge/bin \ No newline at end of file +native/WpfBridge/Debug +!native/WpfBridge/bin diff --git a/native/WpfBridge/WpfAutomation.cpp b/native/WpfBridge/WpfAutomation.cpp index fa4cd59..31a9ee2 100644 --- a/native/WpfBridge/WpfAutomation.cpp +++ b/native/WpfBridge/WpfAutomation.cpp @@ -34,6 +34,8 @@ array ^ WpfAutomation::convertRuntimeIdString(System::String ^run AutomationElement ^ WpfAutomation::findAutomationElementById(System::String ^runtimeIdValue) { + if (runtimeIdValue == nullptr || runtimeIdValue->Equals(L"")) + return AutomationElement::RootElement; array ^idArray = this->convertRuntimeIdString(runtimeIdValue); Condition ^pcFramework = gcnew PropertyCondition(AutomationElement::FrameworkIdProperty, this->frameworkId); Condition ^pcRunId = gcnew PropertyCondition(AutomationElement::RuntimeIdProperty, idArray); @@ -47,22 +49,28 @@ array ^ WpfAutomation::getRuntimeIdsFromCollection(System::Win System::Int32 count = 0; for each(AutomationElement ^child in collection) { - System::Object ^currentVal = child->GetCurrentPropertyValue(AutomationElement::RuntimeIdProperty); - if (currentVal != nullptr) - { - array ^idArray = (array ^)currentVal; - for each(System::Int32 val in idArray) - { - idStrArray[count] += System::Convert::ToString(val) + L"-"; - //System::String->Concat(idStrArray[count], System::String->Concat(val->ToString(), L"-")); - } - idStrArray[count] = idStrArray[count]->TrimEnd('-'); - //System::Console::WriteLine("id: {0}", idStrArray[count]); - } + idStrArray[count] = getRuntimeIdFromElement(child); ++count; } return idStrArray; } + +System::String ^ WpfAutomation::getRuntimeIdFromElement(System::Windows::Automation::AutomationElement ^element) +{ + System::String ^result = L""; + System::Object ^currentVal = element->GetCurrentPropertyValue(AutomationElement::RuntimeIdProperty); + if (currentVal != nullptr) + { + array ^idArray = (array ^)currentVal; + for each(System::Int32 val in idArray) + { + result += System::Convert::ToString(val) + L"-"; + } + result = result->TrimEnd('-'); + //System::Console::WriteLine("id: {0}", result); + } + return result; +} //Descendants will walk the full tree of windows, NOT just one level of children System::Int32 WpfAutomation::countDescendantWindows() @@ -135,6 +143,84 @@ array ^ WpfAutomation::EnumDescendantWindowIdsFromHandle(Syste return getRuntimeIdsFromCollection(aec); } +array ^ WpfAutomation::EnumDescendantWindowInfo(System::String ^runtimeIdValue, System::String ^properties) +{ + AutomationElement ^parent = findAutomationElementById(runtimeIdValue); + AutomationElementCollection ^aec = parent->FindAll(TreeScope::Descendants, gcnew PropertyCondition(AutomationElement::FrameworkIdProperty, this->frameworkId)); + + //create array for keeping order of properties + System::String ^delim = L","; + array ^propSpltArray = properties->Split(delim->ToCharArray()); + TreeWalker ^tw = TreeWalker::ControlViewWalker; + + array ^winInfoList = gcnew array(aec->Count); + System::Int32 count = 0; + for each(AutomationElement ^child in aec) //loop through all descendants + { + array ^aps = child->GetSupportedProperties(); + array ^propValues = gcnew array(propSpltArray->Length);//keep order + for(int i=0 ; i < propValues->Length ; i++) + { + propValues[i] = L""; + if (propSpltArray[i]->Equals("ParentRuntimeIdProperty"))//custom property for getting parent + { + propValues[i] = getRuntimeIdFromElement(tw->GetParent(child)); + } + } + for each(AutomationProperty ^ap in aps) //loop through all supported Properties for a child + { + System::String ^currentPropertyStr = L""; //current property values + //System::Console::WriteLine("property: {0}", ap->ProgrammaticName); + System::String ^shortPropName = L" null "; + if (ap->ProgrammaticName->Contains(L".")) + shortPropName = ap->ProgrammaticName->Substring(ap->ProgrammaticName->IndexOf(L".") + 1); + if (properties->Contains(shortPropName) || properties->Contains(ap->ProgrammaticName) || ap->ProgrammaticName->Equals(properties)) + { + //System::Console::WriteLine("shortPropName: {0}", shortPropName); + System::Object ^currentVal = child->GetCurrentPropertyValue(ap); + if (currentVal == nullptr) + continue; + if (ap->ProgrammaticName->Equals(L"AutomationElementIdentifiers.RuntimeIdProperty")) + { + array ^idArray = (array ^)currentVal; + for each(System::Int32 val in idArray) + { + currentPropertyStr += System::Convert::ToString(val) + L"-"; + } + currentPropertyStr = currentPropertyStr->TrimEnd('-'); + //System::Console::WriteLine("id: {0}", result); + } + else//not runtimeId which is an Int32[] + { + currentPropertyStr = currentVal->ToString(); + } + } + if (currentPropertyStr->Equals(L"")) //if there isn't a value skip + continue; + //System::Console::WriteLine("currentPropertyStr: {0}", currentPropertyStr); + //find the correct order to return this property + for(int i=0 ; i < propSpltArray->Length ; i++) + { + if (propSpltArray[i]->Equals(shortPropName) || propSpltArray[i]->Equals(ap->ProgrammaticName)) + propValues[i] = currentPropertyStr; + } + } + //output properties in the correct order + for(int i=0 ; i < propSpltArray->Length ; i++) + winInfoList[count] += propValues[i] + L","; + ++count; + } + return winInfoList; +} + +System::String ^ WpfAutomation::getParentRuntimeId(System::String ^runtimeIdValue) +{ + AutomationElement ^target = findAutomationElementById(runtimeIdValue); + TreeWalker ^tw = TreeWalker::ControlViewWalker; + AutomationElement ^parent = tw->GetParent(target); + return getRuntimeIdFromElement(parent); +} + System::String ^ WpfAutomation::getProperty(System::String ^propertyName, System::String ^runtimeIdValue) { AutomationElement ^parent = findAutomationElementById(runtimeIdValue); diff --git a/native/WpfBridge/WpfAutomation.h b/native/WpfBridge/WpfAutomation.h index e1ce513..ea9308e 100644 --- a/native/WpfBridge/WpfAutomation.h +++ b/native/WpfBridge/WpfAutomation.h @@ -24,13 +24,17 @@ public: array ^ enumDescendantWindowIds(System::Int32 processId); array ^ EnumDescendantWindowIdsFromHandle(System::IntPtr windowHandle); //In all the above Enumerate methods will return a list of Runtime Ids for all related windows. + array ^ EnumDescendantWindowInfo(System::String ^runtimeIdValue, System::String ^properties); - System::String ^getProperty(System::String ^propertyName, System::String ^runtimeIdValue); + + System::String ^ getParentRuntimeId(System::String ^runtimeIdValue); + System::String ^ getProperty(System::String ^propertyName, System::String ^runtimeIdValue); array ^ getProperties(System::String ^runtimeIdValue); array ^ getPropertiesAndValues(System::String ^runtimeIdValue); private: array ^ convertRuntimeIdString(System::String ^runtimeIdValue); System::Windows::Automation::AutomationElement ^ findAutomationElementById(System::String ^runtimeIdValue); + System::String ^ getRuntimeIdFromElement(System::Windows::Automation::AutomationElement ^element); array ^ getRuntimeIdsFromCollection(System::Windows::Automation::AutomationElementCollection ^collection); static System::String ^DEFAULT_FRAMEWORK = L"WPF"; diff --git a/native/WpfBridge/bin/wpfbridge32.dll b/native/WpfBridge/bin/wpfbridge32.dll index 7fd09497656c17908fa69ad81931ad34e550931f..b275d903fe33a133a98d0f353f378728c29f798b 100644 GIT binary patch literal 76288 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%0AVaYm8-KB zo>Ge{wD z__y%Z*US3F)k9%DYrt}PSyz46P-sx7 z$IVZ|)pYcA_I3?Sv`OB745-E(U48XU8+wMi>xX-XdN7D^)76Qm_dR`s<2m(yN}qa$ zwzT6JcTXpGq6@LDTXJT~-Y&^*YpA<_a7eUbXNtrI|9$KhtM%9=b;?j))!VTZ8xM0^ zmy`_?a{oYASHd+5Ihp^H8e(GnU>*~<4DVNT;@;u?3==mIr!ZXpUX41jGBo@km7(DW zsLY~8X3>Gxj=@W0WqALFTKqwqezErbzD;i$et>E%UiJYS$~64I9zQ@snI1pDRWJXb z&0`uOMt@yP<=|k~_RYOl)MA+!!hMt;1u~*=Ym9%@v#B4?N3Ouw@7WSpzF&tfkN2t? zcu9J|V!C?&>%3&i2W;#mOFw|2^o2#*)+#Er!k(voZYK?dsXea zzDxS>xJcoZO$R2pYR+t`4*xLfFm6eM!#j51Ezk@%3xbF6xZ7*MJ1Q(u+ZCQ-Y?TMsN*-Kvoe+CvMU%O6ndp#;8rjmcclB{~!kW-A zFf_bF&f;mpy5G6<%w>y~ZCO^l=&X~h`$^i9toupYldStmTCDrEc=gqS4RX)+F6lC= zb)ZK!DB$Z_lKE4_cajakcp1x1vLQ&)qHfrEjIZ&P?{Q;^Nq_uZYZIRM;f)F&{tpFq z_Q>l2{Qb!8o*_Za3J!WoZ8Tp26XcUcZVzFu{wJ z?LC8oc!6FSf5#jzGHx<|+y;G3KWM28@s?R$Q^*O;a&SB$?HZJo_&noIh@GqOHHb zH{R^Ecr%Tsf{O3L`ui>m4s~Kr*_*)r&aTink}*KFOnfp+)preS?ecebg_5pHb=T(M zt+m*c*7h}3S0$=|?m8Ii>czh)-PJ!lScOL;<0^B)#p5dTUN_O@0=S`9>-yxG6Si{0 zd<;CED?zE+!5|*Wz;H)bsAo%0SEt+}tJ>FI%*<%lo%7A-eg{HJ2 zDWRcFXq!h{dVz9#xd|jrI&C3~5=h8hG?{Q`H8hLfmD_cblB_gIll%R9?;{<_kCBFH zSJrK0|K~qvKmPsi_rL%BpM6GSiBo!XG?vbsY%&ThUm)qmLpoFhu?T3A_#BI%O0m*S z=~&3?i3n6~LM}$bB9jet@YGT=qjNnol&(_iWXfAn7s&<5RW>@!I5bZKIz&+n)X_0$ zxAK`BNsnR$0d59Yw&W(C9nzB{ONWIC4CW91-EQn5QYi{W2ZII}DhXr?0>NQ@VKKFu zFGCP48E}xy8Up}-kbnEdX?cO322b&q%QWUyLbmx97X-o|drG;S7 z8|Is(5K2&4DNG5vJ{ds>21Q|x*W3_lG}biHUj`Z0n~3I!%mZ z14dC@$YF^-Z$6Sfwirj3$Epey!?mk?0HAhkv=XDc76hPj*24>+f%M5XDL0t*Lv;;R zd^}&5GI?XPr70d0%iuB!T`snAktfmQHxuANQBP@z2|E6h;gnp2Zc4;p7FyE77F&sjGmmr>T+preiOZcSa>dh`8yU#vk4tj!%Qp=k&-f< z3Y!O5N)Vk3ePxyPqjHC0D|%G!#^-u$p8TPHk#)wG36g8Nm(BxvT%RNPMS4M#97`=G zsG(A$(^FUkqdyyU1oriClxmcAg-D5Gl=cLy%go(UPI=@!sb?5(^~GHRqsAh*XU1?h zomk*o5omo;#1gv``Me16Kr$}*6*>axCglgI5N{m9Sj|T~MjCC>E0CVNaZEogI`1_0 z?3OaKIgdlw65+iX9@N3oP{XHK41-W|H5Uk#qleRaQ9x2Lq;p}Af|y5yY5}Tn7Kw+? zoME)JkPC%kF@-YbnJ{V45ikn1(lSi*Fm_EXiqs@ed~={suikh^1a)y2^riE}bhNQp z_nHqt^Z3?5y0>=LdZUX;XnSA>LXCo`7b$WL;*ierwt|NG6$5^z7fn`VVG_G4&6KM6CgtrQ4^T@n%pRcvpG_?;khTV58drpAi>Wy+y_(3( zFQs)2#+rSpSaeR;&{%Q?ZTN1i~S0jl#sM(8PWe9CZj)1qH=JKh0+KCoAjxn?6TM@}dJ93bZ6~p?Y zH2Me$fr7V*bWwMaTQrT-DX6QPcXM_gRkn^1<)h%%BgK|6<}fu~I5aiLI!w?o*0MOqE_K{iJ_E71GRE+vGvBC@!6Dz;-$6hv$sSR7l-%#&EU zQ@ZA~8i&JasAy!fEi0PnDWyjl)AcC2lr$>g%bqeLn`*ku=(%Kd7VPz{7>c{bU{KQr zgL&U*sDCL%@|{?+gtjln5VW{Qn}>Ttp_>kqesv47CU*5pN_Zq)Q0-;%3_!1_%eJgD&+CqTp)G+Fj zwYyUn+&;2wf4R(D9F+@?Alq}0uf2;)8}Z*J_vY@MDu)RzUkT+zGpBb^tZQZp1tZAC zvT@Nw#PB+ufSDDH3m2DC5uHJs#ubCpJpo~s)hY(@Qh+(SX#t7*o zw%xlk#Odw!_8Mj4+xmC2?KcJ+8^`zc_8t>U(~ww$he8l)wEmS9l0K#rv``u#29x4S zy7$ci^f>n|j(ALuh*-HBXf(K%LTDa#D6#yOSED9mww>zG9GWz7Wak9!37H;2IRtx^ z5>w)FNe@>}cnEc6g~#GnuvS_kw9YUFg(Wm8KEYmsoT6G{37ckv{K4?&>7&9Hkd5Rl z&k!*3DL5mao$4~b-;AXISz_g*A;UYgU{k~iJ-rw=?9{kXtD)IbH4Q6ND%bsF>w0Yu zTj0iQQ;Vmd42FI5Ew?dl(M3CHQ;Wy31>FxN12b->7IVHViq(EbM+AuM#s(M)hij#2 z4L1~ zR4ZD$Z?-AyYtuEqzo}Vk@wYW=fwq}e%^z;nXTohW(HS3%$9T}lO!I7;zqwfp&m0VE zO-<2etv%90hG-FA%WU|dFMP0Q)vjqP5p5x!MB18YHNd#zolNISY?8!aTwSGKw3F<+}1>sGni z6)R)Yf|fQoOpE+N3g9-szTQ5P2qQ=@@Il-}F;4(qTze48t9>qzx1&B38oB^>>*R}) z<-|q5=fc4mpah?+wPmrh3VPu*>9r+; zawFFcrVGtlk_FZ*T$fgCF_C6PW+psTp-D#?_Ay(Td5~){Ju?45veNou8)FZXg++mZ z1yUm4!Nd9(UaHw~B6vt&u;0UwhM<#A$vxcoEh#VguqN7HR;0;LHnB;Fxl3k_Qe86O* zRCJP?G+AQrH-aM*+$>WV14D}vA ze_x;Rmxl|}x$sGIg-KmFycWwJgcnW=JuJ+q#B0g2G#2D$zAz)8ibH7^8VaE4Z*n80 zO-7rgLzUvpFf?O_3`0TwiUaqRhKj6<)OOhShDjY>h3F|xqxc!>Q=#mF-6mo|ue6vb z*pd)kb}Rb=L>&#ILWf{XJS>k5ycvfAGMoxBlF;9W7bNI}r>R9lKPOuA)S?WGH6{fe zGy)nnpSilDGLoCnFfLuz$EZ;v>(nKsc{K$Y73T`j?UC786qiv<^NT5IH1s zVN>CZB$lDYWP=My)VH*f&Y2O*XA}?i0#MpI^!0PFSm&i~|rHuo&H5R8J$aVGnOXk#+ZQ+R-t8 z>}QKC!IqiMu#LsgQSqd*Sv)PW1>7Bn8;nkIDC;~6!&SxJ+aj)q*%FK6KF0dkDzMID zh4CE6eH4eps`wk{Phn6d{|IR4xSqm&hToGLrAYDVs^V$ZY?6BcC2iGug6bH{P zaz5g~5x7x$Do+8Y(aErBq|btrcsj#<1=T`oI$J?}9e>!51%(kd#-^Btob|F36#v47 zvsEF8;@MnmvtacXsBo;;F~y2ZT04-@7kZKZ1WJNRh{{97Rg_MWm#JtKRNfKPdkTLd zR2a2IF+{td+ErN+PcgI|YAvhVP@>uoBPP{<7!;{}P^w0&=*O|c@4@o|>Nv_<8c`NS zYZRpMOzj|yP>pn~?%Kghb_Y%+z6+-dtGH{zT_w&frau+md(UvT@(ryNW<_kG+gw0x zkT*x8$(BQDCyp*$4S9YJ?!Zs!bd;;cQ2a*K4{oY>wmKy{>(db!T?Ie8~Y>O^OV+V~6c$Wa}(-8g_{Nwj;sU5lH@s8JAOKrZ>wR?_QVn2NSU3dIN?N7#bCm!)U{K(XE$8UQ0 z`!6s3VdaOswXZy`U-Qk+eDQmaezpGi(?3o;a@l7VKU({hzj`v|j6L_c?+mcMk4#+E z@eNnz0cX<}0>>V28*8n7ez~sx!Qb7J`bkg!9iM&urN8*#=kEHiwKqQ(pZ?8}`=e_^ zU%1Nt$*zG%n(n@@_IoR@yB1#gt^eix_X?m_A2z(y>_?rH9AI=Wd72{)OW)Dm zOi{CsR;!1t>S6a@$zoj6h^yKA!Gq_XxZ$%QeKriAjXH`$Po8@=dtOeSM!FlE)UyVu zvy#+VgVb3YQ(SHrvno|67ngfCB2T+S8MvyDgK4G8YCKmmi(7hmnBo>RP_7`lYV)9s zjw-y2k$K>OYS20=^V~%xQcFS14it(z;$|4YLy;pVW_GOff|sM@Wez5SiYh)Qvv$sP z8HzVo0OzXdsR|{{8TH(A&O_ycnCE4L^Mw)4*YF6)Q7+1PLBnuDR3zb+-f+ctVbp1h z3*U69$^HQUC{xAlz@r-vc0AOqx!g?gtnD?5eVlll=0#EES&zEt31zn)1*w{~`WmVQ zlTB;`m1(3b?bl)$VnF$T`U&6lY6XZ1X`)EgFnS)_pIM% zv0Df~VY63NIW2aV-7bpDjzWR^0~PkGvfl$4&-#N7y7jC-$O)6C@$GELf8TA_^2n4>} zHaofQ&$+I-C>Aw!i@gq>_r40=6_1N}bna3Wr11&ma(vK)94c*0QM?t*V)1%yDq0er zy>5DTBU1>36f7>4@j2si<^Uh4ekY<@P#CPfCi_YSL&aD!g>#bBQp0#T| zYuAA|+7}Y`3Wkvcp1p2$m*R3bD&!ALDs@h9x7O}i>qccNbzU*v^kOvfV!**a96W2S zbpnw$+*^^f;>5iZC5!tyuan9jMcNML>fFF~%2Peh$yz&7cUB|3#arzK2@4+339R%) zk4jy&h3d<*HjS=Kg$;KqgS7>eh8JF*wHTTlbx%dfKL7vA`f#oJm&-$;3n^oHXsf`m zSF?MM1rxdRR#Ei7{{MO{5s07!!%sGF-Svnt8h5D2v?D#6R(8F z{U8OwE$6twiF@vOHs^9SAM7j~vyTpv7+CGFa;lhvgoD+gxWI~)7gaUC);gqETj{XW z+$AJj?&0OvI-^*pDd=GohDIcV@E<}tzCbI$32 zc<9DWmCUFi_}Lvcr_<#Et=x1#5zbdStX!rvZuvCgbjsLnnoHztfSJZix$=sdsCL-I zjkvmtLCnHYrV71X>%wwBfA_{9%BS?D(o~NA;#ct6gzI|v1YK^;czGHa%hfpDTt4QR0Cv`dgh>NR0=tN86!b#1&&l7|Hih9ld8;L13_r565 z%Pxn#z7CTgra$ifDgvD}6KCg@!b8_$jf*L>R=uW(>S*b8xn%e-i->z}^D;UGke zhqEkSmMaI@z?GBnUTl1Y_J&6d&O)gx#+OgY-Y1r#^3gmS-te8P9b->8t4_uGy63vV!wpl)Ai6_2j8oQkdId*A3fAiVace>zW}T ze$#8*^zoZR3VUZGoqwN_TWSa7X++)2EsgkS+?2aE=S5rB@$f2b5>`_jHRq$Y-~*kI zjhKZK&Hi4alD)U+m?85?Z;i&GHL&q1J|XUaih~9gQ#ifufNJmpR_O15DvxFBPUuV6 zHj5un$8q9zEOMj1%HJ61p7FzgIMUkI)PAr<_XXN(lugC8=5Mt8VlcM{%x$i*Uku*1 zD7cBqfyt9!uD&|>Vy5@mYrgoHb=~uIs_&aSZWZP(x8@rCt@5S#yh~#;Izw#(O$xn( z*(7#Kyj$XGiEAbHN?a$gD)Byv_e*?0VxPn<5(gyik~k#sfW*TRk4ii)@sz|TB)(PR zlM+WIo|iZ-aZ=)p#48ftDREZfdnLY4;s+#tP~wLqenR4>C4NTYXC>Z{_^iawOZ=k5 zFH8KY#IH$wPU7Sp0`Vh1HeHoJ{gWHNJ-15~5`xxA|`aKUC zUGV=)#CsTUCtw~h1?T|m1GoV{L%25pe*$<65C_}|cmObg`1H#n%`QCe1JnWB02|;u z++PB00G{6NJlnRu|h zmckeNp0MOz=3`Ih@9|>aUn{0p+E|l<7kHD&6OklddgE`aO~OSOoMm970xCGGJ%M>V zjawL*z$}ch-?YJ^lp8kPg3vHS6b6^<8mo9!^98H4;Ve9BmR$`l`TKVAJ>66bUZPuA zfK}vA6v__HPQgi>bNJxJJl?Hi?0*-%p!j7n7%{!j_+1MOK8yqPauy>`*~BY(|77+p zHY;JTGYBbkDupmv9*xc58xgDYCUcs7%6fE3Pw}t)kzorC(d3p#c$e=(78s38#UiJK zDH2K(&(aJ?5P}5|`=ZHJTK>R!mEsCfX9{Nv_oh+eI^D4i+Z0JRm>Y3MBDa%bY-2MG z_BGpd0#-73wK9J^j;uEJ$F@m2xNSRcE158f!i7Om8t0M}9tzC936s}NZ$sjAkKPlo zhsD9qup`DkGTvo8Cf(q$LeJB9MvxIapF=H@H7{c!w2L7U6bs&j^i*v1Hs+i)_hzQ) zz0GC%z(mS8HHiy)x-QLZc!w}u{`nm}_&PB}27FwddJBEuoZuPsnKuDmxW9~#%c~H( zp8$RWA3{HgkDrI|h2WF;!f>`8a5ZBeZ@{w(clh@pP6qIKzz+d^*C=cS@L9kQ0Db!u zmIQnX@HGGl+!jc-HdcY}Q9B@lyRc`utH?x1+v$KW-lmG|Zt>30+W$akP+Oe-;uK++3V0Qqp?6&U$ zVC=D925{3-w&g?1012JkL`3vfAL58w)b z7qAzA;feGLb_`*53|)2%VRnc|{5STU(C41q`-K7Ui1CQNJkRX=0oMYcBCx*)a2)_* zoBeu#56}caz1j}~S^%wpHh>=x0JH--03(1K05<|g0r=Rw9Rsg@3NQ^g0O$ks0|o$t zfFZykz%bx2U<_~s01?cN57*l}0bKxmuioAR2m(TYUcfQHali?{O@Lbfw*qbhyccj1 z5C+TuB7i7h7BB~x2S9|dF8~$+Hv=?)4u}D62gCshKpKz%ECEgfmH{Zb9e+0NYsHAq z7|J(`x@O2@7Inl<0t4}%2xsB*(hA(EP9EIkFXpXJZ{beiH@0whf$(cQ1#uDSV1-V=1L^?h9Jb)fWr2}-FV(VsIUgaH=alFe6!gfekvdYfTW8nm?q}8 z{AERsvRQ^Z0RG4cmyL}Lxcr>|Gb|x+2f!aWi6sSG-p22A!7phWDEK99vL6Zb)-Run z%i})t@7~SjH){OGUV3RHleE2P{+&g;GXFwlS7ZS@c-TO5%l`X;74#kEG||`j!c+w| z+Bw2(^UG4>riLvLuDC6$ojYW6m8Ev*2xsO;7mbHS^&J`&)pF>pAiM!C3x3qqvIQhR82a7@sJo@%EqVZI08OyXeJ)QG3d*@E5AJv!jxEiNxcS9I&VbB{LsRnf^)*GQ0 zU%DG+!|}A<(9?B&j&@<>9DP%WO{sTXU%+eE^|?$Vde`+vdG?HBNj5-V$3B7O8^8JG z^Q9>d>im#h*o^OYd|&c?-`CJI(R6pyV@+Rb`iG{z=BJu12WJjG)$-LAOKU@GU+YZk z-K~$ceyP>c_SLp#|3v#^?R_0jbu@I&blu%O)6*9OAr)&?^oJQAs5B@1EB?Fucl#gq z|B?T%{a^E+_y41RSD-fVtAXyoMBsSfw!l*0OyD;H9|?Rc@P~oV1~vk(2EH4xwO6*+ zw|BRXwcpepZoj|%!S)ZgKhpk*_CIg`Li@S)e`;4craIO-Ug-E?hpn@!b5G~~&hF0P z&i8gMcV;`E>-#hLbauJBYP+84damm$UH_*`>2`D{x-;Epy0hKC-Ti3ylie?M zU)iJf_1%)NbpqfbTAuS4}Ku{;o$EFKNI|K!OsT29Q;b~>%ngZzZd)wm4%PN z0Gx1xug^E*`wic>eSg#Z?Phz+RLkovKW~|B{bB2&wvV^%^GE%6`XBK>?f(~lW8i&( zM+1Ks_-Wu>?a}uC+5Xe^M?1dLvA^>~=iOaD>uTuk>$dm2x96pvcLr|{{z33xf+V2a zi6rWMhkZ%k@A>|R@9%xAX>u+_`ET~0^w0X^ z{*=EWuq)sRToI@bTobr9fJD)7yg*O*&Ne;Yw7a>wd8+vYEvTv$hV=mpbq{xscF%X; Q+kGFz;a~oK5li6z0m1%nDF6Tf diff --git a/native/WpfBridge/bin/wpfbridge64.dll b/native/WpfBridge/bin/wpfbridge64.dll index ab73fbd8c29167d47bd4c099498f2aec7e8f0b1a..d063b13310669e544c2e0f950027b04934dfb658 100644 GIT binary patch literal 91136 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 z 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 x-j6+~)AOGetStringUTFChars(jpropertyValue, 0);//convert string Global::WPF_AUTO->setFrameworkId(marshal_as(propertyValue)); @@ -27,7 +27,7 @@ JNIEXPORT void JNICALL Java_org_synthuse_WpfBridge_SetFrameworkId(JNIEnv *env, j * Method: CountDescendantWindows * Signature: ()I */ -JNIEXPORT jint JNICALL Java_org_synthuse_WpfBridge_CountDescendantWindows__(JNIEnv *env, jobject obj) +JNIEXPORT jint JNICALL Java_org_synthuse_WpfBridge_countDescendantWindows__(JNIEnv *env, jobject obj) { return Global::WPF_AUTO->countDescendantWindows(); } @@ -37,7 +37,7 @@ JNIEXPORT jint JNICALL Java_org_synthuse_WpfBridge_CountDescendantWindows__(JNIE * Method: CountDescendantWindows * Signature: (Ljava/lang/String;)I */ -JNIEXPORT jint JNICALL Java_org_synthuse_WpfBridge_CountDescendantWindows__Ljava_lang_String_2(JNIEnv *env, jobject obj, jstring jruntimeIdValue) +JNIEXPORT jint JNICALL Java_org_synthuse_WpfBridge_countDescendantWindows__Ljava_lang_String_2(JNIEnv *env, jobject obj, jstring jruntimeIdValue) { const char *runtimeIdValue = env->GetStringUTFChars(jruntimeIdValue, 0);//convert string jint result = Global::WPF_AUTO->countDescendantWindows(marshal_as(runtimeIdValue)); @@ -51,7 +51,7 @@ JNIEXPORT jint JNICALL Java_org_synthuse_WpfBridge_CountDescendantWindows__Ljava * Method: CountChildrenWindows * Signature: ()I */ -JNIEXPORT jint JNICALL Java_org_synthuse_WpfBridge_CountChildrenWindows__(JNIEnv *env, jobject obj) +JNIEXPORT jint JNICALL Java_org_synthuse_WpfBridge_countChildrenWindows__(JNIEnv *env, jobject obj) { return Global::WPF_AUTO->countChildrenWindows(); } @@ -62,7 +62,7 @@ JNIEXPORT jint JNICALL Java_org_synthuse_WpfBridge_CountChildrenWindows__(JNIEnv * Method: CountChildrenWindows * Signature: (Ljava/lang/String;)I */ -JNIEXPORT jint JNICALL Java_org_synthuse_WpfBridge_CountChildrenWindows__Ljava_lang_String_2(JNIEnv *env, jobject obj, jstring jruntimeIdValue) +JNIEXPORT jint JNICALL Java_org_synthuse_WpfBridge_countChildrenWindows__Ljava_lang_String_2(JNIEnv *env, jobject obj, jstring jruntimeIdValue) { const char *runtimeIdValue = env->GetStringUTFChars(jruntimeIdValue, 0);//convert string jint result = Global::WPF_AUTO->countChildrenWindows(marshal_as(runtimeIdValue)); @@ -76,7 +76,7 @@ JNIEXPORT jint JNICALL Java_org_synthuse_WpfBridge_CountChildrenWindows__Ljava_l * Method: EnumChildrenWindowIds * Signature: (Ljava/lang/String;)[Ljava/lang/String; */ -JNIEXPORT jobjectArray JNICALL Java_org_synthuse_WpfBridge_EnumChildrenWindowIds(JNIEnv *env, jobject obj, jstring jruntimeIdValue) +JNIEXPORT jobjectArray JNICALL Java_org_synthuse_WpfBridge_enumChildrenWindowIds(JNIEnv *env, jobject obj, jstring jruntimeIdValue) { const char *runtimeIdValue = env->GetStringUTFChars(jruntimeIdValue, 0);//convert string array ^mchildrenIds = Global::WPF_AUTO->enumChildrenWindowIds(marshal_as(runtimeIdValue)); @@ -103,7 +103,7 @@ JNIEXPORT jobjectArray JNICALL Java_org_synthuse_WpfBridge_EnumChildrenWindowIds * Method: EnumDescendantWindowIds * Signature: (Ljava/lang/String;)[Ljava/lang/String; */ -JNIEXPORT jobjectArray JNICALL Java_org_synthuse_WpfBridge_EnumDescendantWindowIds__Ljava_lang_String_2(JNIEnv *env, jobject obj, jstring jruntimeIdValue) +JNIEXPORT jobjectArray JNICALL Java_org_synthuse_WpfBridge_enumDescendantWindowIds__Ljava_lang_String_2(JNIEnv *env, jobject obj, jstring jruntimeIdValue) { const char *runtimeIdValue = env->GetStringUTFChars(jruntimeIdValue, 0);//convert string array ^mchildrenIds = Global::WPF_AUTO->enumDescendantWindowIds(marshal_as(runtimeIdValue)); @@ -130,7 +130,7 @@ JNIEXPORT jobjectArray JNICALL Java_org_synthuse_WpfBridge_EnumDescendantWindowI * Method: EnumDescendantWindowIds * Signature: (J)[Ljava/lang/String; */ -JNIEXPORT jobjectArray JNICALL Java_org_synthuse_WpfBridge_EnumDescendantWindowIds__J(JNIEnv *env, jobject obj, jlong jprocessId) +JNIEXPORT jobjectArray JNICALL Java_org_synthuse_WpfBridge_enumDescendantWindowIds__J(JNIEnv *env, jobject obj, jlong jprocessId) { array ^mchildrenIds = Global::WPF_AUTO->enumDescendantWindowIds((System::Int32)jprocessId); @@ -151,7 +151,7 @@ JNIEXPORT jobjectArray JNICALL Java_org_synthuse_WpfBridge_EnumDescendantWindowI * Method: EnumDescendantWindowIdsFromHandle * Signature: (J)[Ljava/lang/String; */ -JNIEXPORT jobjectArray JNICALL Java_org_synthuse_WpfBridge_EnumDescendantWindowIdsFromHandle(JNIEnv *env, jobject obj, jlong jwindowHandle) +JNIEXPORT jobjectArray JNICALL Java_org_synthuse_WpfBridge_enumDescendantWindowIdsFromHandle(JNIEnv *env, jobject obj, jlong jwindowHandle) { array ^mchildrenIds = Global::WPF_AUTO->EnumDescendantWindowIdsFromHandle(System::IntPtr(jwindowHandle)); @@ -166,12 +166,51 @@ JNIEXPORT jobjectArray JNICALL Java_org_synthuse_WpfBridge_EnumDescendantWindowI return results; } +/* + * Class: org_synthuse_WpfBridge + * Method: enumDescendantWindowInfo + * Signature: (Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String; + */ +JNIEXPORT jobjectArray JNICALL Java_org_synthuse_WpfBridge_enumDescendantWindowInfo(JNIEnv *env, jobject obj, jstring jruntimeIdValue, jstring jproperties) +{ + const char *runtimeIdValue = env->GetStringUTFChars(jruntimeIdValue, 0);//convert string + const char *properties = env->GetStringUTFChars(jproperties, 0);//convert string + array ^mwinInfo = Global::WPF_AUTO->EnumDescendantWindowInfo(marshal_as(runtimeIdValue), marshal_as(properties)); + //create result object array to the same size as the managed window info string array + jclass stringClass = env->FindClass("java/lang/String"); + jobjectArray results = env->NewObjectArray(mwinInfo->Length, stringClass, 0); + marshal_context context; //lets you marshal managed classes to unmanaged types + for(int i = 0 ; i < mwinInfo->Length ; i++) + { + env->SetObjectArrayElement(results, i, env->NewStringUTF(context.marshal_as(mwinInfo[i]))); + } + env->ReleaseStringUTFChars(jproperties, properties); //release string + env->ReleaseStringUTFChars(jruntimeIdValue, runtimeIdValue); //release string + return results; +} + + +/* + * Class: org_synthuse_WpfBridge + * Method: getParentRuntimeId + * Signature: (Ljava/lang/String;)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_org_synthuse_WpfBridge_getParentRuntimeId(JNIEnv *env, jobject obj, jstring jruntimeIdValue) +{ + const char *runtimeIdValue = env->GetStringUTFChars(jruntimeIdValue, 0);//convert string + System::String ^mresult = Global::WPF_AUTO->getParentRuntimeId(marshal_as(runtimeIdValue)); + marshal_context context; //lets you marshal managed classes to unmanaged types + jstring result = env->NewStringUTF(context.marshal_as(mresult)); + env->ReleaseStringUTFChars(jruntimeIdValue, runtimeIdValue); //release string + return result; +} + /* * Class: org_synthuse_WpfBridge * Method: GetProperty * Signature: (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; */ -JNIEXPORT jstring JNICALL Java_org_synthuse_WpfBridge_GetProperty(JNIEnv *env, jobject obj, jstring jpropertyName, jstring jruntimeIdValue) +JNIEXPORT jstring JNICALL Java_org_synthuse_WpfBridge_getProperty(JNIEnv *env, jobject obj, jstring jpropertyName, jstring jruntimeIdValue) { const char *runtimeIdValue = env->GetStringUTFChars(jruntimeIdValue, 0);//convert string const char *propertyName = env->GetStringUTFChars(jpropertyName, 0);//convert string @@ -189,7 +228,7 @@ JNIEXPORT jstring JNICALL Java_org_synthuse_WpfBridge_GetProperty(JNIEnv *env, j * Method: GetProperties * Signature: (Ljava/lang/String;)[Ljava/lang/String; */ -JNIEXPORT jobjectArray JNICALL Java_org_synthuse_WpfBridge_GetProperties(JNIEnv *env, jobject obj, jstring jruntimeIdValue) +JNIEXPORT jobjectArray JNICALL Java_org_synthuse_WpfBridge_getProperties(JNIEnv *env, jobject obj, jstring jruntimeIdValue) { const char *runtimeIdValue = env->GetStringUTFChars(jruntimeIdValue, 0);//convert string array ^mprops = Global::WPF_AUTO->getProperties(marshal_as(runtimeIdValue)); @@ -212,7 +251,7 @@ JNIEXPORT jobjectArray JNICALL Java_org_synthuse_WpfBridge_GetProperties(JNIEnv * Method: GetPropertiesAndValues * Signature: (Ljava/lang/String;)[Ljava/lang/String; */ -JNIEXPORT jobjectArray JNICALL Java_org_synthuse_WpfBridge_GetPropertiesAndValues(JNIEnv *env, jobject obj, jstring jruntimeIdValue) +JNIEXPORT jobjectArray JNICALL Java_org_synthuse_WpfBridge_getPropertiesAndValues(JNIEnv *env, jobject obj, jstring jruntimeIdValue) { const char *runtimeIdValue = env->GetStringUTFChars(jruntimeIdValue, 0);//convert string array ^mprops = Global::WPF_AUTO->getPropertiesAndValues(marshal_as(runtimeIdValue)); diff --git a/native/WpfBridge/org_synthuse_WpfBridge.h b/native/WpfBridge/org_synthuse_WpfBridge.h index e6d8f07..8ecb288 100644 --- a/native/WpfBridge/org_synthuse_WpfBridge.h +++ b/native/WpfBridge/org_synthuse_WpfBridge.h @@ -1,9 +1,3 @@ -/* - * Copyright 2014, Synthuse.org - * Released under the Apache Version 2.0 License. - * - * last modified by ejakubowski7@gmail.com -*/ /* DO NOT EDIT THIS FILE - it is machine generated */ #include /* Header for class org_synthuse_WpfBridge */ @@ -15,98 +9,114 @@ extern "C" { #endif /* * Class: org_synthuse_WpfBridge - * Method: SetFrameworkId + * Method: setFrameworkId * Signature: (Ljava/lang/String;)V */ -JNIEXPORT void JNICALL Java_org_synthuse_WpfBridge_SetFrameworkId +JNIEXPORT void JNICALL Java_org_synthuse_WpfBridge_setFrameworkId (JNIEnv *, jobject, jstring); /* * Class: org_synthuse_WpfBridge - * Method: CountDescendantWindows + * Method: countDescendantWindows * Signature: ()I */ -JNIEXPORT jint JNICALL Java_org_synthuse_WpfBridge_CountDescendantWindows__ +JNIEXPORT jint JNICALL Java_org_synthuse_WpfBridge_countDescendantWindows__ (JNIEnv *, jobject); /* * Class: org_synthuse_WpfBridge - * Method: CountDescendantWindows + * Method: countDescendantWindows * Signature: (Ljava/lang/String;)I */ -JNIEXPORT jint JNICALL Java_org_synthuse_WpfBridge_CountDescendantWindows__Ljava_lang_String_2 +JNIEXPORT jint JNICALL Java_org_synthuse_WpfBridge_countDescendantWindows__Ljava_lang_String_2 (JNIEnv *, jobject, jstring); /* * Class: org_synthuse_WpfBridge - * Method: CountChildrenWindows + * Method: countChildrenWindows * Signature: ()I */ -JNIEXPORT jint JNICALL Java_org_synthuse_WpfBridge_CountChildrenWindows__ +JNIEXPORT jint JNICALL Java_org_synthuse_WpfBridge_countChildrenWindows__ (JNIEnv *, jobject); /* * Class: org_synthuse_WpfBridge - * Method: CountChildrenWindows + * Method: countChildrenWindows * Signature: (Ljava/lang/String;)I */ -JNIEXPORT jint JNICALL Java_org_synthuse_WpfBridge_CountChildrenWindows__Ljava_lang_String_2 +JNIEXPORT jint JNICALL Java_org_synthuse_WpfBridge_countChildrenWindows__Ljava_lang_String_2 (JNIEnv *, jobject, jstring); /* * Class: org_synthuse_WpfBridge - * Method: EnumChildrenWindowIds + * Method: enumChildrenWindowIds * Signature: (Ljava/lang/String;)[Ljava/lang/String; */ -JNIEXPORT jobjectArray JNICALL Java_org_synthuse_WpfBridge_EnumChildrenWindowIds +JNIEXPORT jobjectArray JNICALL Java_org_synthuse_WpfBridge_enumChildrenWindowIds (JNIEnv *, jobject, jstring); /* * Class: org_synthuse_WpfBridge - * Method: EnumDescendantWindowIds + * Method: enumDescendantWindowIds * Signature: (Ljava/lang/String;)[Ljava/lang/String; */ -JNIEXPORT jobjectArray JNICALL Java_org_synthuse_WpfBridge_EnumDescendantWindowIds__Ljava_lang_String_2 +JNIEXPORT jobjectArray JNICALL Java_org_synthuse_WpfBridge_enumDescendantWindowIds__Ljava_lang_String_2 (JNIEnv *, jobject, jstring); /* * Class: org_synthuse_WpfBridge - * Method: EnumDescendantWindowIds + * Method: enumDescendantWindowIds * Signature: (J)[Ljava/lang/String; */ -JNIEXPORT jobjectArray JNICALL Java_org_synthuse_WpfBridge_EnumDescendantWindowIds__J +JNIEXPORT jobjectArray JNICALL Java_org_synthuse_WpfBridge_enumDescendantWindowIds__J (JNIEnv *, jobject, jlong); /* * Class: org_synthuse_WpfBridge - * Method: EnumDescendantWindowIdsFromHandle + * Method: enumDescendantWindowIdsFromHandle * Signature: (J)[Ljava/lang/String; */ -JNIEXPORT jobjectArray JNICALL Java_org_synthuse_WpfBridge_EnumDescendantWindowIdsFromHandle +JNIEXPORT jobjectArray JNICALL Java_org_synthuse_WpfBridge_enumDescendantWindowIdsFromHandle (JNIEnv *, jobject, jlong); /* * Class: org_synthuse_WpfBridge - * Method: GetProperty - * Signature: (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; + * Method: enumDescendantWindowInfo + * Signature: (Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String; */ -JNIEXPORT jstring JNICALL Java_org_synthuse_WpfBridge_GetProperty +JNIEXPORT jobjectArray JNICALL Java_org_synthuse_WpfBridge_enumDescendantWindowInfo (JNIEnv *, jobject, jstring, jstring); /* * Class: org_synthuse_WpfBridge - * Method: GetProperties - * Signature: (Ljava/lang/String;)[Ljava/lang/String; + * Method: getParentRuntimeId + * Signature: (Ljava/lang/String;)Ljava/lang/String; */ -JNIEXPORT jobjectArray JNICALL Java_org_synthuse_WpfBridge_GetProperties +JNIEXPORT jstring JNICALL Java_org_synthuse_WpfBridge_getParentRuntimeId (JNIEnv *, jobject, jstring); /* * Class: org_synthuse_WpfBridge - * Method: GetPropertiesAndValues + * Method: getProperty + * Signature: (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_org_synthuse_WpfBridge_getProperty + (JNIEnv *, jobject, jstring, jstring); + +/* + * Class: org_synthuse_WpfBridge + * Method: getProperties * Signature: (Ljava/lang/String;)[Ljava/lang/String; */ -JNIEXPORT jobjectArray JNICALL Java_org_synthuse_WpfBridge_GetPropertiesAndValues +JNIEXPORT jobjectArray JNICALL Java_org_synthuse_WpfBridge_getProperties + (JNIEnv *, jobject, jstring); + +/* + * Class: org_synthuse_WpfBridge + * Method: getPropertiesAndValues + * Signature: (Ljava/lang/String;)[Ljava/lang/String; + */ +JNIEXPORT jobjectArray JNICALL Java_org_synthuse_WpfBridge_getPropertiesAndValues (JNIEnv *, jobject, jstring); #ifdef __cplusplus diff --git a/src/org/synthuse/Config.java b/src/org/synthuse/Config.java index 35dc2fc..d5afe05 100644 --- a/src/org/synthuse/Config.java +++ b/src/org/synthuse/Config.java @@ -11,6 +11,7 @@ public class Config extends PropertiesSerializer { public static String DEFAULT_PROP_FILENAME = "synthuse.properties"; + public String disableWpf = "false"; public String urlList = ""; public String xpathList = ""; public String xpathHightlight = ".*process=\"([^\"]*)\".*"; diff --git a/src/org/synthuse/SynthuseDlg.java b/src/org/synthuse/SynthuseDlg.java index 2070c74..5249d47 100644 --- a/src/org/synthuse/SynthuseDlg.java +++ b/src/org/synthuse/SynthuseDlg.java @@ -162,9 +162,9 @@ public class SynthuseDlg extends JFrame { btnRefresh.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { //lblStatus.setText("Loading Windows Enumerated Xml..."); + //WindowsEnumeratedXml wex = new WindowsEnumeratedXml(textPane, lblStatus); + //wex.run(); WindowsEnumeratedXml.getXmlThreaded(textPane, lblStatus); - //appendToPane(WindowsEnumeratedXml.getXml()); - //lblStatus.setText("Windows Enumerated Xml loaded"); } }); btnRefresh.setIcon(new ImageIcon(SynthuseDlg.class.getResource(RES_STR_REFRESH_IMG))); diff --git a/src/org/synthuse/WindowInfo.java b/src/org/synthuse/WindowInfo.java index e36f989..a2b5e2f 100644 --- a/src/org/synthuse/WindowInfo.java +++ b/src/org/synthuse/WindowInfo.java @@ -17,6 +17,8 @@ import com.sun.jna.ptr.PointerByReference; public class WindowInfo { + public static String WPF_PROPERTY_LIST = "RuntimeIdProperty,ParentRuntimeIdProperty,ProcessIdProperty,FrameworkIdProperty,ClassNameProperty,NameProperty"; + public HWND hwnd; public String hwndStr = ""; public HWND parent = null; @@ -28,8 +30,12 @@ public class WindowInfo { public String processName = ""; public long pid = 0; public Object xmlObj = null; + public String framework = "win32";//default as win32 + public String runtimeId = ""; + //Default Win32 support public WindowInfo(HWND hWnd, boolean isChild) { + this.framework = "win32"; byte[] buffer = new byte[1024]; User32.instance.GetWindowTextA(hWnd, buffer, buffer.length); text = Native.toString(buffer); @@ -61,7 +67,39 @@ public class WindowInfo { } this.hwnd = hWnd; hwndStr = Api.GetHandleAsString(hWnd); - + } + + //support for WPF and Silverlight + public WindowInfo(String enumProperties, boolean isChild) { + //WPF_PROPERTY_LIST = "RuntimeIdProperty,ParentRuntimeIdProperty,ProcessIdProperty,FrameworkIdProperty,ClassNameProperty,NameProperty"; + String[] spltProperties = enumProperties.split(","); + if (spltProperties.length > 0) + this.runtimeId = spltProperties[0]; + this.hwndStr = this.runtimeId; + if (spltProperties.length > 1 && isChild) + this.parentStr = spltProperties[1]; + this.isChild = isChild; + if (spltProperties.length > 2) + this.pid = Long.parseLong(spltProperties[2]); + if (spltProperties.length > 3) + this.framework = spltProperties[3]; + if (spltProperties.length > 4) + this.className = spltProperties[4]; + if (spltProperties.length > 5) + this.text = spltProperties[5]; + /* + this.rect = new RECT(); + try { + String rectStr = wb.getProperty("BoundingRectangleProperty", runtimeId); + String[] rectSplt = rectStr.split(","); + this.rect.right = Integer.parseInt(rectSplt[0]); + this.rect.bottom = Integer.parseInt(rectSplt[1]); + this.rect.left = Integer.parseInt(rectSplt[2]); + this.rect.top = Integer.parseInt(rectSplt[3]); + } catch (Exception e) { + e.printStackTrace(); + } + */ } public String toString() { diff --git a/src/org/synthuse/WindowsEnumeratedXml.java b/src/org/synthuse/WindowsEnumeratedXml.java index 30f02c0..4973a91 100644 --- a/src/org/synthuse/WindowsEnumeratedXml.java +++ b/src/org/synthuse/WindowsEnumeratedXml.java @@ -12,6 +12,7 @@ import java.io.StringWriter; import java.sql.Timestamp; import java.text.DecimalFormat; import java.util.ArrayList; +import java.util.Arrays; import java.util.Date; import java.util.LinkedHashMap; import java.util.List; @@ -91,6 +92,10 @@ public class WindowsEnumeratedXml implements Runnable{ } } Api.User32.instance.EnumWindows(new ParentWindowCallback(), 0); + + //Enumerate WPF windows and add to list + if (!SynthuseDlg.config.disableWpf.equals("true")) + infoList.putAll(EnumerateWindowsWithWpfBridge("WPF")); // convert window info list to xml dom try { @@ -108,22 +113,30 @@ public class WindowsEnumeratedXml implements Runnable{ WindowInfo w = infoList.get(handle); //System.out.println(w); // create new win xml element - Element win = doc.createElement("win"); + Element win = null; + if (w.framework.equals("win32")) + win = doc.createElement("win"); + else + win = doc.createElement("wpf"); win.setAttribute("hwnd", w.hwndStr); win.setAttribute("text", w.text); - win.setAttribute("TEXT", w.text.toUpperCase()); + if (w.text != null) + win.setAttribute("TEXT", w.text.toUpperCase()); win.setAttribute("class", w.className); - win.setAttribute("CLASS", w.className.toUpperCase()); + if (w.className != null) + win.setAttribute("CLASS", w.className.toUpperCase()); if (!w.isChild) { parentCount++; if (w.processName != null && !w.processName.isEmpty()) { if (!processList.containsKey(w.pid+"")) processList.put(w.pid+"", w.hwndStr); win.setAttribute("process", w.processName); - win.setAttribute("PROCESS", w.processName.toUpperCase()); - win.setAttribute("pid", w.pid+""); + if (w.processName != null) + win.setAttribute("PROCESS", w.processName.toUpperCase()); } } + if (w.pid != 0) + win.setAttribute("pid", w.pid+""); //else //win.setAttribute("parent", w.parent + ""); // not really needed since child node is append to parent node @@ -159,6 +172,28 @@ public class WindowsEnumeratedXml implements Runnable{ return ""; } + public static Map EnumerateWindowsWithWpfBridge(String frameworkType) { + final Map infoList = new LinkedHashMap(); + WpfBridge wb = new WpfBridge(); + wb.setFrameworkId(frameworkType); + List parentIds = new ArrayList(Arrays.asList(wb.enumChildrenWindowIds(""))); + //System.out.println("enumChildrenWindowIds"); + String[] allIds = wb.enumDescendantWindowInfo("", WindowInfo.WPF_PROPERTY_LIST); + //System.out.println("enumDescendantWindowIds " + allIds.length); + for(String runtimeIdAndInfo : allIds) { + //System.out.println("getting window info for: " + runtimeIdAndInfo); + String onlyRuntimeId = runtimeIdAndInfo; + if (runtimeIdAndInfo.contains(",")) + onlyRuntimeId = runtimeIdAndInfo.substring(0, runtimeIdAndInfo.indexOf(",")); + //System.out.println("is parent? " + onlyRuntimeId); + if (parentIds.contains(onlyRuntimeId)) //is Parent? + infoList.put(onlyRuntimeId, new WindowInfo(runtimeIdAndInfo, false)); + else// must be child + infoList.put(onlyRuntimeId, new WindowInfo(runtimeIdAndInfo, true)); + } + return infoList; + } + public static String escapeXmlAttributeValue(String unescapedStr) { String result = ""; try { diff --git a/src/org/synthuse/WpfBridge.java b/src/org/synthuse/WpfBridge.java index 75c65ee..769e236 100644 --- a/src/org/synthuse/WpfBridge.java +++ b/src/org/synthuse/WpfBridge.java @@ -69,22 +69,24 @@ public class WpfBridge { System.load(temp.getAbsolutePath()); } - native void SetFrameworkId(String propertyValue); //default is WPF, but also accepts Silverlight, Win32 + native void setFrameworkId(String propertyValue); //default is WPF, but also accepts Silverlight, Win32 //Descendants will walk the full tree of windows, NOT just one level of children - native int CountDescendantWindows(); - native int CountDescendantWindows(String runtimeIdValue); + native int countDescendantWindows(); + native int countDescendantWindows(String runtimeIdValue); - native int CountChildrenWindows(); - native int CountChildrenWindows(String runtimeIdValue); + native int countChildrenWindows(); + native int countChildrenWindows(String runtimeIdValue); - native String[] EnumChildrenWindowIds(String runtimeIdValue); //if runtimeIdValue is null will start at desktop - native String[] EnumDescendantWindowIds(String runtimeIdValue); //if runtimeIdValue is null will start at desktop - native String[] EnumDescendantWindowIds(long processId); - native String[] EnumDescendantWindowIdsFromHandle(long windowHandle); + native String[] enumChildrenWindowIds(String runtimeIdValue); //if runtimeIdValue is null will start at desktop + native String[] enumDescendantWindowIds(String runtimeIdValue); //if runtimeIdValue is null will start at desktop + native String[] enumDescendantWindowIds(long processId); + native String[] enumDescendantWindowIdsFromHandle(long windowHandle); //In all the above Enumerate methods will return a list of Runtime Ids for all related windows. + native String[] enumDescendantWindowInfo(String runtimeIdValue, String properties); //returns properties comma separated - native String GetProperty(String propertyName, String runtimeIdValue); - native String[] GetProperties(String runtimeIdValue); - native String[] GetPropertiesAndValues(String runtimeIdValue); + native String getParentRuntimeId(String runtimeIdValue); + native String getProperty(String propertyName, String runtimeIdValue); + native String[] getProperties(String runtimeIdValue); + native String[] getPropertiesAndValues(String runtimeIdValue); } diff --git a/synthuse.properties b/synthuse.properties index 9fea982..6bbd54a 100644 --- a/synthuse.properties +++ b/synthuse.properties @@ -1,6 +1,7 @@ # -#Thu Apr 03 22:00:23 EDT 2014 +#Sat Apr 05 17:18:52 EDT 2014 DEFAULT_PROP_FILENAME= urlList= xpathList= xpathHightlight=.*process\="([^"]*)".* +disableWpf=false