AddressOf operator

AddressOf operator

Anonymous
Not applicable
348 Views
5 Replies
Message 1 of 6

AddressOf operator

Anonymous
Not applicable
Hello all,

In Acad VBA I get an error message on a call to AddressOf (actual code
below), does this operator not function in VBA? The same code is fine in VB.

lngRV = EnumWindows(AddressOf FindPreviousInstance, lngParam)

Many thanks.
Michael
0 Likes
349 Views
5 Replies
Replies (5)
Message 2 of 6

Anonymous
Not applicable
Search MSDN with the phrase "AddressOf and VBA" (no quotes). You'll find an
article titled "Call Me Back: Using Callbacks with the Windows API".

--
Tools you can use: get your free copy of ProPack
http://www.acadx.com

"Michael Morgan" wrote in message
news:21C95DA7E58FACB17F74307686A8AC1F@in.WebX.SaUCah8kaAW...
> Hello all,
>
> In Acad VBA I get an error message on a call to AddressOf (actual code
> below), does this operator not function in VBA? The same code is fine in
VB.
>
> lngRV = EnumWindows(AddressOf FindPreviousInstance, lngParam)
>
> Many thanks.
> Michael
>
0 Likes
Message 3 of 6

Anonymous
Not applicable
Hi Mike,
Attached you will find a BETA version of DLL I've been working on. It gives
you Windows message hooking ability, window subclassing, and will window
enumarating and window finding functions. The methods should be pretty self
explanitory. I can send you the source code if you would like to see how it
works behind the scenes.
To use it, you need to add a reference to you project to the DLL.
You then need to instanciate the object.
Use do the following:
'Declaration section
Private WithEvents objWindHookAs clsWindHook

Then you need to create the object. Place this code before you need to use
the object (in form activate for example)

Set objWindHook = New clsWindHook

Now the object is created and you can use its methods.
Subclassing and windhook will generate events to give you the windows
message.
Use the EnumWind method to Enumerate windows. It will return an array of
variants. The array works in increments of Three, The first value is the
window handle, second is the window text, the third is the class name. The
array continues in this fashion. The array should contain (n*3) elements
where n is the number of windows.

Example:
Dim WindInfo() As Variant
objWindHook.EnumWind WindInfo()
Debug.Print "hwnd:", WindInfo(0), "Text", WindInfo(1), "Class", WindInfo(2)

Safe your work often. Incorrect input can sometimes bring AutoCAD crashing
down. Especially when subclassing.

Hope you like it,

--
Sergio DeAlbuquerque
President

Matrix Technical Services Inc.
172 N.Bicycle Path
Selden, NY 11784

Ph: 631-736-9001
Fax: 631-696-8538

http://www.matrixengg.com
sdealbuquerq@matrixengg.com
"CAD services, machine design, VB and VBA application development"
0 Likes
Message 4 of 6

Anonymous
Not applicable
Thanks Frank and Sergio,

My real question was why won't AddressOf operator work in VBA. In subsequent
research I find that it will only run in modules - ie bas files. In VBA
there are no individual files just the project file. So my solution was to
create a class (probably very similar to yours Sergio) that has one method
which calls the same code that I posted only in a bas file. Seems kinda
wonky to me that VBA will only allow this in a file with a bas extension.
Then again, I could be wrong.

Either way thank you for your contributions.
M

"Sergio DeAlbuquerque" wrote in message
news:63C0F496934A0308478A1B3DCCAD7144@in.WebX.SaUCah8kaAW...
> Hi Mike,
> Attached you will find a BETA version of DLL I've been working on. It
gives
> you Windows message hooking ability, window subclassing, and will window
> enumarating and window finding functions. The methods should be pretty
self
> explanitory. I can send you the source code if you would like to see how
it
> works behind the scenes.
> To use it, you need to add a reference to you project to the DLL.
> You then need to instanciate the object.
> Use do the following:
> 'Declaration section
> Private WithEvents objWindHookAs clsWindHook
>
> Then you need to create the object. Place this code before you need to use
> the object (in form activate for example)
>
> Set objWindHook = New clsWindHook
>
> Now the object is created and you can use its methods.
> Subclassing and windhook will generate events to give you the windows
> message.
> Use the EnumWind method to Enumerate windows. It will return an array of
> variants. The array works in increments of Three, The first value is the
> window handle, second is the window text, the third is the class name. The
> array continues in this fashion. The array should contain (n*3) elements
> where n is the number of windows.
>
> Example:
> Dim WindInfo() As Variant
> objWindHook.EnumWind WindInfo()
> Debug.Print "hwnd:", WindInfo(0), "Text", WindInfo(1), "Class",
WindInfo(2)
>
> Safe your work often. Incorrect input can sometimes bring AutoCAD crashing
> down. Especially when subclassing.
>
> Hope you like it,
>
> --
> Sergio DeAlbuquerque
> President
>
> Matrix Technical Services Inc.
> 172 N.Bicycle Path
> Selden, NY 11784
>
> Ph: 631-736-9001
> Fax: 631-696-8538
>
> http://www.matrixengg.com
> sdealbuquerq@matrixengg.com
> "CAD services, machine design, VB and VBA application development"
>
>

----------------------------------------------------------------------------
----

> MZÿÿ¸@к´ Í!¸LÍ!This program cannot be run in DOS mode.
> $cÜÛ'o²^'o²^'o²^¤s¼^&o²^Np»^%o²^N¿^&o²^ØO¶^&o²^Rich'o²^PELâú9à!
P@À`' RÖ U§ÄO(p`h .textÇEP `.datah``@À.rsrc`p
p@@.reloc¢@B^77MSVBVM60.DLL´f`Efrxf6fžðf.Ëfsðf!>fw'f`f¨Df
nMfÊ-foOf(EfÕ=f*<fm>fß>fm?f´f'fö=f<ÐfþfZAfF´f8°f7ýf]Ef´
fýffâfÁfÑCf¢GfRKfðAf!?f#Kfg}f·fYŽfÅmfÌ¿f¡>f¡?f=>f÷AfÕ>f9f
>
fØ^fG´fö°fÊöfsAfîOf¡ïf¥@fBNfÂüfrfëf'JfEAf")'ò)'b*'þ,'
-'É-'Ð-'¡.'A0'H0'Ö1'Ý1'Z3'a3'Ö4'Ý4'.&8'-8'À8'
> ^9'T9';';'?>'-E'yE'fI'II'zL'fL',O'nO'ÿ%X'ÿ%O'ÿ%
'ÿ%D'ÿ%<'ÿ%´'ÿ%''ÿ%È'ÿ%L'ÿ%Ä'ÿ%¸'ÿ%~'ÿ%t'ÿ%"'ÿ%('ÿ%'ÿ%ð'ÿ%'
ÿ%''ÿ%¨'ÿ%T'ÿ%"'ÿ%''ÿ%''ÿ%l'ÿ%
'ÿ%o'ÿ%¼'ÿ%''ÿ%d'ÿ%ü'ÿ%|'ÿ%'ÿ%À'ÿ%
'ÿ%ø'ÿ%,'ÿ%'ÿ%8'ÿ%è'ÿ%Ì'ÿ%@'ÿ%
''ÿ%H'ÿ%¤'ÿ%4'ÿ%h'ÿ%P'ÿ%'ÿ%ì'ÿ%'ÿ%0'ÿ%ä'ÿ%'ÿ%x'ÿ%p'ÿ%$'ÿ%°
'ÿ%¬'ÿ%`'ÿ%ô'ÿ%^'ÿ%\'ÿ%€'ÿ%Ð'ÿ%Ü'ÿ%Ø'ÿ%Ô'ÿ%à'Zh`d'hdd'Réçÿÿÿx0p@ß
ßØÑ»¬Ô'·åK.(ôWindHook(:-P Matrix WindHook Rev2: Hook and
subclassingÀáßØÑ»¬Ô'·åK.(ôÐàclsWindHookàßØÑ»¬Ô'·åK.(ôâßØÑ»¬Ô'·åK.(ô
0'ÿÿÿÿÿÿÿÿ´''`'ü'ü'Hook Rev2: Hook and subclassing Ã`¤Â`|?bhwndÌ$'´
'l '$ 'Ø'"'@'ô''¬''d'''''Ä'|'0'VB5!!*~
>
ô'ð0ÿÿÿéÄ'Ä'Ô'xfOWindHookR2WindHookWindHook0'È''ÿÿÿÿ"'`'$'c°'P
'°'¸'´'¼' ä'd'@Â``'p'€'@H'ÿÿÿÿ''Ø'b
'ÿÿÿÿD'Q'^'k'x'.'''Y'¬'¹'Æ'Ó'à'í'¼'8'Ž'"'s'Ø'å'l$ÿÿé
÷'l$ÿÿéZ'l$ÿÿé½'l$ÿÿé
l$ÿÿéól$ÿÿé?l$ÿÿé)l$ÿÿéìl$ÿÿé_l$ÿÿéҁl$ÿÿéEl$ÿÿé8'l$
Géہl$Gén ô0'0)'ÀO'``'&''`'*\AC:\My Documents\Visual Studio
Projects\Hooking and
SubClassing\WindHook.vbp0'``'X('ÿÿÿÿP`'ÞßØÑ»¬Ô'·åK.(ô"'4' 
8'ÿÿÿÿÔ''''ä'ÿÿ^'Ä'ÿÿÿÿè '$`'('ÿÿA€
'''''(''8''D''P''\''p''€''''INDHO~1.DLLojclsWindHookWindProcWindHook+=ûüú
h§8+3qµáßØÑ»¬Ô'·åK.(ô*=ûüú h§8+3qµàßØÑ»¬Ô'·åK.(ôâßØÑ»¬Ô'·åK.(ô!=ûüú
h§8+3qµClass!JTê-ÈÑ'£ä É
> ê,c:\WINDOWS\SYSTEM\msvbvm60.dll\3VBRUN¨'
¸'Ü'Xc'^Æ`isSubClassedSetWindHookReleaseWindHookSubClassUnSubClassEnumWind
EnumChildWindFindParentWindFindChildWindFindAllWindHookMsgReceivedSubClassMs
gReceivedSubClassAfterMsg T00,$( 
user32'SetWindowsHookExA'''\c'¡dc'
Àtÿàh0'¸°''ÿÐÿàUnhookWindowsHookEx'h'hc'¡pc'
Àtÿàh|'¸°''ÿÐÿàCallNextHookEx'´'tc'¡|c' ÀtÿàhÄ'¸°''ÿÐÿà
kernel32RtlMoveMemoryü' ''€c'¡^c'
Àtÿàh'''¸°''ÿÐÿàSetWindowLongA'T''Oc'¡"c'
Àtÿàhd''¸°''ÿÐÿàCallWindowProcA'o''~c'¡ c'
Àtÿàh¬''¸°''ÿÐÿàGetWindowLongA'ä''¤c'¡¬c'
Àtÿàhô''¸°''ÿÐÿàGetCurrentThreadIdü','°c'¡¸c' Àtÿàh@'¸°''ÿÐÿà
IsWindow'x'¼c'¡Äc' Àtÿàh"'¸°''ÿÐÿà
EnumWindows¸fĤYI»xª8<»'¼'Èc'¡Ðc'
ÀtÿàhØ'¸°''ÿÐÿà'EnumChildWindows' 'Ôc'¡Üc' Àtÿàh$
'¸°''ÿÐÿàGetClassNameA'\ 'àc'¡èc' Àtÿàhl '¸°''ÿÐÿàGetWindowTextA'¤
'ìc'¡ôc' Àtÿàh´ '¸°''ÿÐÿà,,è!a  ¤,Subclassed
^WindHookLCurrent Hook Object Already SubClassed2Not Valid Window Handle:

> (No Window Subclassedunsubclassed *Invalid Window
Handle*VBA6.DLL__vbaRaiseEvent__vbaFailedFriend__vbaStrCopy__vbaFreeStr__vb
aStrCmp__vbaAryCopy__vbaRedim__vbaAptOffset__vbaFreeStrList__vbaStrI4__vbaSt
rMove__vbaStrCat__vbaFreeVarList__vbaHresultCheckObj__vbaVarDup__vbaObjSet__
vbaFreeObj__vbaObjSetAddref__vbaSetSystemError#=ûüú h§8+3qµ"=ûüú
h§8+3qµ´#'Ä#'yO­3TfÏ'·
ª`Ó"Hooking__vbaStrTextLike__vbaStrTextCmp__vbaFreeVar__vbaStrToUnicode__vb
aLsetFixstr__vbaStrToAnsi__vbaVarMove__vbaFixstrConstruct__vbaRedimPreserve_
_vbaFreeObjList__vbaNew2´#'øc'__vbaErrorOverflow__vbaGenerateBoundsError__vb
aCastObj¼('Ä('Ì('Ä('È''ÿÿÿÿÌ('Ô('à('ô('Ô('à('@''''ð&'Ì('ì('Ô('à('ü(')' )'
)'ü(')' )')'')'ü(')' )')'')')ÿÿ`%''1ÿÿ`'%''o!ÿÿ`%''-ÿÿ`%''
9ÿÿ`0%''(00 Aÿÿ
`<%''(00ÿÿh%''#%ÿÿ`%''=ÿÿ``%''(00ÿÿÿÿp%'ÿÿÿÿ"%'((((#ÿÿ
ÿÿ€%'#5ÿÿ`
%''o€&'ð%'¤&'¨%'&'Ì%'h''8&'È&'\&'8'ÿÿÿÿ''T%'H%'%'TXh
'h`d'hdd'Pé,ëÿÿXh 'h`d'hdd'PérëÿÿXh 'h`d'hdd'PébëÿÿXh
'Pé\ëÿÿ0'ÿÿÿÿ(%'€('ÿÿÿÿ(:-P Matrix WindHook Rev2: Hook and
subclassingä''üc'hwndWindArrphWndClassNameWindTitlechWndahWndlhWndlMsgwPa
ramlParameatMessageÌÌÌÌÌÌÌÌééééÌÌÌÌÌÌÌÌÌÌÌÌU<ìfì h&''d¡Pd?%fì
SVW?eôÇEø''3ÿ?}ü >
?M´».|ÿÿÿM¼?Eo?E¬ÇE"T!'?|ÿÿÿÿè'UOMÌÇE"
ProductVersion2.008InternalNameWindHookR2H'OriginalFilenameWindHookR2.dl
l,OLESelfRegisterâßØÑ»¬Ô'·åK.(ôàßØÑ»¬Ô'·åK.(ôMSFT A'ÿÿÿÿ
€dÈP,ÿÿÿÿÄ ÿÿÿÿÐ'ÿÿÿÿ¤
ÿÿÿÿ|€ÿÿÿÿü¨ÿÿÿÿìÿÿÿÿì¤ÿÿÿÿ4ÿÿÿÿÄ(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿì
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ4!ø 
> xÐ'ÿÿÿÿÿÿÿÿDÿÿÿÿ%! ÿÿÿÿ0,ÿÿÿÿÿÿÿÿÿÿÿÿ$!
@^Dÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿÿÿÿÿ`xÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿHÿÿÿ
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{?Pi»Ð'¨ÿ
É'YÿÿÿÿÿÿÿÿßßØÑ»¬Ô'·åK.(ôþÿÿÿÿÿÿÿáßØÑ»¬Ô'·åK.(ôdÿÿÿÿ0ÀFÿÿÿÿÀF0àßØÑ»¬
Ô'·åK.(ôÿÿÿÿâßØÑ»¬Ô'·åK.(ôÈÿÿÿÿÿÿÿÿÈÿÿÿÿÿÿÿÿ`H-StdOle2.TlbWWWÿÿÿÿè
ÿÿÿÿ<ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÔÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
ÿÿÿÿ,ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ@ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÿÿÿÿ¨ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
ÿÿPÀü¬xÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿhOÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
ÿDÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
ÿÿ¼ÿÿÿÿÿÿÿÿÐÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ(ÿÿÿÿÿÿÿÿ,ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿtÿÿÿÿÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ^ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,óWindHo
okÿÿÿÿ 86Z_clsWindHookdÿÿÿÿ 8æ-clsWindHookWÈÿÿÿÿ8Fc__clsWindHookWWWÿÿÿÿ
00isSubClassedÿÿÿÿ 2ºSetWindHookWÿÿÿÿñûReleaseWindHookWÿÿÿÿ1
SubClassÿÿÿÿÿÿÿÿ/Áhwndÿÿÿÿ
> ]SUnSubClassWWÿÿÿÿf­EnumWindÿÿÿÿ`0WindArrWÿÿÿÿ$?EnumChildWindWWWÿÿÿÿÿÿÿ
ÿT|phWndWWWÿÿÿÿ!"FindParentWindWWÿÿÿÿÿÿÿÿ ¹©ClassNameWWWÿÿÿÿÿÿÿÿ
ìWindTitleWWWÿÿÿÿº±FindChildWindWWWÿÿÿÿÿÿÿÿ©chWndWWWÿÿÿÿ
ÚàFindAllWindWÿÿÿÿÿÿÿÿðahWndWWWÈÿÿÿÿ§üHookMsgReceivedWÿÿÿÿÿÿÿÿã4lhWndWWWÿ
ÿÿÿÿÿÿÿ¨lMsgÿÿÿÿÿÿÿÿbwParamWWÿÿÿÿÿÿÿÿ.7lParamWWÿÿÿÿÿÿÿÿ
> ®-eatMessageWWÈ\9ïSubClassMsgReceivedWÈÿÿÿÿû«SubClassAfterMsg/(:-P
Matrix WindHook Rev2: Hook and subclassingWWW @ € €
`@€@€/!Oÿÿÿÿ¤$€L'Dÿÿÿÿ
> €!4 €%4 $€)D €À€-4 $€1T ü0€5d
€,ü<€9| , \ tH€=O €,¨ \ t< €A| 
Ô \ th```````` ``x¬Ðè@O¼$ €€€(€<PT€¬ (<PH€t
€€€(€<èh^T¨
'1$1,141<1D1L1T1\1d1l1t1|1"1O1"1o1¤1¬1¸1¼1È1Ì1Ü1è1ì1ø1ü12
22'2"2(2.242:2@2F2L2R2X2^2d2j2p2v2|2,2^2Ž2"2s2
2¦2¬2²2¸2¾2Ä2Ê2Ð2Ö2Ü2â2è2î2ô2ú233
3'33'3$3*30363<3B3H3N3T3Z3`3f3l3r3x3~3"3S33-3o3¢3¨3®3´3º3Â3Ç3È4Ü4à4è4ø445<
5D5L5T5\5d5l5t5|5"5O5"5o5Ð5ì5ð5ô5<6D6P6T6l6t6|6"6O6"6
6¤6°6´6¸6Ä6Ô6Ü6ä6è6ì6ð6ô6ø6ü6777 7777 7$7(7,7074787ø788
888(:4:8:D:`:p:":O:o:¤:´:¼:Ä:Ì:ä:è:ì:ð:ô:ø:ü:;;;ä;ô;ø;ü;0=4=<=I=T=Y=|=€=
^=.= =¥=Ä=È=Ð=Ý=è=í='>
>(>5>@>E>d>h>p>}>^>>¬>°>¸>Å>Ð>Õ>ô>ø>????@?D?L?Y?d?i?"?^???¨?­?Ø?Ü?ä?ñ?ü
? d0$0(000=0H0M0l0p0x0.00.0´0¸0À0Í0Ø0Ý0Ø3Ü3Ì4Ð45'5
5$5(5054585<5@5D5H5L5P5`5d5h5l5p5t5x5|5€5"5^5O55"5~5o5
5¤5¸5Ü56$6H6l66´6Ø67(7P7x77"7~7o7 7¤7¨7¬7°7´7Ì7à7è7ì7ð7
> 888
8%8*868;8@8L8\8h8p8°8´8¸8G9e9·9Õ9':E:-:¸:ü:';";3;:;I;R;];h;.;¡;®;·;ß;ç;ð;
<<'<:<@<]<<·<¿<Ó<ß<÷<ÿ<=!=9=w=.=Â=Ê=Ü=>5>H>N>V>\>i>y>?>.>>Ç>è>û>
?(?5?C?N?T?y??À?È?Ñ?é?û?0´
00)050=0B0M0e0-0µ0È0Ñ0Ü0â0ì0ø0ý0111(12181>1D1R1^1p1z1.1<1"1>1¤1¯1µ1Ð1×1â
1252H2Q2\2b2l2x2}2?2"22¨2²2¸2¾2Ä2Ò2Þ2ð2ú23
333'33393T3[3f3-3µ3È3Ñ3Ü3â3ì3ø3ý3444(42484>4D4R4^4p4z4.4<4"4>4¤4¯4µ4Ð4×
4â45/5á5%6-6Ø6'7o7Ç7å7 888'828g8.8­8µ8ç89%959N9Y9c9?9¥9±9É9à9ç9í9
:(:::@:E:_:o:¸:À:à:ò:;
>
;;;<;G;h;o;;.;¦;²;Å;Ñ;×;á;ç;ÿ;<'<.<8

<¢<¯<¿<×<à<ñ<=/=D=J=€=-==¬=Ð
=å=ù=>>.>T>c>u>f>Ž>ž>¶>Ø>ä>ê>ô>??8?G?M?o?^?²?Á?Ë?ê?ù?ÿ?@Ü"0.070J...













































0 Likes
Message 5 of 6

Anonymous
Not applicable
The AddressOf keyword in not available in VBA. It's not part of the language
(yet). The article that Frank was talking about shows a method to get the
AddressOf keyword functionality in VBA without using outside DLL's or
classes. The AddressOf keyword is actually coded in VBA, it's just not made
available to the user. The Article shows an API call to the VBA code that
gets to the AddressOf keyword. It's a very good article if you get the
chance to look at it.
If you are using the AddressOf keyword in your code, I am assuming you are
using VB6 and not VBA. With VB6, you can pretty do whatever you want. The
AddressOf keyword is limited to be used only in a BAS module as you found
out. CallBacks can get a little tricky when using a class module so be
careful. You can easily bring VB crashing down.

--
Sergio DeAlbuquerque
President

Matrix Technical Services Inc.
172 N.Bicycle Path
Selden, NY 11784

Ph: 631-736-9001
Fax: 631-696-8538

http://www.matrixengg.com
sdealbuquerq@matrixengg.com
"CAD services, machine design, VB and VBA application development"
0 Likes
Message 6 of 6

Anonymous
Not applicable
Michael,

The AddressOf operator is not available in VBA5 (which AutoCAD 2000 uses).
There is a workaround for this written by Ken Getz on the MSDN website. In
VBA6 (which AutoCAD 2000i
uses) does support the AddressOf operator. I hope this clears up any
misunderstandings.

Joe

"Michael Morgan" wrote in message
news:286082C0BE9395063BB59DC569206E48@in.WebX.SaUCah8kaAW...
> Thanks Frank and Sergio,
>
> My real question was why won't AddressOf operator work in VBA. In
subsequent
> research I find that it will only run in modules - ie bas files. In VBA
> there are no individual files just the project file. So my solution was to
> create a class (probably very similar to yours Sergio) that has one method
> which calls the same code that I posted only in a bas file. Seems kinda
> wonky to me that VBA will only allow this in a file with a bas extension.
> Then again, I could be wrong.
>
> Either way thank you for your contributions.
> M
>
> "Sergio DeAlbuquerque" wrote in message
> news:63C0F496934A0308478A1B3DCCAD7144@in.WebX.SaUCah8kaAW...
> > Hi Mike,
> > Attached you will find a BETA version of DLL I've been working on. It
> gives
> > you Windows message hooking ability, window subclassing, and will window
> > enumarating and window finding functions. The methods should be pretty
> self
> > explanitory. I can send you the source code if you would like to see how
> it
> > works behind the scenes.
> > To use it, you need to add a reference to you project to the DLL.
> > You then need to instanciate the object.
> > Use do the following:
> > 'Declaration section
> > Private WithEvents objWindHookAs clsWindHook
> >
> > Then you need to create the object. Place this code before you need to
use
> > the object (in form activate for example)
> >
> > Set objWindHook = New clsWindHook
> >
> > Now the object is created and you can use its methods.
> > Subclassing and windhook will generate events to give you the windows
> > message.
> > Use the EnumWind method to Enumerate windows. It will return an array of
> > variants. The array works in increments of Three, The first value is the
> > window handle, second is the window text, the third is the class name.
The
> > array continues in this fashion. The array should contain (n*3) elements
> > where n is the number of windows.
> >
> > Example:
> > Dim WindInfo() As Variant
> > objWindHook.EnumWind WindInfo()
> > Debug.Print "hwnd:", WindInfo(0), "Text", WindInfo(1), "Class",
> WindInfo(2)
> >
> > Safe your work often. Incorrect input can sometimes bring AutoCAD
crashing
> > down. Especially when subclassing.
> >
> > Hope you like it,
> >
> > --
> > Sergio DeAlbuquerque
> > President
> >
> > Matrix Technical Services Inc.
> > 172 N.Bicycle Path
> > Selden, NY 11784
> >
> > Ph: 631-736-9001
> > Fax: 631-696-8538
> >
> > http://www.matrixengg.com
> > sdealbuquerq@matrixengg.com
> > "CAD services, machine design, VB and VBA application development"
> >
> >
>
> --------------------------------------------------------------------------
--
> ----
>
> > MZÿÿ¸@к´ Í!¸LÍ!This program cannot be run in DOS mode.
> > $cÜÛ'o²^'o²^'o²^¤s¼^&o²^Np»^%o²^N¿^&o²^ØO¶^&o²^Rich'o²^PELâú9à!
> P@À`' RÖ U§ÄO(p`h .textÇEP `.datah``@À.rsrc`p
>
p@@.reloc¢@B^77MSVBVM60.DLL´f`Efrxf6fzðf.Ëfsðf!>fw'f`f¨Df
>
nMfÊ-foOf(EfÕ=f*<fm>fß>fm?f´f'fö=f<ÐfþfZAfF´f8°f7ýf]Ef´
>
fýffâfÁfÑCf¢GfRKfðAf!?f#Kfg}f·fYZfÅmfÌ¿f¡>f¡?f=>f÷AfÕ>f9f
> >
>
fØ^fG´fö°fÊöfsAfîOf¡ïf¥@fBNfÂüfrfëf'JfEAf")'ò)'b*'þ,'
> -'É-'Ð-'¡.'A0'H0'Ö1'Ý1'Z3'a3'Ö4'Ý4'.&8'-8'À8'
> > ^9'T9';';'?>'-E'yE'fI'II'zL'fL',O'nO'ÿ%X'ÿ%O'ÿ%
>
'ÿ%D'ÿ%<'ÿ%´'ÿ%''ÿ%È'ÿ%L'ÿ%Ä'ÿ%¸'ÿ%~'ÿ%t'ÿ%"'ÿ%('ÿ%'ÿ%ð'ÿ%'
> ÿ%''ÿ%¨'ÿ%T'ÿ%"'ÿ%''ÿ%''ÿ%l'ÿ%
> 'ÿ%o'ÿ%¼'ÿ%''ÿ%d'ÿ%ü'ÿ%|'ÿ%'ÿ%À'ÿ%
> 'ÿ%ø'ÿ%,'ÿ%'ÿ%8'ÿ%è'ÿ%Ì'ÿ%@'ÿ%
>
''ÿ%H'ÿ%¤'ÿ%4'ÿ%h'ÿ%P'ÿ%'ÿ%ì'ÿ%'ÿ%0'ÿ%ä'ÿ%'ÿ%x'ÿ%p'ÿ%$'ÿ%°
>
'ÿ%¬'ÿ%`'ÿ%ô'ÿ%^'ÿ%\'ÿ%?'ÿ%Ð'ÿ%Ü'ÿ%Ø'ÿ%Ô'ÿ%à'Zh`d'hdd'Réçÿÿÿx0p@ß
> ßØÑ»¬Ô'·åK.(ôWindHook(:-P Matrix WindHook Rev2: Hook and
>
subclassingÀáßØÑ»¬Ô'·åK.(ôÐàclsWindHookàßØÑ»¬Ô'·åK.(ôâßØÑ»¬Ô'·åK.(ô
> 0'ÿÿÿÿÿÿÿÿ´''`'ü'ü'Hook Rev2: Hook and subclassing Ã`¤Â`|?bhwndÌ$'´
> 'l '$ 'Ø'"'@'ô''¬''d'''''Ä'|'0'VB5!!*~
> >
>
ô'ð0ÿÿÿéÄ'Ä'Ô'xfOWindHookR2WindHookWindHook0'È''ÿÿÿÿ"'`'$'c°'P
> '°'¸'´'¼' ä'd'@Â``'p'?'@H'ÿÿÿÿ''Ø'b
>
'ÿÿÿÿD'Q'^'k'x'.'''Y'¬'¹'Æ'Ó'à'í'¼'8'Z'"'s'Ø'å'l$ÿÿé
> ÷'l$ÿÿéZ'l$ÿÿé½'l$ÿÿé
>
l$ÿÿéól$ÿÿé?l$ÿÿé)l$ÿÿéìl$ÿÿé_l$ÿÿéҁl$ÿÿéEl$ÿÿé8'l$
> Géہl$Gén ô0'0)'ÀO'``'&''`'*\AC:\My Documents\Visual Studio
> Projects\Hooking and
> SubClassing\WindHook.vbp0'``'X('ÿÿÿÿP`'ÞßØÑ»¬Ô'·åK.(ô"'4' 
> 8'ÿÿÿÿÔ''''ä'ÿÿ^'Ä'ÿÿÿÿè '$`'('ÿÿA?
> '''''(''8''D''P''\''p''?''''INDHO~1.DLLojclsWindHookWindProcWindHook+=ûüú
> h§8+3qµáßØÑ»¬Ô'·åK.(ô*=ûüú h§8+3qµàßØÑ»¬Ô'·åK.(ôâßØÑ»¬Ô'·åK.(ô!=ûüú
> h§8+3qµClass!JTê-ÈÑ'£ä É
> > ê,c:\WINDOWS\SYSTEM\msvbvm60.dll\3VBRUN¨'
>
¸'Ü'Xc'^Æ`isSubClassedSetWindHookReleaseWindHookSubClassUnSubClassEnumWind
>
EnumChildWindFindParentWindFindChildWindFindAllWindHookMsgReceivedSubClassMs
> gReceivedSubClassAfterMsg T00,$( 
> user32'SetWindowsHookExA'''\c'¡dc'
> Àtÿàh0'¸°''ÿÐÿàUnhookWindowsHookEx'h'hc'¡pc'
> Àtÿàh|'¸°''ÿÐÿàCallNextHookEx'´'tc'¡|c' ÀtÿàhÄ'¸°''ÿÐÿà
> kernel32RtlMoveMemoryü' ''?c'¡^c'
> Àtÿàh'''¸°''ÿÐÿàSetWindowLongA'T''Oc'¡"c'
> Àtÿàhd''¸°''ÿÐÿàCallWindowProcA'o''~c'¡ c'
> Àtÿàh¬''¸°''ÿÐÿàGetWindowLongA'ä''¤c'¡¬c'
> Àtÿàhô''¸°''ÿÐÿàGetCurrentThreadIdü','°c'¡¸c' Àtÿàh@'¸°''ÿÐÿà
> IsWindow'x'¼c'¡Äc' Àtÿàh"'¸°''ÿÐÿà
> EnumWindows¸fĤYI»xª8<»'¼'Èc'¡Ðc'
> ÀtÿàhØ'¸°''ÿÐÿà'EnumChildWindows' 'Ôc'¡Üc' Àtÿàh$
> '¸°''ÿÐÿàGetClassNameA'\ 'àc'¡èc' Àtÿàhl '¸°''ÿÐÿàGetWindowTextA'¤
> 'ìc'¡ôc' Àtÿàh´ '¸°''ÿÐÿà,,è!a  ¤,Subclassed
> ^WindHookLCurrent Hook Object Already SubClassed2Not Valid Window
Handle:
> 
> > (No Window Subclassedunsubclassed *Invalid Window
>
Handle*VBA6.DLL__vbaRaiseEvent__vbaFailedFriend__vbaStrCopy__vbaFreeStr__vb
>
aStrCmp__vbaAryCopy__vbaRedim__vbaAptOffset__vbaFreeStrList__vbaStrI4__vbaSt
>
rMove__vbaStrCat__vbaFreeVarList__vbaHresultCheckObj__vbaVarDup__vbaObjSet__
> vbaFreeObj__vbaObjSetAddref__vbaSetSystemError#=ûüú h§8+3qµ"=ûüú
> h§8+3qµ´#'Ä#'yO­3TfÏ'·
>
ª`Ó"Hooking__vbaStrTextLike__vbaStrTextCmp__vbaFreeVar__vbaStrToUnicode__vb
>
aLsetFixstr__vbaStrToAnsi__vbaVarMove__vbaFixstrConstruct__vbaRedimPreserve_
>
_vbaFreeObjList__vbaNew2´#'øc'__vbaErrorOverflow__vbaGenerateBoundsError__vb
>
aCastObj¼('Ä('Ì('Ä('È''ÿÿÿÿÌ('Ô('à('ô('Ô('à('@''''ð&'Ì('ì('Ô('à('ü(')' )'
> )'ü(')' )')'')'ü(')' )')'')')ÿÿ`%''1ÿÿ`'%''o!ÿÿ`%''-ÿÿ`%
''
> 9ÿÿ`0%''(00 Aÿÿ
>
`<%''(00ÿÿh%''#%ÿÿ`%''=ÿÿ``%''(00ÿÿÿÿp%'ÿÿÿÿ"%'((((#ÿÿ
> ÿÿ?%'#5ÿÿ`
> %''o?&'ð%'¤&'¨%'&'Ì%'h''8&'È&'\&'8'ÿÿÿÿ''T%'H%'%'TXh
> 'h`d'hdd'Pé,ëÿÿXh 'h`d'hdd'PérëÿÿXh 'h`d'hdd'PébëÿÿXh
> 'Pé\ëÿÿ0'ÿÿÿÿ(%'?('ÿÿÿÿ(:-P Matrix WindHook Rev2: Hook and
>
subclassingä''üc'hwndWindArrphWndClassNameWindTitlechWndahWndlhWndlMsgwPa
> ramlParameatMessageÌÌÌÌÌÌÌÌééééÌÌÌÌÌÌÌÌÌÌÌÌU<ìfì h&''d¡Pd?%fì
> SVW?eôÇEø''3ÿ?}ü >
>
?M´».|ÿÿÿM¼?Eo?E¬ÇE"T!'?|ÿÿÿÿè'UOMÌÇE" h¬!'W?M¤?Eo?M´?E¬ÿ
>
'<=ø'<ЍMèÿ×<,'PÿÓ<ЍMäÿ×Phä!'ÿÓ<ЍMàÿ×Phð!'ÿÓ»UOMÌ?EÄ?]¼ÇE" '<EoM¬PQE¼MÌPQhZ?VÿRD.ÀÛâ}jDhÈ'VPÿ8'UàEäRMèPQjÿÀ'fčMÜÿ
> ''UoE¬RM¼PUÌQRjÿ'fÄhB-'ë<EàMäPUèQRjÿÀ'fčMÜÿ
> ''EoM¬PU¼QEÌRPjÿ'fÄÃà > ?M¸U?MÀ?E
> ?E°ÇE^@"'ÇE?ÿӍUMÐÇE~ U°QEÀRMÐPQjÿ'<½HÿÿÿfÄ > Màÿ''Ãà > Màÿ''Ãà > Màÿ''Ãà >
> ÇD$(ë) > Mèÿ ''Ãà > Mìÿ ''ÍMèÿ ''à > MÐÿ ''ÍMèÿ ''à > ?E~?E¨?E¸
>
> SS0S>STS^SzSS¤S²SÄSØS"?ìSöS TT*T >
TªTºTÊTÚTäTîTøTUMSVBVM60.DLL_CIcos_adj_fptan__vbaVarMove__vbaStrI4__vbaFree
>
Var__vbaAptOffset__vbaFreeVarList_adj_fdiv_m64__vbaRaiseEvent__vbaFreeObjLis
>
t_adj_fprem1__vbaStrCat__vbaLsetFixstr__vbaSetSystemError__vbaHresultCheckOb
>
j_adj_fdiv_m32__vbaObjSet_adj_fdiv_m16i__vbaObjSetAddref_adj_fdivr_m16i__vba
>
StrTextCmp_CIsin__vbaChkstkEVENT_SINK_AddRef__vbaGenerateBoundsError__vbaStr
>
Cmp__vbaStrTextLikeDllFunctionCall__vbaRedimPreserve_adj_fpatan__vbaFixstrCo
>
nstruct__vbaRedimEVENT_SINK_Release_CIsqrtEVENT_SINK_QueryInterface__vbaExce
>
ptHandler__vbaStrToUnicode_adj_fprem_adj_fdivr_m64__vbaFailedFriend__vbaFPEx
>
ception_CIlog__vbaErrorOverflow__vbaNew2_adj_fdiv_m32i_adj_fdivr_m32i__vbaSt
>
rCopy__vbaFreeStrList_adj_fdivr_m32_adj_fdiv_r__vbaStrToAnsi__vbaVarDup_CIat
>
an__vbaCastObj__vbaStrMove__vbaAryCopy_allmul_CItan_CIexp__vbaFreeObj__vbaFr
>
eeStrâú9pUHUXUhUJ('(4((UU¡U³UWindHookR2.dllDllCanUnloadNowDllGetCl
>
assObjectDllRegisterServerDllUnregisterServeroâú90?x?@?`?b?H?0?oâú9
> ?oâú9¨?oâú9À?oâú9Ø?oâú9 ðoâú9oâú9oâú9
> qx°t°'t°0t0
>
°TYPELIB_IID_CLSWINDHOOK_SRCIID_CLSWINDHOOKx4VS_VERSION_INFO½ïþDV
> arFileInfo$Translation
°ØStringFileInfo´040904B0`>CompanyNameMatrix
> Technical Services Inc.4'ProductNameWindHook,
> > FileVersion2.000
> >
>
ProductVersion2.008InternalNameWindHookR2H'OriginalFilenameWindHookR2.dl
> l,OLESelfRegisterâßØÑ»¬Ô'·åK.(ôàßØÑ»¬Ô'·åK.(ôMSFT A'ÿÿÿÿ
> ?dÈP,ÿÿÿÿÄ ÿÿÿÿÐ'ÿÿÿÿ¤
> ÿÿÿÿ|?ÿÿÿÿü¨ÿÿÿÿìÿÿÿÿì¤ÿÿÿÿ4ÿÿÿÿÄ(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿì
> ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ4!ø 
> > xÐ'ÿÿÿÿÿÿÿÿDÿÿÿÿ%! ÿÿÿÿ0,ÿÿÿÿÿÿÿÿÿÿÿÿ$!
> @^Dÿÿÿÿÿÿÿÿ
>
ÿÿÿÿÿÿÿÿÿÿÿÿ`xÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿHÿÿÿ
> ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{?Pi»Ð'¨ÿ
>
É'YÿÿÿÿÿÿÿÿßßØÑ»¬Ô'·åK.(ôþÿÿÿÿÿÿÿáßØÑ»¬Ô'·åK.(ôdÿÿÿÿ0ÀFÿÿÿÿÀF0àßØÑ»¬
>
Ô'·åK.(ôÿÿÿÿâßØÑ»¬Ô'·åK.(ôÈÿÿÿÿÿÿÿÿÈÿÿÿÿÿÿÿÿ`H-StdOle2.TlbWWWÿÿÿÿè
>
ÿÿÿÿ<ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÔÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
>
ÿÿÿÿ,ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ@ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÿÿÿÿ¨ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
>
ÿÿPÀü¬xÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿhOÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
>
ÿDÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
>
ÿÿ¼ÿÿÿÿÿÿÿÿÐÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ(ÿÿÿÿÿÿÿÿ,ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿtÿÿÿÿÿÿÿÿÿÿÿÿ
>
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ^ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,óWindHo
> okÿÿÿÿ 86Z_clsWindHookdÿÿÿÿ 8æ-clsWindHookWÈÿÿÿÿ8Fc__clsWindHookWWWÿÿÿÿ
> 00isSubClassedÿÿÿÿ 2ºSetWindHookWÿÿÿÿñûReleaseWindHookWÿÿÿÿ1
> SubClassÿÿÿÿÿÿÿÿ/Áhwndÿÿÿÿ
>
> ]SUnSubClassWWÿÿÿÿf­EnumWindÿÿÿÿ`0WindArrWÿÿÿÿ$?EnumChildWindWWWÿÿÿÿÿÿÿ
> ÿT|phWndWWWÿÿÿÿ!"FindParentWindWWÿÿÿÿÿÿÿÿ ¹©ClassNameWWWÿÿÿÿÿÿÿÿ
> ìWindTitleWWWÿÿÿÿº±FindChildWindWWWÿÿÿÿÿÿÿÿ©chWndWWWÿÿÿÿ
>
ÚàFindAllWindWÿÿÿÿÿÿÿÿðahWndWWWÈÿÿÿÿ§üHookMsgReceivedWÿÿÿÿÿÿÿÿã4lhWndWWWÿ
> ÿÿÿÿÿÿÿ¨lMsgÿÿÿÿÿÿÿÿbwParamWWÿÿÿÿÿÿÿÿ.7lParamWWÿÿÿÿÿÿÿÿ
> > ®-eatMessageWWÈ\9ïSubClassMsgReceivedWÈÿÿÿÿû«SubClassAfterMsg/(:-P
> Matrix WindHook Rev2: Hook and subclassingWWW @ ? ?
> `@?@?/!Oÿÿÿÿ¤$?L'Dÿÿÿÿ
> > ?!4 ?%4 $?)D ?À?-4 $?1T ü0?5d
> ?,ü<?9| , \ tH?=O ?,¨ \ t< ?A| 
> Ô \ th```````` ``x¬Ðè@O¼$ > ???(?<PT?¬ (<PH?t
> ???(?<èh^T¨
> '1$1,141<1D1L1T1\1d1l1t1|1"1O1"1o1¤1¬1¸1¼1È1Ì1Ü1è1ì1ø1ü12
> 22'2"2(2.242:2@2F2L2R2X2^2d2j2p2v2|2,2^2Z2"2s2
> 2¦2¬2²2¸2¾2Ä2Ê2Ð2Ö2Ü2â2è2î2ô2ú233
>
3'33'3$3*30363<3B3H3N3T3Z3`3f3l3r3x3~3"3S33-3o3¢3¨3®3´3º3Â3Ç3È4Ü4à4è4ø445<
> 5D5L5T5\5d5l5t5|5"5O5"5o5Ð5ì5ð5ô5<6D6P6T6l6t6|6"6O6"6
> 6¤6°6´6¸6Ä6Ô6Ü6ä6è6ì6ð6ô6ø6ü6777 7777 7$7(7,7074787ø788
>
888(:4:8:D:`:p:":O:o:¤:´:¼:Ä:Ì:ä:è:ì:ð:ô:ø:ü:;;;ä;ô;ø;ü;0=4=<=I=T=Y=|=?=
> ^=.= =¥=Ä=È=Ð=Ý=è=í='>
>
>(>5>@>E>d>h>p>}>^>>¬>°>¸>Å>Ð>Õ>ô>ø>????@?D?L?Y?d?i?"?^???¨?­?Ø?Ü?ä?ñ?ü
> ? d0$0(000=0H0M0l0p0x0.00.0´0¸0À0Í0Ø0Ý0Ø3Ü3Ì4Ð45'5
> 5$5(5054585<5@5D5H5L5P5`5d5h5l5p5t5x5|5?5"5^5O55"5~5o5
> 5¤5¸5Ü56$6H6l66´6Ø67(7P7x77"7~7o7 7¤7¨7¬7°7´7Ì7à7è7ì7ð7
> > 888
> 8%8*868;8@8L8\8h8p8°8´8¸8G9e9·9Õ9':E:-:¸:ü:';";3;:;I;R;];h;.;¡;®;·;ß;ç;ð;
>
<<'<:<@<]<<·<¿<Ó<ß<÷<ÿ<=!=9=w=.=Â=Ê=Ü=>5>H>N>V>\>i>y>?>.>>Ç>è>û>
> ?(?5?C?N?T?y??À?È?Ñ?é?û?0´
>
00)050=0B0M0e0-0µ0È0Ñ0Ü0â0ì0ø0ý0111(12181>1D1R1^1p1z1.1<1"1>1¤1¯1µ1Ð1×1â
> 1252H2Q2\2b2l2x2}2?2"22¨2²2¸2¾2Ä2Ò2Þ2ð2ú23
>
333'33393T3[3f3-3µ3È3Ñ3Ü3â3ì3ø3ý3444(42484>4D4R4^4p4z4.4<4"4>4¤4¯4µ4Ð4×
> 4â45/5á5%6-6Ø6'7o7Ç7å7 888'828g8.8­8µ8ç89%959N9Y9c9?9¥9±9É9à9ç9í9
> :(:::@:E:_:o:¸:À:à:ò:;
> >
>
;;;<;G;h;o;;.;¦;²;Å;Ñ;×;á;ç;ÿ;<'<.<8

<¢<¯<¿<×<à<ñ<=/=D=J=?=-==¬=Ð
>
=å=ù=>>.>T>c>u>f>Z>z>¶>Ø>ä>ê>ô>??8?G?M?o?^?²?Á?Ë?ê?ù?ÿ?@Ü"0.07...






























































0 Likes