9 : D L L D L L D L L D L L D e l p h i D L L DLL DLL D L L D L L D L L Wi n 32 D L L D L L Wi n d o w s D L L D L L D L D L L 9.1 DLL Wi n d o w s D L L D L L K e r n e l 32. d l l U s e r 32. d l l G D I 32. d l l Wi n 32 K e r n e l. d l l U S E R 32. D L L Wi n 32 G D I. D L L D L A d v A P I 32. d l l C o m D l g 32. d l l / D L L Wi n d o w s ( D L L ) Wi n d o w s D L L Wi n d o w s (*. E X E ), D L L D L L. d l l. d r v ( ). s y s ( ). f o n ( ) Delphi DLL Delphi C++ 21 D L L (dynamic linking) D L L Wi n 32 D L L
9 235 D L L Wi n 32 D L L Wi n 32 3 D L L D L L 16 Wi n d o w s Wi n 32 D L L D L L Wi n 32 3 Win32 API D L L D L L D L L D L L DLL D L L D L D L L D L L Wi n 32 DLL $ I M A G E B A S E D L L D L L D L L ( V C L ) ( E X E D L L ) $ 400000 D L L DLL D L L D L D L L D L L ( ) Delphi 5 Image Base Address $ I M A G E B A S E D L L. e x e Wi n d o w s. d l l. e x e D L L Wi n 32 D L L 32 Wi n d o w s 16 Wi n d o w Wi n 32 Wi n d o w s ( ) Wi n d o w s Wi n d o w s 9.2 D e l p h i. d p r
236. e x e D e l p h i D e l p h i u s e s D L L D L L D L L ( D L L ) ( i m p o r t ) D L L M a x L i b. d l l M a x () e x t e r n a l D L L M a x U n i t u s e s D L L M a x () D L L M a x () D L L Wi n d o w s D L L 9.3 DLL D L L 9.3.1 D L L Wi n d o w s D e l p h i D L L D L L
9 237 1 6 Wi n d o w s D L L D L Wi n 32 D L L D L L D L D L L D L L D L L 9.3.2 D L L D L L D L D e l p h i ( D C U ) D C U D e l p h i D L L D L C + + V B D L L Wi n d o w s Win32 DLL Delphi 5 Win32 API Wi n d o w s w i n d o w s. p a s i n t e r f a c e D L L i m p l e m e n t a t i o n C l i e n t To S r e e n () U s e r 32. d l l, C l i e n t To S r e e n. 9.3.3 D L L D e l p h i Wi n d o w s Wi n d o w s D L L DLL OLE ActiveX 9.4 DLL D e l p h i D L L D e l p h i D L L 9.4.1 DLL D L L 1. DLL D L L P e n n i e s To C o i n s () 9-1 D L L 9-1 D L L
238 // R e s u l t { Q u a r t e r s D i m e s N i c k e l s P e n n i e s } { } D L L P e n n i e s I n t E x p o r t s D L L 2. u s e s D L L D L L D L L 9-2 P e n n i e s I n t. p a s 9-2 PenniesInt.pas P e n n i e s L i b. d l l { PENNIES.DLL } { } { e x p o r t }
9 239 { } t y p e T C o i n s R e c Pennies To Coins() P e n n i e s To C o i n s () T C o i n s R e c P e n n i e s I n t. p a s D L L P e n n i e s To C o i n s () i m p l e m e n t a t i o n D L L ( P e n n i e s L i b. d l l ) P E N N I E S L I B P e n n i e s To C o i n s () D L L D L L D L L Options Directories/Conditionals m a k e DLL name DLL D L L D L Wi n 32 D L L D L L D L DLL D L L P e n n i e s L i b. d l l P e n n i e s I n t. p a s P e n n i e s L i b. d l l P e n n i e s I n t. p a s D L L C + +, P e n n i e s I n t. p a s D L L C D - R O M P e n n i e s L i b. d l l 9.4.2 DLL D L L D L L D L L Wi n d o w s ( C + + Visual Basic) D L L a u t o - c r e a t e d T C a l e n d a r D L L
240 9-3 D L L C a l e n d a r L i b. d p r D L L 9-4 D l l F r m. p a s D L L 9-3 CalendarLib.dpr { } // D L L TApplication // D L L D L L F o r m i n t e r f a c e S h o w C a l e n d a r () D L L A H a n d l e A p p l i c a t i o n. H a n d l e 4 D e l p h i A p p l i c a t i o n D L L A p p l i c a t i o n D L L D L L A p p l i c a t i o n. H a n d l e D L L
9 241 A p p l i c a t i o n. H a n d l e A H a n d l e n i l A C a p t i o n C a p t i o n T C a l e n d a r T C a l e n d a D L L S h a r e M e m D L L u s e s D L L S h a r e M e m B o r l n d m m. d l l B o r l n d m m. d l l D L L B o r l n d m m. d l l P C a r S h o r t S t r i n g S h a r e M e m P C h a r P C h a r ShareMem S h a r e M e m Delphi/BCB DLL E X E D e l p h i D L L ShareMem ShareMem D L L D L 9.5 DLL D L L D L L D L L 9-4 D L L 9-4 DLL
242 S h o w C a l e n d a r () C l o s e C a l e n d a r () S h o w C a l e n d a r () 9-3 S h o w C a l - e n d a r () A p p l i c a t i o n. H a n d l e S h o w () S h o w M o d a l () S h o w M o d a l () DLL Form C l o s e C a l e n d a r () R e l e a s e ( S h o w C a l e n d a r () C l o s e C a l e n d a r () 9.6 Delphi DLL D L L D L D L L D L T M a d k E d i t T B u t t o n T L a b e l P e n n i e s L i b. d l l P e n n i e s To C o i n s () M a i n F r m. p a s 9-5 9-5 Pennies
9 243 M a i n F r m. p a s P e n n i e s I n t P e n n i e s I n t. p a s P e n n i e s L i b. d p r Wi n 32 P e n n i e s L i b. d l l i m p o r t P e n n i e s I n M a i n F r m. p a s i m p l e m e n t a t i o n P e n n i e s To C o i n s ()
244 M a i n F r m. p a s PChangeRec T C h a n g e R e c P E N N I E S L I B D L L D L L D L L D L L P a s c a l C/C++ Pascal D L L D L L D L D L L D L L D L L D L 9-6 D L L 9-6 D L L
9 245 T S h o w C a l e n d a r, C a l e n d a r L i b. d l l b t n G e t C a l e n d a r C l i c k () Win32 API L o a d L i b r a r y () F r e e L i b r a r y () G e t P r o c A d d r e s s () L o a d L i b r a r y ( ) l p L i b F i l e N a m e D L L 0 L o a d L i b r r y ( ) F r e e L i b r a r y ( ) F r e e L i b r a r y () L i b M o d u l e D L L D L L D L L G e t P r o c A d d r e s s ( ) G e t P r o c A d d r e s s () h M o d u l e h M o d u l L o a d L i b r a r y () T H a n d l e G e t P r o c A d d r e s s () n i l G e t L a s t E r r o r ( ) B u t t o n 1 O n C l i c k L o a d L i b r a r y () C A L D L L
246 G e t P r o c A d d r e s s () S h o w C a l e n d a r () S h o w C a l e n d a r @ S h o w C a l e n d a r () T S h o w C a l e n d a r f i n a l l y F r e e L i b r a r y () D L L 9.7 DLL D L L 9.7.1 / / D L L E n t r y P o i n t D L L b e g i n.. e n d D L L E n t r y P o i n t D Wo r d D L L P r o c / n i l / 9-1 / 9-1 DLL / D L L _ P R O C E S S _ AT TA C H D L L _ P R O C E S S _ D E TA C H D L L _ T H R E A D _ AT TA C H D L L _ T H R E A D _ D E TA C H L o a d L i b r a r y () D L L D L L D L L F r e e L i b r a r y () D L L D L L D L L TerminateThread() DLL_THREAD_DETACH 9.7.2 DLL / 9-7 D L L P r o c D L L / 9-7 DLLEntry. d p r
9 247 / D L L P r o c D L L b e g i n.. e n d D L L E n t r y P o i n t () d w R e a s o n 9-1 D L L D L L 9-8 9-8 DLL /
248
9 249 T B u t t o n B t n L o a d L i b D l l E n t r y L i b. d l l B t n F r e e L i b D L L B t n C r e a t e T h r e a d T T h r e a d BtnFreeThred TThread lblcount b t n L o a d L i b C l i c k () L o a d L i b r a r y ( D l l E n t r y L i b. d l l D L L D L L D L b e g i n.. e n d D L L / { D L L P r o c } { D L L } D L L b t n F r e e L i b C l i c k () F r e e L i b r a r y (), D L L D L L P r o c D L L E n t r y P r o c () D L L _ P R O C E S S _ D E TA C H b t n C r e a t e T h r e a d C l i c k () T T h r e a d D L L E n t r y P r o c () D L L _ T H R E A D _ AT TA C H b t n F r e e T h r e a d C l i c k () D L L E n t r y P r o c () D L L _ T H R E A D _ D E TA C H D L L E n t r y Te s t. d p r
250 9.8 DLL D L L Wi n 32 9.8.1 16 Delphi 1 6 D e l p h i D L L D L D L L D L { } { } Delphi 2 Delphi 5 Wi n 32 / Wi n 32 S y s U t i l s D L L u s e s D L L Win32 Delphi D e l p h i C++ Builder C C++ 16 D L L t r y.. e x c e p t DLL Delphi DLL Delphi Wi n 32 Wi n 3 E X C E P T I O N _ R E C O R D E x c e p t i o n I n f o r m a t i o n D e l p h i Delphi EXCEPTION_RECORD 9.8.2 Safecall S a f e c a l l C O M S a f e c a l l H R e s u l t S a f e c a l l S t d C a l l S a f e c a l l t r y.. e x c e p t e x c e p S a f e c a l l E x c e p t i o n H a n d l e r () H R e s u l t 16 9.9 Win32 DLL D L L Wi n d o w s A P I
9 251 D L L Win32 API D L L Win32 API D L L E n u m Windows() API E n u m Wi n d o w s () C a l l B a c k. d p r E n u m Wi n d o w s () 9-9 9-9 M a i n F o r m. p a s
252
9 253 E n u m Wi n d o w s () A P I 9.9.1 9-9 E n u m Wi n d o w s P r o c () I n t e g e r E n u m Wi n d o w s P r o c () E n u m Windows() API S t d C a l l Wi n 32 E n u m Wi n d o w s () A P I E n u m Wi n d o w s P r o c () E n u m Wi n d o w s P r o c () T Wi n d o w I n f o Wi n d o w I n f o l b Wi n I n f o. O b j e c t s O n D e s t r o y T Wi n d o w I n f o b t n G e t Wi n I n f o C l i c k () E n u m Wi n d o w s () E n u m Wi n d o w s P r o c () 9.9.2 T L i s t B o x S t y l e l b O w n e r D r a w T L i s t B o x T L i s t B o x. O n D r a w I t e m 9-9 l b Wi n I n f o D r a w I t e m () l b Wi n I n f o. O b j e c t s T Wi n d o w I n f o E n u m Wi n d o w s P r o c () 9.10 DLL D L L D L L D L L D L 9-10 D L L
254 9-10 S t r S r c h L i b. d l l D L L T F o u n d S t r P r o c S e a r c h S t r () D L L \ D L L C a l l B a c k C a l l B a c k D e m o. d p r d 9-11 9-11 DLL
9 255
256 T M e m o E d t S e a r c h S t r. Te x t m e m S t r S e a r c h S t r () E d t S e a r c h S t r. Te x t m e m S t r S t r P o s P r o c () C o u n t 1 9.11 DLL 16 Wi n d o w s 3 2 Wi n 32 D L L 16 Wi n d o w s 16 D L L D L L D L L Wi n 32 D L L D L D L L D L D L L 16 32 Wi n 32 16 12 9.11.1 DLL 9-12 D L L D L L G l o b a l D a t a 9-12 D L L S h a r e L i b
9 257
258 G l o b a l D a t a P G l o b a l D L L D a t a D L L D a t a. i n c $ I D L L / D L L E n t r y P o i n t () D L L O p e n S h a r e d D a t a () D L L C l o s e S h a r e d D a t a () 12 D L L Wi n 32 D L L DLL D L L D L L D L Win32 API A p p 1 M y F i l e. d a t A p p 1 A p p A p p 2 A p p 1 A p p 2 Wi n 32 Wi n 32 D L L D L L D L L 9-12 O p e n S h a r e D a t e () C r e a t e F i l e M a p p i n g ( M a p Vi e w O f F i l e () M a p Vi e w O f F i l e () D L L C r e a t e F i l e M a p p i n g ( ) $ F F F F F F F F ( D Wo r d (- 1 )) M a p Vi e w O f F i l e () G l o b a l D a t a G e t D L L D a t a () A G l o b a l D a t a ( ) D L L
9 259 C l o s e S h a r e D a t a ( ) 9.11.2 DLL A P P 1. d p r D L L A P P 2. d p r D L L A P P 1 A P P 2 9-13 A P P 1 9-13 APP1.dpr
260 D L L D a t a. i n c T G l o b a l D L L D a t a b t n G e t D L L D a t a C l i c k () G e t D L L D a t a () D L L D L O n C h a n g e D L L 9-14 A P P 2. d p r 9-14 APP2.dpr
9 261 T L a b e l t m Ti m e r O n Ti m e r A P P 1 A P P 2 9.12 DLL D L L D L L D L L D L L D L L DLL 4 D L L D L L 9-15 9-15 D L L
262 9-15 S t r C o n v e r t. i n c D L L D L L D L L D L L C o n v e r t S t r i n g () ( V M T ) V M T 13 V M T V M T V M T D e l p h i s e l f S T R I N G C O N V E RT L I B D L L a b s t r a c t D L L 9-16 T S t r i n g C o n v e r t 9-16 T S t r i n g C o n v e r t
9 263 D L L D L L I n i t S t r C o n v e r t () T S t r i n g C o n v e r t T S t r i n g C o n v e r t S T R I N G C O N V E RT L I B 9-17 D L L 9-17 S t r i n g C o n v e r t L i b. d l l D L L S h a r e M e m D L L D L L 9-18 D L L S t r C o n v e r t Te s t. d p r
264 9-18
9 265 9.13 D L L Wi n d o w s D e l p h i D L L D L L D L D L L D L L D L L