Re: [EXT] Re: Microsoft UI Automation in VisualWorks?
Cesar Rabak <[email protected]> Fri, 21 Nov 2025 19:43:02 -0300
| Newsgroups | gmane.comp.lang.smalltalk.vwnc |
|---|---|
| Message-ID | <CAKrF98m_5v4ZW_3b6qLJT-GZ0x9p=8iwMrJa2fpfgfocj-7=UQ@mail.gmail.com> |
--000000000000f55c560644228929 Content-Type: multipart/alternative; boundary="000000000000f55c550644228928" --000000000000f55c550644228928 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable If the description on the Microsoft site can be understood in the context of their technology, it seems the only way VW could get at this functionality would be have Cincom to include the Windows code that would interact with the cited DLLs (UIAutomationCore.dll and Oleacc.dll) and then expose the API via Smalltalk classes. If the requirements for being able to be "automated" by this protocol and Cincom does not provide a path, the sole remedy would be to have a shim written in Windows supporting languages which would call the already built Smalltalk application. Out of these two scenarios I don't see a solution with present Smalltalk technology. my 0.019999... -- Cesar Rabak On Fri, Nov 21, 2025 at 3:18=E2=80=AFAM Mark Plas <[email protected]>= wrote: > Hi Reinout, > > > > Thanks for the reply. > > > > The problem indeed is that the message requires a result to be returned. > You cannot return results to windows messages from within Smalltalk (The > window procedure has already long returned before that happens, and the > Smalltalk events are just copies of the original event and are processed > asynchronously). You need to be able to intercept the window procedure > itself, but that doesn=E2=80=99t work. > > > > In the meantime, I did some C-debugging and it=E2=80=99s clear that handl= ing the > messages from within Smalltalk cannot work. There are deadlocks because of > the way the VM handles Windows events. > > > > Mark > > > Mark Plas > Product Engineer > https://urldefense.com/v3/__http://www.mediagenix.tv__;!!DZ3fjg!8tQKgDYI5= 91Iefvn1as09D6UVw4UbBUN08KBLX4mft0OC2_t5YHB8sOkhI7oI4GkevOjyVaX2hHOoH4xMbxO= fIE5LlRYf1b0rpo$=20 > <https://urldefense.com/v3/__https://www.mediagenix.tv__;!!DZ3fjg!4oTGo9b= Uq1dxJ_OKzZmp-bWvoc1ZB4xjdrLZW0UVyfyqd-Qm4zUKg2OBV3yXLg5KV9aHkST4oo97tH89Nb= UlJDtp2aN7j1EtKN9wMkM$> > [image: mediagenix-baseline_light_600x40.png] > > <https://urldefense.com/v3/__https://www.mediagenix.tv/__;!!DZ3fjg!4oTGo9= bUq1dxJ_OKzZmp-bWvoc1ZB4xjdrLZW0UVyfyqd-Qm4zUKg2OBV3yXLg5KV9aHkST4oo97tH89N= bUlJDtp2aN7j1Et_i84WBg$> > [image: mediagenix-signature_gradient_583x2.png] > This e-mail and any files attached to it are confidential and intended > only for the use of the individuals or entity to whom they are addressed. > If you have received this e-mail in error, please notify the sender > immediately. > > *From:* [email protected] < > [email protected]> *On Behalf Of *Reinout Heeck > *Sent:* Wednesday, November 19, 2025 5:30 PM > *To:* [email protected] > *Subject:* [EXT] Re: [vwnc] Microsoft UI Automation in VisualWorks? > > > > U ontvangt niet vaak e-mail van [email protected]. Ontdek waarom dit > belangrijk is > <https://urldefense.com/v3/__https://aka.ms/LearnAboutSenderIdentificatio= n__;!!DZ3fjg!4oTGo9bUq1dxJ_OKzZmp-bWvoc1ZB4xjdrLZW0UVyfyqd-Qm4zUKg2OBV3yXLg= 5KV9aHkST4oo97tH89NbUlJDtp2aN7j1EtOqUatqU$> > > *Warning:* This is an external email. Do not click on links or open > attachments unless you recognize the sender and know the content is safe. > > Hey Mark, > > WM_GETOBJECT =3D 0x003D > > Have a look at InputState >> send:eventUnknown: and see if you are lucky > and can catch a 16r3D there? > > > > Not sure how to return the com interface from there though... > > -Reinout > > > > On 19/11/2025 12:23, Mark Plas wrote: > > Hi all, > > > > Has anyone ever implemented * Microsoft* UI Automation in VisualWorks? > > > > https://urldefense.com/v3/__https://learn.microsoft.com/en-us/windows/win= 32/winauto/entry-uiauto-win32__;!!DZ3fjg!8tQKgDYI591Iefvn1as09D6UVw4UbBUN08= KBLX4mft0OC2_t5YHB8sOkhI7oI4GkevOjyVaX2hHOoH4xMbxOfIE5LlRYZWobwSM$=20 > <https://urldefense.com/v3/__https:/learn.microsoft.com/en-us/windows/win= 32/winauto/entry-uiauto-win32__;!!DZ3fjg!_aQGOK7EA64lDd39rsL3YgMyNrjpz-h71l= MBNG-HmSuaCpXFN4HqRsEhPwgCPsx8cr6dxMreJnNEF_VebzM95XCf$> > > > > This is becoming a requirement for us, and I wanted to know if anyone has > ever done this before. > > > > Alternatively, does anyone know how to intercept a windows message and > return a result for it from within VisualWorks? > > > > As a small experiment, I tried to intercept the WM_GETOBJECT message as > described here: > > > > > https://urldefense.com/v3/__https://learn.microsoft.com/en-us/windows/win= 32/winauto/wm-getobject__;!!DZ3fjg!8tQKgDYI591Iefvn1as09D6UVw4UbBUN08KBLX4m= ft0OC2_t5YHB8sOkhI7oI4GkevOjyVaX2hHOoH4xMbxOfIE5LlRY60IOSyk$=20 > <https://urldefense.com/v3/__https:/learn.microsoft.com/en-us/windows/win= 32/winauto/wm-getobject__;!!DZ3fjg!_aQGOK7EA64lDd39rsL3YgMyNrjpz-h71lMBNG-H= mSuaCpXFN4HqRsEhPwgCPsx8cr6dxMreJnNEF_Veb6sI9g7W$> > > > > In order to do this from within Smalltalk, I tried to replace the window > procedure of a window, with a callback like this: > > > > | callback old | > > old :=3D self getWindowLong: aWindow windowHandle nIndex:= -4. > > callback :=3D CCallback > > do: [:hwnd > :uMsg :wParam :lParam | self CallWindowProcWWith: old with: hwnd with: uM= sg > with: wParam with: lParam] > > ofType: > self WNDPROC pointerType. > > self setWindowLongPtr: aWindow windowHandle nIndex: -4 > dwNewLong: callback. > > self halt > > > > In the callback I just call the old window procedure, so the window should > just behave as if nothing was changed. > > > > However, this doesn=E2=80=99t really work. As long as I only move the mou= se over a > window it seems to work, but as soon as I click on a window VisualWorks > stops handling messages and the application needs to be killed. > > > > Does anyone know how to do this? > > > > In summary: > > 1. Has anyone implemented Microsoft UI Automation in VisualWorks? > 2. Does anyone know how to intercept windows messages and return a > result for them from within VisualWorks Smalltalk code? > > > > Thanks in advance, > > Mark > > --000000000000f55c550644228928 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr">If the description on the Microsoft site can be understood= in the context of their technology, it seems the only way VW could get at = this functionality would be have Cincom to include the Windows code that wo= uld interact with the cited DLLs (<span style=3D"color:rgb(22,22,22);font-f= amily:"Segoe UI","Segoe UI Variable Text",-apple-system= ,BlinkMacSystemFont,"Helvetica Neue",Helvetica,Arial,sans-serif;f= ont-size:14px">UIAutomationCore.dll</span>=C2=A0and=C2=A0<span style=3D"col= or:rgb(22,22,22);font-family:"Segoe UI","Segoe UI Variable T= ext",-apple-system,BlinkMacSystemFont,"Helvetica Neue",Helve= tica,Arial,sans-serif;font-size:14px">Oleacc.dll</span>) and then expose th= e API via Smalltalk classes.<div><br></div><div>If the requirements for bei= ng able to be "automated" by this protocol and Cincom does not pr= ovide a path, the sole remedy would be to have a shim written in Windows su= pporting languages which would call the already built Smalltalk application= .</div><div><br></div><div>Out of these two scenarios I don't see a sol= ution with present Smalltalk technology.</div><div><br></div><div>my 0.0199= 99...</div><div><br></div><div>--</div><div>Cesar Rabak</div><div><br></div= ></div><br><div class=3D"gmail_quote gmail_quote_container"><div dir=3D"ltr= " class=3D"gmail_attr">On Fri, Nov 21, 2025 at 3:18=E2=80=AFAM Mark Plas &l= t;<a href=3D"mailto:[email protected]">[email protected]</a>>= ; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px= 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div cl= ass=3D"msg8016917717850971726"> <div lang=3D"EN-US" style=3D"overflow-wrap: break-word;"> <div class=3D"m_8016917717850971726WordSection1"> <p class=3D"MsoNormal"><span style=3D"font-size:11pt">Hi Reinout,<u></u><u>= </u></span></p> <p class=3D"MsoNormal"><span style=3D"font-size:11pt"><u></u>=C2=A0<u></u><= /span></p> <p class=3D"MsoNormal"><span style=3D"font-size:11pt">Thanks for the reply.= <u></u><u></u></span></p> <p class=3D"MsoNormal"><span style=3D"font-size:11pt"><u></u>=C2=A0<u></u><= /span></p> <p class=3D"MsoNormal"><span style=3D"font-size:11pt">The problem indeed is= that the message requires a result to be returned. You cannot return resul= ts to windows messages from within Smalltalk (The window procedure has alre= ady long returned before that happens, and the Smalltalk events are just copies of the original event and are pro= cessed asynchronously). You need to be able to intercept the window procedu= re itself, but that doesn=E2=80=99t work.<u></u><u></u></span></p> <p class=3D"MsoNormal"><span style=3D"font-size:11pt"><u></u>=C2=A0<u></u><= /span></p> <p class=3D"MsoNormal"><span style=3D"font-size:11pt">In the meantime, I di= d some C-debugging and it=E2=80=99s clear that handling the messages from w= ithin Smalltalk cannot work. There are deadlocks because of the way the VM = handles Windows events.<u></u><u></u></span></p> <p class=3D"MsoNormal"><span style=3D"font-size:11pt"><u></u>=C2=A0<u></u><= /span></p> <p class=3D"MsoNormal"><span style=3D"font-size:11pt">Mark<u></u><u></u></s= pan></p> <p class=3D"MsoNormal"><span style=3D"font-size:11pt"><u></u>=C2=A0<u></u><= /span></p> <table border=3D"0" cellpadding=3D"0" cellspacing=3D"0" width=3D"600" style= =3D"font-family:Poppins,"Century Gothic",Helvetica,Arial,sans-ser= if"> <tbody> <tr> <td style=3D"padding-top:10px;padding-left:17px"> <table border=3D"0" cellpadding=3D"0" cellspacing=3D"0" wid= th=3D"100%"> <tbody> <tr> <td align=3D"left" valign=3D"top" width=3D"600"= style=3D"padding-top:20px;word-break:normal;font-family:Poppins,"Cent= ury Gothic",Helvetica,Arial,sans-serif;font-size:14px;font-weight:700;= line-height:18px;text-align:left;color:rgb(0,0,0);text-decoration:none">Mar= k Plas</td> </tr> <tr> <td align=3D"left" valign=3D"top" width=3D"600"= style=3D"word-break:normal;font-family:Poppins,"Century Gothic",= Helvetica,Arial,sans-serif;font-size:14px;font-weight:300;line-height:18px;= text-align:left;color:rgb(0,0,0);text-decoration:none">Product Engineer</td= > </tr> </tbody> </table> </td> </tr> <tr> <td style=3D"padding-top:10px;padding-left:17px"> <table border=3D"0" cellpadding=3D"0" cellspacing=3D"0" wid= th=3D"100%"> <tbody> <tr> <td align=3D"left" valign=3D"bottom" width=3D"3= %" style=3D"word-break:normal;font-family:Poppins,"Century Gothic"= ;,Helvetica,Arial,sans-serif;font-size:12px;font-weight:400;line-height:18p= x;text-align:left;color:rgb(0,0,0);text-decoration:none" colspan=3D"1"></td= > </tr> <tr> <td align=3D"left" valign=3D"bottom" width=3D"3= %" style=3D"word-break:normal;font-family:Poppins,"Century Gothic"= ;,Helvetica,Arial,sans-serif;font-size:12px;font-weight:400;line-height:18p= x;text-align:left;color:rgb(0,0,0);text-decoration:none" colspan=3D"1"><spa= n style=3D"font-weight:700"></span><a href=3D"https://urldefense.com/v3/__h= ttps://www.mediagenix.tv__;!!DZ3fjg!4oTGo9bUq1dxJ_OKzZmp-bWvoc1ZB4xjdrLZW0U= Vyfyqd-Qm4zUKg2OBV3yXLg5KV9aHkST4oo97tH89NbUlJDtp2aN7j1EtKN9wMkM$" style=3D= "word-break:normal;font-family:Poppins,"Century Gothic",Helvetica= ,Arial,sans-serif;font-size:12px;font-weight:300;line-height:18px;text-alig= n:right;color:rgb(0,0,0);text-decoration:none" target=3D"_blank">www.mediag= enix.tv</a></td> </tr> </tbody> </table> </td> </tr> <tr> <td align=3D"left" valign=3D"top" style=3D"text-decoration:none= ;border:none;padding-top:10px" width=3D"600"> <a href=3D"https://urldefense.com/v3/__https://www.mediagen= ix.tv/__;!!DZ3fjg!4oTGo9bUq1dxJ_OKzZmp-bWvoc1ZB4xjdrLZW0UVyfyqd-Qm4zUKg2OBV= 3yXLg5KV9aHkST4oo97tH89NbUlJDtp2aN7j1Et_i84WBg$" title=3D"Mediagenix TV" ta= rget=3D"_blank"> <img src=3D"cid:ii_19aa88f988897174f311" border=3D"0" i= d=3D"m_80169177178509717260.5cxluw9aa54" alt=3D"mediagenix-baseline_light_6= 00x40.png"><br> </a> </td> </tr> <tr> <td align=3D"left" style=3D"padding-left:17px" width=3D"600"> <img src=3D"cid:ii_19aa88f98888f8b70672" border=3D"0" id=3D= "m_80169177178509717260.0zbjbsbxes2" alt=3D"mediagenix-signature_gradient_5= 83x2.png"> </td> </tr> <tr> <td style=3D"padding-top:10px;padding-left:17px"> <table border=3D"0" cellpadding=3D"0" cellspacing=3D"0" wid= th=3D"100%"> <tbody> <tr> =20 <td valign=3D"top" colspan=3D"2" style=3D"word-= break:normal;font-family:Poppins,"Century Gothic",Helvetica,Arial= ,sans-serif;font-size:10px;font-weight:300;line-height:14px;text-align:left= ;color:rgb(0,0,0);text-decoration:none" width=3D"400">This e-mail and any f= iles attached to it are confidential and intended only for the use of the i= ndividuals or entity to whom they are addressed. If you have received this = e-mail in error, please notify the sender immediately.<br></td> </tr> </tbody> </table> </td> </tr> </tbody> </table><div> <div style=3D"border-right:none;border-bottom:none;border-left:none;border-= top:1pt solid rgb(225,225,225);padding:3pt 0cm 0cm"> <p class=3D"MsoNormal"><b><span style=3D"font-size:11pt;font-family:Calibri= ,sans-serif">From:</span></b><span style=3D"font-size:11pt;font-family:Cali= bri,sans-serif"> <a href=3D"mailto:[email protected]= .edu" target=3D"_blank">[email protected]</a> &l= t;<a href=3D"mailto:[email protected]" target=3D= "_blank">[email protected]</a>> <b>On Behalf Of </b>Reinout Heeck<br> <b>Sent:</b> Wednesday, November 19, 2025 5:30 PM<br> <b>To:</b> <a href=3D"mailto:[email protected]" target= =3D"_blank">[email protected]</a><br> <b>Subject:</b> [EXT] Re: [vwnc] Microsoft UI Automation in VisualWorks?<u>= </u><u></u></span></p> </div> </div> <p class=3D"MsoNormal"><u></u>=C2=A0<u></u></p> <table border=3D"0" cellspacing=3D"0" cellpadding=3D"0" align=3D"left" widt= h=3D"100%" style=3D"width:100%"> <tbody> <tr> <td width=3D"0" style=3D"width:0.3pt;background:rgb(166,166,166);padding:5.= 25pt 1.5pt"> </td> <td width=3D"100%" style=3D"background:revert;border:revert;color:revert;di= rection:revert;display:revert;font-size:revert;height:revert;letter-spacing= :revert;line-height:revert;margin:revert;opacity:revert;outline:revert;over= flow:revert;padding:revert;table-layout:revert;text-align:revert;text-inden= t:revert;text-orientation:revert;text-overflow:revert;text-transform:revert= ;vertical-align:revert;white-space:revert;width:revert;word-break:revert;wo= rd-spacing:revert;writing-mode:revert;zoom:revert"> <div> <p class=3D"MsoNormal"> <span style=3D"font-size:9pt;font-family:"Segoe UI",sans-serif;co= lor:rgb(33,33,33)">U ontvangt niet vaak e-mail van <a href=3D"mailto:[email protected]" target=3D"_blank">[email protected]</a>.= <a href=3D"https://urldefense.com/v3/__https://aka.ms/LearnAboutSenderIden= tification__;!!DZ3fjg!4oTGo9bUq1dxJ_OKzZmp-bWvoc1ZB4xjdrLZW0UVyfyqd-Qm4zUKg= 2OBV3yXLg5KV9aHkST4oo97tH89NbUlJDtp2aN7j1EtOqUatqU$" target=3D"_blank"> Ontdek waarom dit belangrijk is</a> <u></u><u></u></span></p> </div> </td> <td width=3D"75" style=3D"background:revert;border:revert;color:revert;dire= ction:revert;display:revert;font-size:revert;height:revert;letter-spacing:r= evert;line-height:revert;margin:revert;opacity:revert;outline:revert;overfl= ow:revert;padding:revert;table-layout:revert;text-align:revert;text-indent:= revert;text-orientation:revert;text-overflow:revert;text-transform:revert;v= ertical-align:revert;white-space:revert;width:revert;word-break:revert;word= -spacing:revert;writing-mode:revert;zoom:revert"> </td> </tr> </tbody> </table> <div> <p align=3D"center" style=3D"margin-right:0cm;margin-bottom:0.5pt;margin-le= ft:61.2pt;text-align:center;background:rgb(255,255,204)"> <b><span style=3D"color:red">Warning:</span></b><span style=3D"color:black"= > This is an external email. Do not click on links or open attachments unle= ss you recognize the sender and know the content is safe.<u></u><u></u></sp= an></p> <div> <p>Hey Mark,<u></u><u></u></p> <p>WM_GETOBJECT =3D 0x003D<u></u><u></u></p> <p>Have a look at InputState >> send:eventUnknown: and see if you are= lucky and can catch a 16r3D there?<u></u><u></u></p> <p><u></u>=C2=A0<u></u></p> <p>Not sure how to return the com interface from there though...<u></u><u><= /u></p> <p>-Reinout<u></u><u></u></p> <p><u></u>=C2=A0<u></u></p> <div> <p class=3D"MsoNormal">On 19/11/2025 12:23, Mark Plas wrote:<u></u><u></u><= /p> </div> <blockquote style=3D"margin-top:5pt;margin-bottom:5pt"> <p class=3D"MsoNormal"><span style=3D"font-size:11pt">Hi all,</span><u></u>= <u></u></p> <p class=3D"MsoNormal"><span style=3D"font-size:11pt">=C2=A0</span><u></u><= u></u></p> <p class=3D"MsoNormal"><span style=3D"font-size:11pt">Has anyone ever imple= mented <b> Microsoft</b> UI Automation in VisualWorks?</span><u></u><u></u></p> <p class=3D"MsoNormal"><span style=3D"font-size:11pt">=C2=A0</span><u></u><= u></u></p> <p class=3D"MsoNormal" style=3D"text-indent:36pt"><span style=3D"font-size:= 11pt"><a href=3D"https://urldefense.com/v3/__https:/learn.microsoft.com/en-= us/windows/win32/winauto/entry-uiauto-win32__;!!DZ3fjg!_aQGOK7EA64lDd39rsL3= YgMyNrjpz-h71lMBNG-HmSuaCpXFN4HqRsEhPwgCPsx8cr6dxMreJnNEF_VebzM95XCf$" targ= et=3D"_blank">https://learn.microsoft.com/en-us/windows/win32/winauto/entry= -uiauto-win32</a></span><u></u><u></u></p> <p class=3D"MsoNormal"><span style=3D"font-size:11pt">=C2=A0</span><u></u><= u></u></p> <p class=3D"MsoNormal"><span style=3D"font-size:11pt">This is becoming a re= quirement for us, and I wanted to know if anyone has ever done this before.= </span><u></u><u></u></p> <p class=3D"MsoNormal"><span style=3D"font-size:11pt">=C2=A0</span><u></u><= u></u></p> <p class=3D"MsoNormal"><span style=3D"font-size:11pt">Alternatively, does a= nyone know how to intercept a windows message and return a result for it fr= om within VisualWorks?</span><u></u><u></u></p> <p class=3D"MsoNormal"><span style=3D"font-size:11pt">=C2=A0</span><u></u><= u></u></p> <p class=3D"MsoNormal"><span style=3D"font-size:11pt">As a small experiment= , I tried to intercept the WM_GETOBJECT message as described here:</span><u= ></u><u></u></p> <p class=3D"MsoNormal"><span style=3D"font-size:11pt">=C2=A0</span><u></u><= u></u></p> <p class=3D"MsoNormal"><span style=3D"font-size:11pt">=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 <a hr= ef=3D"https://urldefense.com/v3/__https:/learn.microsoft.com/en-us/windows/= win32/winauto/wm-getobject__;!!DZ3fjg!_aQGOK7EA64lDd39rsL3YgMyNrjpz-h71lMBN= G-HmSuaCpXFN4HqRsEhPwgCPsx8cr6dxMreJnNEF_Veb6sI9g7W$" target=3D"_blank"> https://learn.microsoft.com/en-us/windows/win32/winauto/wm-getobject</a></s= pan><u></u><u></u></p> <p class=3D"MsoNormal"><span style=3D"font-size:11pt">=C2=A0</span><u></u><= u></u></p> <p class=3D"MsoNormal"><span style=3D"font-size:11pt">In order to do this f= rom within Smalltalk, I tried to replace the window procedure of a window, = with a callback like this:</span><u></u><u></u></p> <p class=3D"MsoNormal"><span style=3D"font-size:11pt">=C2=A0</span><u></u><= u></u></p> <p class=3D"MsoNormal"><span style=3D"font-size:11pt">=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 | cal= lback old |</span><u></u><u></u></p> <p class=3D"MsoNormal"><span style=3D"font-size:11pt">=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 old := =3D self getWindowLong: aWindow windowHandle nIndex: -4.</span><u></u><u></= u></p> <p class=3D"MsoNormal"><span style=3D"font-size:11pt">=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 callb= ack :=3D CCallback</span><u></u><u></u></p> <p class=3D"MsoNormal"><span style=3D"font-size:11pt">=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 do: [:hwnd :uMsg = :wParam :lParam | self CallWindowProcWWith: old with: hwnd with: uMsg with:= wParam with: lParam]</span><u></u><u></u></p> <p class=3D"MsoNormal"><span style=3D"font-size:11pt">=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ofType: self WNDP= ROC pointerType.</span><u></u><u></u></p> <p class=3D"MsoNormal"><span style=3D"font-size:11pt">=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 self = setWindowLongPtr: aWindow windowHandle nIndex: -4 dwNewLong: callback.</spa= n><u></u><u></u></p> <p class=3D"MsoNormal"><span style=3D"font-size:11pt">=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 self = halt</span><u></u><u></u></p> <p class=3D"MsoNormal"><span style=3D"font-size:11pt">=C2=A0</span><u></u><= u></u></p> <p class=3D"MsoNormal"><span style=3D"font-size:11pt">In the callback I jus= t call the old window procedure, so the window should just behave as if not= hing was changed.</span><u></u><u></u></p> <p class=3D"MsoNormal"><span style=3D"font-size:11pt">=C2=A0</span><u></u><= u></u></p> <p class=3D"MsoNormal"><span style=3D"font-size:11pt">However, this doesn= =E2=80=99t really work. As long as I only move the mouse over a window it s= eems to work, but as soon as I click on a window VisualWorks stops handling= messages and the application needs to be killed.</span><u></u><u></u></p> <p class=3D"MsoNormal"><span style=3D"font-size:11pt">=C2=A0</span><u></u><= u></u></p> <p class=3D"MsoNormal"><span style=3D"font-size:11pt">Does anyone know how = to do this?</span><u></u><u></u></p> <p class=3D"MsoNormal"><span style=3D"font-size:11pt">=C2=A0</span><u></u><= u></u></p> <p class=3D"MsoNormal"><span style=3D"font-size:11pt">In summary:</span><u>= </u><u></u></p> <ol style=3D"margin-top:0cm" start=3D"1" type=3D"1"> <li class=3D"m_8016917717850971726MsoListParagraph" style=3D"margin-left:0c= m"><span style=3D"font-size:11pt">Has anyone implemented Microsoft UI Autom= ation in VisualWorks?</span><u></u><u></u></li><li class=3D"m_8016917717850= 971726MsoListParagraph" style=3D"margin-left:0cm"><span style=3D"font-size:= 11pt">Does anyone know how to intercept windows messages and return a resul= t for them from within VisualWorks Smalltalk code?</span><u></u><u></u></li= ></ol> <p class=3D"MsoNormal"><span style=3D"font-size:11pt">=C2=A0</span><u></u><= u></u></p> <p class=3D"MsoNormal"><span style=3D"font-size:11pt">Thanks in advance,</s= pan><u></u><u></u></p> <p class=3D"MsoNormal"><span style=3D"font-size:11pt">Mark</span><u></u><u>= </u></p> </blockquote> </div> </div> </div> </div> </div></blockquote></div> --000000000000f55c550644228928-- --000000000000f55c560644228929 Content-Type: image/png; name="mediagenix-baseline_light_600x40_476d4020-d5be-4afc-b4ba-c52a5c350ce7.png" Content-Disposition: inline; filename="mediagenix-baseline_light_600x40_476d4020-d5be-4afc-b4ba-c52a5c350ce7.png" Content-Transfer-Encoding: base64 Content-ID: <ii_19aa88f988897174f311> X-Attachment-Id: ii_19aa88f988897174f311 iVBORw0KGgoAAAANSUhEUgAAAlgAAAAoCAYAAAAi24Q0AAAACXBIWXMAAC4jAAAuIwF4pT92AAAe HklEQVR4nO2dB5QUxfPHh6hIEFSCiEhSMCEoBkQQkaAiGQOKgCRBCaJIDvJQRCWLoAQRUCQoYEAF QQlKUDCBoCJKVgzknOb3Pv3/17y+uZm9vb097oD6vje3tz093dXV1T1V1dW9GVzXdR2FQqFQKBQK RdyQMX5FKRQKhUKhUCiAKlgKhUKhUCgUcYYqWAqFQqFQKBRxhipYCoVCoVAoFHGGKlgKhUKhUCgU cYYqWAqFQqFQKBRxhipYCoVCoVAoFHGGKlgKhUKhUCgUcYYqWAqFQqFQKBRxRmbnLMDu3budt99+ 2/njjz+ciy++2GncuLGTP39+Z9asWc7XX3/tZM2a1Xn00UedIkWKOGciTpw44Xz00UfO999/75xz zjnO/fff7xQrViytyVIoFAqF4ozFWaFg7dixw3n55ZedTZs2Oeeff75ToUIFo2CNGzfO+fjjj02e W2655YxVsI4ePeqMGDHC+fzzz8334sWLq4KlUCgUCkUq4qxYIsySJYuTPXt28z+ffAfnnnuulydT pkzOmYoMGTIYz5Ugc+azQq9WKBQKhSLNcNa8aVEy5FN+37pLly5O7dq1jcJRtmxZ50wFS6A9e/Z0 HnjgAaNc4q1TKBQKhUKRzhUsFJYjR444J0+eNP/zEuelLstTx48fN//jRcFTRD7S+S6Kjx+HDx92 li9f7vz0008mb86cOY1icM011yQZb/TPP/84mzdvdvLmzWuW/fBUBXltbr75ZnNFArRCP3SK54s0 2psxY0aTxqcf+/btc/7++28nT548ZlmSdkMbbeF/nrPbfuzYMWfVqlXOd9995xw6dMg577zzTHvL lCkTSBMXoG4u6QPhv91e7rMsyhVUluQJAmXa3q9YQJtt/sUbtAF5EfmKFvAcxJsu4SltDpPvsxWM JfjOmEwOb5BD+vZ08b7a9Mba5vQE5hUxTMPmivQAeM08m9I5S5F8KO8D4MYBmzdvdu+44w63cOHC bsGCBd1nnnnGpB86dMht3bq1e+mll7rFihVzx4wZY9IPHDjgli9f3m3Tpo27ffv2ROXNmjXLLVeu nJslSxZGtHdly5bNPLNp06ZAOubMmeM2aNDAveCCC9ysWbO62bNnd6tXr+6+8sorbunSpU0Zl1xy ibtq1Sr35MmT7uOPP+5ed911pq4lS5YkKOvEiRPuzJkz3ebNm7t33nmnW6NGDbd9+/busmXL3LZt 27pXXnmle/PNN7uffPJJgueWL19u2ly8eHFD70UXXeTed9997uzZs90mTZq4JUuWNDTabViwYIEp H5rt9p577rlurVq13NWrV3t59+3b5z7xxBNunTp13Hr16rnz5893169f7z722GPuVVdd5ZX/1Vdf ec8cPXrU9Ak8oK3z5s0z6cePH3fbtWvntmjRwj148GAifq5cudKtUKGC+9Zbb7kpAXW0bNky5ueR F/9Fm+hD+um7774z/KL/aVM04Pl+/fqZi/8j4fDhw0nmAdQNbd9++627aNEi99dffzXfo6UpFkRL W6yAfngcDcjn7yfk6tixY+Y+n2PHjjVjcMOGDab/om1jw4YN3alTp3plRao/WsA38kcqMxbY9DIH xtLm9IQjR464f/75p5FpZDs5MpGa8Pc3/QjP4T19kFLQd5Sfkj5LL7wKk/948Ck1eH+mIC4KFi8S JhBRDBo1auQJV7Vq1bz0/v37m3Q6AMWDNDrEfrm/9tpriZSqAgUKJEhDSdixY0cCGoYOHZpIQbGv TJkyJVKwbrnlFu/+e++955W1d+9eo3QElUMdUhbX+PHjvecQMJS7MBrkuuyyy9w1a9aYZ+bOnevm yZMnwX2UVLsO8v/4448m/99//+3mz5/fu/fss8+6t912W6I6cuXKZRQ3AH9R4OTe22+/bfqmS5cu XtoDDzxgJhRbab766qvNPRTVESNGmEk2FtSsWdMtU6ZMTM9CZxAPe/fu7f71119m8uLFhRKLohXt ZIYMoqByRZoQuEfZQ4YMiajIkA8lmnbadPKddF5S8Ua0tMUK4T0v1qT4yn3y+fuJ8TZq1ChDK4rm xx9/bJTtf/75J+oXl9Dx0ksvhbbTrj8aJYtykCEZD/FUsmx6GVOxtDm9gLlD+GTL9Ndff52mikNQ f9On8DxaGYgEnq9SpYop65dffomp35Izfk414BXzBvNHPBSiePL+TEJcfL24wVnSEsj/uMOzZcvm pdtB5bly5TKfH374ofPnn3+a/3/55RenV69eXp6WLVs68+fPdz799FPngw8+cMqXL2/SV65c6Ywc OdLLRx7iqViKAjVq1HB69+7tPPzww96SAq5LG9DGsqPAdms+/fTTzvjx47223Xrrrc4NN9xgnqEO KYtlUGnrunXrnDZt2jg7d+4036tXr+707dvXadKkSaIlKHjCxVIgdO/atcuk16lTx5k3b565Pvvs M+fee+816ex+hC+4YKnzwgsvNOksQcAHllKh79JLL/Xq2Lt3r/Piiy8aeqk/R44cifrhiy++8NKm TZvmtG7d2lveomzZGHDgwAHnk08+cfbs2ePEgngs7QwYMMDUv3//frNsjNyMGjXK9EXhwoWd119/ 3Swfy/KFLBsePHjQXCzZkJf/pY0CeCT5eMaWFZ6D7+Shv2RZ0QZpM2bMcOrWrWt4uG3bNkPnli1b nFq1apn0uXPnJiiXZyhP6qV8WYKR+6RTt+Tz1x9GG+UkVT5p5KEMm0c2b3he6gnimx9SPvLLEjnX xIkTnccff9ykgTvuuMPs6EWGZbmMNth9BV3Sfn/5YfTCW74L3f5n/SAvu4ivvfZaM9b884PwJug5 O91PE+0QPvCJ7EfTZj/vpR7hQ5BsBsl5rHmCAI3vv/++mQuZY+hP5qILLrjAzHUy34bJEu2nHn/f 2vDLKp/Ua/MZ+mUsUJaM5aD+tmWc/KTbaUDmAX+6zS/mc3ZdIx/Mk35+BY0HoVPSw8YP9dpzTtC8 kto85b6E70jZNt8iyWZQHsoL4+dZjXhoab///rtbokQJz8JhWU2sH5a4JB0NF6AxFy1a1EsXb06f Pn28NJbh/Pjjjz/MciP3+dy9e7exDPBokcaS4uDBgz1PjFjMtsdHPFigatWqXvqHH35o0lgWzJgx o0m7/vrr3cWLF7v79+939+zZY5Yu8+XLl8CbNWXKFPNc/fr1TRrP9u3b19PihQb7OZbx4BnLeJLG EqvfSqJtt99+u7mPZ4wlO9rG8qQ8lzdvXrPkx9IhZeItknsXX3yx8erY9HHhaQNbt251K1asmMA6 bdq0qedt2bhxo7HisHL+/fffmK3v2rVrmz6KBWIFvvjii573AvpeeOEFY0nTN2LJiqWINwLvnVig XCybTp8+3ctHuXivoK1nz56JPE6UIR4imz94Sm0vCjzBwsXriKeG/hE+8Ql9yAPLxmIpUjdjwfb6 Pvnkk+62bdvMM5Q/aNAgz0Mq+ahDvCKRaMPTyFgKK1942q1btwRywf/ffPONt/Ti90axjB5miZO+ cOFCk49PyUc5devWdTt16mR4Ie2S8UFbRo8encDz16tXL3fAgAFePqGFZe4geukraPPTG2ZJMyY/ +OADj798Cm8iWfey9CfLILSRvn/00Ue9OsuWLevJIzILDUFtxlNvt5m2iFdI6kE+w2QT8MkzhDD4 84iMyliIlCcMIof0H30n/fzbb7+5X375ZQI5CZIlwiDef/99wxPb8yx8gN/IKmnItszPEyZMMG2H B+QVfg4fPtyURb/QJn9/M0fDc/5nFWLatGmJ+tbue1ZBguY08W5WrlzZ7d69u5lHbFkK8kzZHjU+ mY+Dxg/1Qw/j0X4nMa6Fx6nNU2hjrrBpE1lPSjYjjVlWqCKNu7MRaR6tiIUngcm///67+cTKw1oa O3asM3jwYHMNGzbMmTlzpueJIZCdgPC1a9d6zzVs2NBp166d56Gh3Lvvvtvp06dP1PTgKUNbx8OG B6hixYrGk8N3PBF4jGxvFx4TNPylS5ea7/fcc4/xSolnS2h46qmnEtSDti9ncAFofu2117z2ck2Y MMGzTvCMcVCq3xvWrFkzp1q1aoYvRYsWdVq1auXxE0tHrKggXHLJJcbzQhsFeByaN29urJvLLrvM eIo4pNW2vtMC8EuC+2kXHiIsaXtXqOT54YcfnEceecRscEA+8CTBoyeffNLLJ5/0NxYYmyKwWm+/ /XbTz8gUXreuXbs6lStXNnK1YMECc8/2xkHLwoULzf8cYGsHMvOJ7LCDk3PIkBtkZeDAgc7w4cOd V1991XjlVqxY4axevdrQzJltUi6YMmWK8bDQBryYyBbjALkLog3Lkvq++uorZ9KkSaZ87lF++/bt jdUpgA48rXhQoYEDeZEf8tAOPMPglVdeMW28+uqro5IB6SP5hAbGD8/angBofffdd522bds6Dz30 kGkjfYDHFH75gRcoiF54euWVV3pebbxlixYtSuAxt0G98ITDhfEaFyxY0Mi5TRv/B3l5JB3ZYRML tOPVoTzoefbZZ52OHTsmesaumzHWv39/p3PnzoY3tDl37txOvXr1nL/++suUTT4OQg6TTcpEznkG jz2844KP5Fm2bJkpg8OF77zzzsA8X375ZUSvJP1Fv3EYMx4saKFexhWrCXawe5AsdejQwfQjcxnf Z8+ebbxheJ7Fg8JzpDHXkoc2v/XWWx799nglD/No9+7djWfJ39/2vMwcyLxG3zLGpQ+olzqYC9h8 FCTP0IU8cCAzu8zxZMF/P6/8Hht7XoGWoPHDfMw4ZzzCJ/qfeYD5gHGb1PiMB0+Zv1gdYT5g/oBO 6oYXSclmpDFLOxQ+pLUHi1gjrEAg2nqGDBkSaf9BF3FTeJUyZ85svuNBCAIWRc6cOSN6sCRAGquF 71h8QRYeXh+CycWDNWPGDGPR5c6d2/MiBAGLUYL2S5UqZXjWrFmzqNopF945vDdSf1B9BN0Tt8Y9 PHcE3du8tT1YAmJDbF6IJ8uOyUoJ4uHBIlD+iy++MNfkyZNNP2JpIUu25wSasQ7xCGLRYtFxIYsD Bw708olnhcB/Ox9eUSy/119/3Vj/PIflh+xSl9/iRUZefvnlJGO5AM8SrwgNdlwWliExb9RLm6hT LPG1a9ea++INQ2YYX9Tlp418Uj6xfbIZAJ788MMPJp0gZcoRnoq1SVtXrFjh5aEsscI///xzb1NB GGwP1siRI83/eBmkHXhfoVG+Uy90YQVj/UowMRfeB/rG78GKRC/0QSffoTvM00b5eBAk9kpijPBS SCyo9Cljxu/Bkrg9eIj3mnLwKshGBp5l44ntwQpqMx462kl+5IAxyIYbNgJRdlKySVl4BaGF9tpy TlD90qVLTV3koaydO3eaurh27dplNuwQZxpJZimPOEfx0MEjvLHSl/7xacdCMS+TzqfMo9CDRw6a +d8eC1KejAW879BNmSJXEydO9OQcfvv7m3psXpO3Y8eOht8iX7xruC+eWj9sDxd56QvajYxIO6TN tqc2yIPrHz/IrC0z8qwtM7ybgsZnPHlKOjLHvMFzEogfjWySHs2YVfwf0sWe56DtvyVLljTWk1gx 9oGZWBJo4QUKFDCxRsQlkS8sRkjW7ZMC9YtFI7FWfo8ReWyLFFrQ8MVrtGHDhsCyoc1ui8RnCPA+ 4ZGxrSQ52oA68dgUKlTIs54F/naJ5yA5wPLxb73GkqGsN954I9WOV0gOsFCJbcIaK126tLHS8Fj6 aaPtWPx33XWXiXOT/kRubrzxxgR5uceJ9vZxIXg9OLoDuYLPIhNctnzEAsqTeMMqVap4R5lQLkeK UO/PP/+coP+IL5O+If9VV11lvAnynE0bkPLx7mIlC0T28AyL/CBPwj/GExY2oO1Svnwiq9G2HQv3 vffeM7EreErw7lx33XWJLH7aiYcFa9z2/PE/R5RgndtIDr1hRwmIxxHPRs2aNU15WPNY7cjNFVdc EVUbacv27duNZZ8vXz5vLFNepKNfpM233XabM2bMmATp0hbKTko2yY/nDD7ZeZB5vNq0n3G9ceNG Ux4eDcnDdzwPSR1pQn7ahnekW7dupj/xpJQrV854R8Qj7O8bymVOBPbcyCdzOmMYebTHgnif7LHg lzfGgsyHtN/f336PI+OFWDG8Q3iymTdoA/UxjoJkRLyb8JA2QTPzDH2Fxzg5c6F//ECfLTNy35YZ 4pAvv/zyVOepzBtclCE8jUY2kzNmz3akKwWLM6PkO+57BNp/phACyMTB/wwSXrosw+C+JlCbZRoE 08b06dO9gMwwUA9lotgxCAmkR1gefPDBBPlY1oMG+zmWz6jzv//+c6ZOnerUr1/fBLYKWM588803 E7iQwU033eQF07O0iMtbzpuR9jLp4+blhcKEa7uQ4wEmYALxlyxZkugebmVoIIDc3qyQFsAdTQA5 kyz9w3IJE0hKAyuDlIbkKFHkZamBF0/YmWESnCoKVXLq8OeLVcFDflBK2QhhT7LxKNsPlhs4uLdq 1apm8mdip/6gDQLJQTzolSUOlG3OnYMu5gZ+o5SlcDbHSNmnMmiXF1yjRo3MnCAv3pTKZhgogyU+ ZCEpJQt+QQ8vfeYf5lc21LAszTwH34LoCpOxlNKd3PwsZ0InfQv9hGE888wzCcaigP4mFIOwiaZN m5qlUdpOuAdKBUuFzNMCv0IXb3k5FTyNVTYV0SFdcEsEE6VENHY0aGJPxDpBqFh7RvsnboLYCyZG FBusZMAgYH2bnS+sFxNjQD5RYqIBggQNrJUz2bLTiLJQRIYMGWJ2GAbRjoUH/v33X1MnGj5r/8SR McDtHXuA9mBBS5zI5MmTzSRge0r43qBBA9NedlSibAVNDLFi/fr1pr22ckU9vBgF0NWiRQvjQUtL wBN2fRIbAI/feeedwBc2+VDC2HlKH0r/oOR88803MdcfNnnygqIfRRG1dwvxidXHblYOeUU5lhcS CpnQTz6UcNJKlSqV7ElMaIMGKZ/4E3bvEbPBy5AXA3IdFncSCX6PbVLeYOpBsRo0aJCJA8PjFuRV pZ0cpMvYkN13XHLIcKwI8+BSNmMIax+PMp4Z5hReuniuGK9yKC4eLvKJDMnOL9nxa+chFkvqpE/p xzBImzHkMBjoHy7GGMoe3olo+oc85IVPtvEI7zDmoAGaUTDIx7iWuqiX+EsMWsqRg1D9IA0eEfME H6CP+QraQUrmBFtWUVykDfZYiFZhieSxh2bmUIxsYo0om/dMkGKJnCOLeJnwJGPwIh/IBd4vPFui cNKHGOHCN57FEI40fkRmaBt0BMkMvI1ViYmFp/4DZJOSzeSM2aPWjvuzFXFTsOyOi+Z/e8uqAFcs QX2AQE6CDEkj6BqXJwGOBNRxjzTxFuDeJ+gR4P7H68QLjQBFFKTkoFKlSsZzBn777TcjaJSFxwTl KmwZkjoRRFkmRBEgjedR9PxA8JjkCDQEvIh5nhchChovbSZFBjHK3fXXX28Uh5R6AQCDhaDExx57 LMGgwJOFYktgtb3MgTLDJIWbPa3Bj3QT7E0fwWf/5ErbUGiYANjcgLeRPuNFHxQ4He3ERdtRtP38 l2UUAjwJQMdLxPIcS3F4SDp16mR4PHr0aPNyog8JgsZCXrx4sel3+hiPLcoVynRyjrSwaWPyxyvB 2KDtBLUy8TFekDO+28epRAsUU16mtJ3geX+wfBB4gXG8Ce1iLCBvftBOZPC5554zS9K82LZu3WqO N4lFwRLFhBdJ0MufMceLhxcEihEGDBeeWvqHoHFRwvHS8DLs16+foQlPOQo084t9/AJl0Ub6kL7E WKG9YaDNLFshJxiCKC5sbKCeoUOHGlmKRsGScmgHRhB1c6FcMX/QV+TB8wtvMfRQBKmPNuOJQhYk 6B5lwi/bvEz5YXgMS/JQPktQH330kWk3Smms3hSeQ1bhHYYAx8BQPuOVtGiUq6T6W/jEUSmUh5wx NsI27MALlDDGJ+0V+WDuwOuFZwsPF3yhTJYemduhm8+w+UXGD3UiM4xz2khbeZZVEeYD6mVV5lTx lPzMDVyM52hkE+MpmjGLctWjR49Ex9OcdXDjAALr7AM2CZwDBLtVqlTJSydAEhBMx+GVkk4AroDj AO66667QQG+e4/RtPwgGJkBdjliwL06Rl8D5HDlyeIHfN954o5fn3Xff9coiuK9Hjx7eYaj2VahQ oQRB+PZBo7SLNtpHUHBxUCrbY4sUKeId0yCB/QSfNm7c2AvU91/UxSGFEkRLwKF97ATBlzZoh30S PMdMADuIfdKkSSYwUbbCc0EDAbWCLVu2mGMq5NBSTsOnb2IBR0cQJBkLJKCU7eIS2CmBlvfff3+C bdz2MQ0EjdrbiDmmYdy4cQmC3O0t92GHd0rQq5Q1bNiwwM0PpLGVmQB0u//4LkcJ+LdR+/OxgcJ/ TIMdMOo/PiCMtqDyg45psHlq81r4KIcHynZv+Eaga9Cp5P5t6hKYv27dOo+2sCML2JwidXARtNu1 a9dEQe5J0UuAt31kgj/YlrqQacaovw95lo0tnTt3NoG99Jf/4NgOHTqYOcY+poH22RtI2D7PsSxC b1ib2eZuH6OBfPqPaUhKNrn8NAYd0+AfC3YeymzVqpWZH4I2tXDf3z/Q6j/Ow+6bIFkQ+bV5ETQW 4AlzTdAxDf4DO/39zfwVNm6Yz0n/+eefAzdrkIZMk4cxZf/6gr0xgqMf4Cl0E0Bv85QjHSKNH462 4FlosGWG+/DAf0xDavFUNuvwDpKjbJhL5ZiGSLIZacwKj+UXHAoVKhTVL2WcycjAn5QqabjNsZDQ ZgFBcniesAiwALDo0Y6xzlm6IJ0t17gtWfLCM0QQnkCsLJYI0f7RwgloJ7jyvvvuM96dIGAlsIV9 zZo1xtJiOYTgWraiYtnh/cJ6weXNevxLL71kAoHR5KGBvDawRiW4WmKg2O7P8hPLkaLN+388meMU sIRwGeNlo824bvHOUV+JEiWM25mt5QDLkbgQyqW9eCOgE68VAbgsewrgBbRiWUA33ho8fQKsCAJQ 4TEuXeJhsJiwriSm4IknnvA8VFhhWDgc5ClBlALc5HiK+JFoLOFYAY14kbB8YwHLbvDaDjDF4rI3 PcjRAhKsKR4WZEKO9oA3bFmnT5FRsdj9cVP270wCLDDyUq6fDhvcJ59tscnvTtpuf9mGT16hj3yM BbFe5bBNv8dJ6BCag2iT8rEikRO8fnJPyg/iqaQLH6U+yqJM0qWNQb+r5+8HaSvjWeryt0vo9PcV W9tZdsfzRd5o6ZVDKEGQtw76pE+C7lGOLMPbvAXMARKrKfyXpUM5OoRlbO5RVlib7XYz1ukfyrbl RJZho5FNypFAf5Zmod9eApNl3bA8EiMY6VgL+yBJv0wH9U2QLAA/L4LGArRJHwaNbz8/7P4O4jV5 8C7jaeG9EtZOkdWg3zSVe9BGX8lhnrJ5RALZZWyEjR/53VhbZmizn3+pzVPJJ4eIQrukJyWbdh6b fqFF6Dj0/8vK6WGTVFohLgpWaoFOZJkOYSNegJ12sUJeDPbklBJIILofBLoTIyRxCgIC8FGUoIH1 /Dlz5iQKxge4a1FYmahR6IKWi+QEXpnobcGXH9JmMPGsPUGH0UzesGBXBklKA9zpQ2ikPakN2o8i xblpLG0wQdA2JhLOFXv++eedX3/91TulPq0R1ienS/kpATLM8hYn87PEgJwhJyhVxH5AN0t3p8uP x8bC63j1jx2Hl5I8aYnUkFXZucumBox6jNH09IPh6Xn8R/Nsep5f0gPSj6QFgIGA9yUeYOKO50Tt FyoUJ9a8WZvmhYGXjANGeZET+8LgFo8JuzGIvwpCNEoI1khYsDvtDLPQwgZCpJ1E8dg9iMfuVIE2 EjdCrARxDcQe4D0kHgpvHF7LeG4USClSe3JKz5MfsorXmM0kGBXETGIN42XA40y81Olk/cbC63j1 T7SB8ekZqUEfxiOHhlI2cVPpSblK7+P/TJCptEa69mCdTsBVSpA6u1UEstxgBwQTjM8ZQXLWiSL+ EKuVgH2WeXlRE6RPED/LtGEKqCJtvFgElxNoTgA5YQOcOk6wLUc9pLcXouL0At58NsVg5BHgrvKk OJVQBSuOwGvCkRDsOiEOzAbr0uwQZCmEHyVWpC4kDkEOXpUfnE7q3B/FqQf9Q1/xKYe7+mM+FIqU KFnIkipXilMNVbBSAZy1w5Ze+c0wgu05/oHzpU6XeBKFQqFQKBSxQxUshUKhUCgUijhDffAKhUKh UCgUcYYqWAqFQqFQKBRxhipYCoVCoVAoFHGGKlgKhUKhUCgUcYYqWAqFQqFQKBRxhipYCoVCoVAo FHGGKlgKhUKhUCgUTnzxP9bvc2S8TNfTAAAAAElFTkSuQmCC --000000000000f55c560644228929 Content-Type: image/png; name="mediagenix-signature_gradient_583x2_914692b5-3f5f-4311-bb2a-3bfa15bd6fc2.png" Content-Disposition: inline; filename="mediagenix-signature_gradient_583x2_914692b5-3f5f-4311-bb2a-3bfa15bd6fc2.png" Content-Transfer-Encoding: base64 Content-ID: <ii_19aa88f98888f8b70672> X-Attachment-Id: ii_19aa88f98888f8b70672 iVBORw0KGgoAAAANSUhEUgAAAkcAAAACCAYAAABSSXgBAAAACXBIWXMAABwgAAAcIAHND5ueAAAC ZUlEQVRYhYVWwbUcMQhDxzSROvLSfyd5vw7n4MEIAfZe1oNBEhjPgL+/f5adny8hz25bZwsGW2YG LCNjQgIs2+Eb8YzPtr71MuxtmFmHDaLp8Enfjmch4XOgKYZ9T14NR+V/xEgtkPYQmgQ3+bW5ocEj v6IZee8SA7CIzdXnsLUU7RSveYRvnLXmoL0TeKdDUlwfX+tzzJJ79oEByxYQsofzw9lcR2PUsMtH MK++dnJFc96dNn9+1bjads7QHhEOtYFAXWOpMWvmK028bX81vAl7xdr7u8Po+iTwP6DPBgJm7idW 8YmzSnXv6v/UaLmu5z2M0KbnMuC3WrxvGdfM+F5Hb6/0nHAFu5yh5Jdt9RzW9zXIvc895v3qOul+ EK/WhHmLrkZvt277jHj4+zfhJy62XXQUvEnrwJOguv67abzpmHhEU/ec4h85FX7hvOm86mpywJ9f /1beoX8/aF/D9gcDdPji38X7eg9AcQnKzeKGU1zjWPT8N4zyj7r/wMwDg+QoWh1rDXFcF9BwyPr0 ApRYx/Yh0F8RkkNpDphpF2dMsaebHUNAiw8zsI4p75Fnn2/b+Cd+94HWNdX0xEe/IW18rloXWtw+ 1pxL5IQ2vzlnJPuntL7IiXzbLwNiq63XlTSm/1zfaUBhrhh0Bg1DHTLmMMgJb/zDdDAPW74LqY3Q 99WkpecW3HGv1uT24Znw68DM5yND6TW239N6TzX1/nOQF16pD/uUeq9k794DoAFK79yVa/J5xBW9 q6lnwzOt9S6wz1XvpOmhfcxJ8af1K6cb98CZYi96dX/Sd4tRrmus83zt/R/MQk3tiw1GGgAAAABJ RU5ErkJggg== --000000000000f55c560644228929--