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:&quot;Segoe UI&quot;,&quot;Segoe UI Variable Text&quot;,-apple-system=
,BlinkMacSystemFont,&quot;Helvetica Neue&quot;,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:&quot;Segoe UI&quot;,&quot;Segoe UI Variable T=
ext&quot;,-apple-system,BlinkMacSystemFont,&quot;Helvetica Neue&quot;,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 &quot;automated&quot; 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&#39;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>&gt=
; 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,&quot;Century Gothic&quot;,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,&quot;Cent=
ury Gothic&quot;,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,&quot;Century Gothic&quot;,=
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,&quot;Century Gothic&quot=
;,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,&quot;Century Gothic&quot=
;,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,&quot;Century Gothic&quot;,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,&quot;Century Gothic&quot;,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>&gt;
<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:&quot;Segoe UI&quot;,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 &gt;&gt; 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

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