Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° DLL Π² Borland Delphi
ΠΡΠ°ΠΊ, ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΡ ΡΡΡΡΠΊΡΡΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΡΡ ΠΎ ΡΠ΅Ρ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°Ρ , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ. ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , ΡΡΠΎ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°. ΠΡΠΌΠ°Ρ, Π½Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΠΎΡΡΠ½ΡΡΡ ΡΠ΄ΠΎΠ±ΡΡΠ²ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ? ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π² Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠ΄Π°ΡΡ… Π§ΠΈΡΠ°ΡΡ Π΅ΡΡ >
Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° DLL Π² Borland Delphi (ΡΠ΅ΡΠ΅ΡΠ°Ρ, ΠΊΡΡΡΠΎΠ²Π°Ρ, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ)
Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° DLL Π² Borland Delphi
ΠΡΠ»ΠΈ Π²Π°Ρ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΠΎΠ΄ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ Windows, ΡΠΎ Π²Ρ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π΅ Π·Π½Π°ΡΡ ΠΎ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΠΎΠ΄ΡΠΎΠ΅Π΄ΠΈΠ½ΡΠ΅ΠΌΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ (dynamic link libraries — DLL). ΠΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π²Π·Π³Π»ΡΠ½ΡΡΡ Π½Π° ΡΠΏΠΈΡΠΎΠΊ ΡΠ°ΠΉΠ»ΠΎΠ², ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡΡ Π² ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ Windows. ΠΠΎΡΠΎΠΉ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Π΄ΠΎΡΡΠΈΠ³Π°Π΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠΎΡΠ΅Π½. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΌΠ½Π΅ ΠΊΠ°ΠΆΠ΅ΡΡΡ, Π½Π΅ ΡΡΠΎΠΈΡ ΠΎΡΡΠΈΡΠ°ΡΡ ΡΠΎΡ ΡΠ°ΠΊΡ, ΡΡΠΎ DLL ΡΠ²Π»ΡΡΡΡΡ Π½Π΅ΠΎΡΡΠ΅ΠΌΠ»Π΅ΠΌΠΎΠΉ ΡΠ°ΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌ ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²Π° Microsoft Windows. ΠΠ΄Π½Π°ΠΊΠΎ Π΄Π»Ρ Π²Π°Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅ΠΎΡΠ΅Π²ΠΈΠ΄Π½Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΏΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π ΡΠ°ΠΌΠΊΠ°Ρ Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ°ΡΡΠΈ ΠΌΡ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ°Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ DLL ΠΈ ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π²Π°ΡΠΈΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ.
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° Π΄Π°Π²Π°ΠΉΡΠ΅ Π²ΡΡΡΠ½ΠΈΠΌ, ΡΡΠΎ ΡΠΎΠ±ΠΎΠΉ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌΠ°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°. ΠΡΠ°ΠΊ, DLL — ΡΡΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈ Π·Π°ΠΊΠΎΠ½ΡΠ΅Π½Π½ΡΡ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠΎΠ΄Π°, ΡΠΎΡ ΡΠ°Π½Π΅Π½Π½ΡΡ Π² ΡΠ°ΠΉΠ»Π΅ Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ .dll. ΠΡΠΎΡ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π·Π°ΠΏΡΡΠ΅Π½ Π½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ (ΡΠ°ΠΊΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π°Π·ΡΠ²Π°ΡΡΡΡ Π²ΡΠ·ΡΠ²Π°ΡΡΠΈΠΌΠΈ ΠΏΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅), Π½ΠΎ ΡΠ°ΠΌΠ° DLL Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΌ ΡΠ°ΠΉΠ»ΠΎΠΌ.
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π΄Π²Π° ΡΠΈΠΏΠ° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ — ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠ΅ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠ΅ΡΡΡΡΠΎΠ². ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎ Π½Π΅ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π² ΠΎΠ΄Π½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡΡ ΠΈ ΠΊΠΎΠ΄ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ ΡΠ΅ΡΡΡΡΡ. ΠΡΠΎΡΡΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° Π±ΡΠ²Π°Π΅Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ ΡΠ°Π·Π½Π΅ΡΡΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ΅ΡΡΡΡΡ Π² ΡΠ°Π·Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ.
ΠΡΠ°ΠΊ, ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠ΅ΡΡ Π² Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ Π½Π° Π΄Π²Π° ΡΠΈΠΏΠ°: ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π²ΡΠ·Π²Π°Π½Ρ ΠΈΠ· Π΄ΡΡΠ³ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ:
Screen.Cursors[myCursor] := LoadCursor (HInstance, MYCURSOR ");
LoadCursor — ΡΡΠ½ΠΊΡΠΈΡ Windows API, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈΠ· Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ User 32.dll. ΠΡΡΠ°ΡΠΈ, ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ Ρ ΡΠ°Π½ΠΈΠΌΡΡ Π² Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ ΡΠ΅ΡΡΡΡΠΎΠ² ΠΌΠΎΠ³ΡΡ ΡΠ²Π»ΡΡΡΡΡ ΡΠ°ΠΊΠΈΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΈ Windows, ΠΊΠ°ΠΊ Π΄ΠΈΠ°Π»ΠΎΠ³ ΠΎΡΠΊΡΡΡΠΈΡ ΡΠ°ΠΉΠ»Π°, Π΄ΠΈΠ°Π»ΠΎΠ³ ΠΏΠ΅ΡΠ°ΡΠΈ ΠΈΠ»ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΡΠΈΠ½ΡΠ΅ΡΠ°. ΠΡΠΈ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΈ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π² ΡΠ°ΠΉΠ»Π΅ Comctl32.dll. ΠΠ΄Π½Π°ΠΊΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΡΠ·ΠΎΠ²Π° ΡΠΎΡΠΌ ΡΡΠΈΡ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ², ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π½Π΅ Π·Π°Π΄ΡΠΌΡΠ²Π°ΡΡΡ, Π³Π΄Π΅ Ρ ΡΠ°Π½ΠΈΡΡΡ ΠΈΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅.
ΠΡΠΎΡΠΎΠΉ ΡΠΈΠΏ ΠΏΡΠΎΡΠ΅Π΄ΡΡ — ΡΡΠΎ ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π²Π½ΡΡΡΠΈ ΡΠ°ΠΌΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ.
ΠΡΠ³ΡΠΌΠ΅Π½ΡΡ Π² ΠΏΠΎΠ»ΡΠ·Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ DLL
ΠΡΠ°ΠΊ, ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΡ ΡΡΡΡΠΊΡΡΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΡΡ ΠΎ ΡΠ΅Ρ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°Ρ , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ. ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , ΡΡΠΎ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°. ΠΡΠΌΠ°Ρ, Π½Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΠΎΡΡΠ½ΡΡΡ ΡΠ΄ΠΎΠ±ΡΡΠ²ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ? ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π² Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠ΄Π°ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· ΡΠ²ΠΎΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, Π½Π΅ ΡΠ°ΡΠΊΡΡΠ²Π°Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΡ ΠΊΠΎΠ΄ΠΎΠ². Π ΡΠ΅ΠΌ ΡΠΎΠ³Π΄Π° ΡΡΠΎ Π»ΡΡΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ², ΡΠΏΡΠΎΡΠΈΡΠ΅ Π²Ρ? Π ΡΠ΅ΠΌ, ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ, Ρ ΡΠ°Π½ΡΡΠΈΠ΅ΡΡ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅, ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π²ΡΠ·Π²Π°Π½Ρ Π½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈΠ· ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΡ Π½Π΅ Π½Π° Object Pascal, Π°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ C++Builder, Visual Basic, Visual C++ ΠΈ Ρ. Π΄. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°Π΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π½Π° ΠΏΡΠΈΠ½ΡΠΈΠΏ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, Π½ΠΎ ΡΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. ΠΠ²ΡΡΠΈΡ Π·Π°ΠΌΠ°Π½ΡΠΈΠ²ΠΎ? ΠΠ½Π΅ ΠΊΠ°ΠΆΠ΅ΡΡΡ, Π΄Π°ΠΆΠ΅ ΠΎΡΠ΅Π½Ρ. ΠΠΎ ΡΡΠΎ Π΅ΡΠ΅ Π½Π΅ Π²ΡΠ΅.
ΠΠΎ-Π²ΡΠΎΡΡΡ , ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ DLL ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ΄ΠΈΠ½ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΡΡ ΠΏΠ°ΠΌΡΡΡ ΠΊΠΎΠ΄Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ. Π ΠΏΡΠΈΠΌΠ΅ΡΡ, Π΅ΡΠ»ΠΈ Π²Ρ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄ΠΏΡΠΈΡΡΠΈΡ, ΡΠΎ Π²ΠΏΠΎΠ»Π½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΠΎ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠΎΠ·Π΄Π°Π½Π½ΡΡ Π²Π°ΠΌΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ Π±ΡΠ΄ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΎΠ΄Π½ΠΈ ΠΈ ΡΠ΅ ΠΆΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ, ΡΠΎΡΠΌΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ΅ΡΡΡΡΡ. ΠΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ, ΡΡΠΎ ΠΏΡΠΈ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΎΠ±ΡΠΈΡ Π΄Π»Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π΄Π°Π½Π½ΡΡ Π² DLL ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΠΈ ΠΊΠ°ΠΊ Π΄ΠΈΡΠΊΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°, ΡΠ°ΠΊ ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ, ΠΈΠ½ΠΎΠ³Π΄Π° ΠΎΡΠ΅Π½Ρ Π΄Π°ΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠΌΡ.
Π-ΡΡΠ΅ΡΡΠΈΡ , ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΡΡ Π²ΠΎΡ ΠΎ ΡΠ΅ΠΌ. ΠΡΠ΅Π³ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π»Π΅Ρ Π½Π°Π·Π°Π΄ ΠΏΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Π²Ρ ΠΌΠΎΠ³Π»ΠΈ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π½Π΅ Π²ΠΎΠ»Π½ΠΎΠ²Π°ΡΡΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΡ Π²Π°ΡΠΈΡ ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ² Π³Π΄Π΅-Π»ΠΈΠ±ΠΎ, ΠΊΡΠΎΠΌΠ΅ Π²Π°ΡΠ΅ΠΉ ΡΡΡΠ°Π½Ρ. Π― Ρ ΠΎΡΡ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° Π½Π° Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ·ΡΠΊΠΈ ΡΠ΅ΠΊΡΡΠ° Π½Π° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ (ΠΏΡΠ½ΠΊΡΡ ΠΌΠ΅Π½Ρ, ΠΊΠ½ΠΎΠΏΠΊΠΈ, Π²ΡΠΏΠ°Π΄Π°ΡΡΠΈΠ΅ ΡΠΏΠΈΡΠΊΠΈ, ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠΈ), ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ ΠΈ Ρ. Π΄. Π½Π΅ ΡΡΠΎΡΠ»Π° ΡΠ°ΠΊ ΠΎΡΡΡΠΎ, ΠΊΠ°ΠΊ ΡΠ΅ΠΉΡΠ°Ρ. ΠΠ΄Π½Π°ΠΊΠΎ, Ρ ΠΏΠΎΠ²ΡΠ΅ΠΌΠ΅ΡΡΠ½ΡΠΌ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΠ½ΡΠ΅ΡΠ½Π΅ΡΠ° Ρ Π²Π°Ρ ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π±ΡΡΡΠΎΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π³ΠΎΡΠΎΠ²ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΡ ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ² ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π² Π»ΡΠ±ΡΡ ΡΠΎΡΠΊΡ ΠΌΠΈΡΠ°. Π ΡΡΠΎ Π±ΡΠ΄ΡΡ Π΄Π΅Π»Π°ΡΡ Ρ Π²Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ Π³Π΄Π΅-Π½ΠΈΠ±ΡΠ΄Ρ Π² ΠΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½Π½ΡΡ ΠΡΠ°Π±ΡΠΊΠΈΡ ΠΠΌΠΈΡΠ°ΡΠ°Ρ , Π΅ΡΠ»ΠΈ ΠΊΡΠΎΠΌΠ΅ ΠΊΠ°ΠΊ ΠΏΠΎ-ΡΡΡΡΠΊΠΈ, ΠΎΠ½Π° Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ ΠΎΠ±ΡΠ°ΡΡΡΡ Π½Π΅ ΡΠΌΠ΅Π΅Ρ? ΠΡ ΡΠ°ΠΌΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΡΠ΅Π½ΠΈΡΡ ΡΡΠΎΡ ΡΡΡΠ΅ΠΊΡ, Π΅ΡΠ»ΠΈ Ρ ΠΎΡΡ ΡΠ°Π· Π½Π° ΡΠΊΡΠ°Π½Π΅ Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ° Π²ΠΌΠ΅ΡΡΠΎ Ρ Π΄Π΅ΡΡΡΠ²Π° Π·Π½Π°ΠΊΠΎΠΌΠΎΠ³ΠΎ ΡΡΡΡΠΊΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ «Π°ΡΠ°Π±ΡΠΊΠ°Ρ Π²ΡΠ·Ρ» (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ·-Π·Π° «ΡΠ±ΠΎΡ» ΡΡΠΈΡΡΠΎΠ²). ΠΡΠ°ΠΊ, ΡΠΆΠ΅ ΡΠ΅ΠΉΡΠ°Ρ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΡ Π²Π°ΡΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² Π΄ΡΡΠ³ΠΈΡ ΡΡΡΠ°Π½Π°Ρ (Π΅ΡΠ»ΠΈ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, Ρ Π²Π°Ρ Π΅ΡΡΡ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±ΠΎΠ»ΡΡΠ΅ ΠΏΡΠΈΠ±ΡΠ»ΠΈ). Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, Π²ΡΡΠ°Π΅Ρ Π²ΠΎΠΏΡΠΎΡ Π±ΡΡΡΡΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π²Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ·ΡΠΊΠΈ. ΠΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΏΡΡΠ΅ΠΉ ΠΌΠΎΠΆΠ΅Ρ ΡΠ²Π»ΡΡΡΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ΅ΡΡΡΡΠΎΠ² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² Π²Π½ΡΡΡΠΈ DLL. Π ΠΏΡΠΈΠΌΠ΅ΡΡ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΠ΄Π½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π²Π΅ΡΡΠΈΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π±ΡΠ΄Π΅Ρ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠ·ΡΠΊΠ°Ρ .
ΠΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ, Π²ΡΡΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ Π»ΠΈΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Π² ΠΏΠΎΠ»ΡΠ·Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΏΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΡΠ°ΠΊ, Π½Π°Π΄Π΅ΡΡΡ, Π²Ρ Π²ΡΠ΅ Π΅ΡΠ΅ Π·Π°ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΎΠ²Π°Π½Ρ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΡΠ·Π½Π°ΡΡ, ΠΊΠ°ΠΊ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ, DLL ΡΠΎΠ·Π΄Π°ΡΡΡΡ. ΠΡΠ»ΠΈ ΡΠ°ΠΊ, ΡΠΎ Π²ΠΏΠ΅ΡΠ΅Π΄.
ΠΡΠ½ΠΎΠ²Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ DLL
Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Π½Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ Π½Π΅ΠΊΠΈΠΉ ΡΠ²Π΅ΡΡ ΡΠ»ΠΎΠΆΠ½ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ, Π΄ΠΎΡΡΡΠΏΠ½ΡΠΉ Π»ΠΈΡΡ ΠΈΠ·Π±ΡΠ°Π½Π½ΡΠΌ. ΠΡΠ»ΠΈ Π²Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Ρ ΠΎΡΠΎΡΠΎ Π·Π½Π°ΠΊΠΎΠΌΡ Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° Object Pascal, ΡΠΎ Π²Π°ΠΌ Π½Π΅ ΡΠΎΡΡΠ°Π²ΠΈΡ ΠΎΡΠΎΠ±ΠΎΠ³ΠΎ ΡΡΡΠ΄Π° Π½Π°ΡΡΠΈΡΡΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΎΠΌ DLL. ΠΡΠ°ΠΊ, ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ DLL, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π½Π°ΡΡ, Π° Π² Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠΈ ΡΡΠ°ΡΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π΅ΠΌ ΡΠ²ΠΎΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ.
ΠΠ°ΠΊ ΠΈ Π»ΡΠ±ΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ, ΠΌΠΎΠ΄ΡΠ»Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈΠΌΠ΅Π΅Ρ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠΎΡΠΌΠ°Ρ. ΠΠ·Π³Π»ΡΠ½ΠΈΡΠ΅ Π½Π° Π»ΠΈΡΡΠΈΠ½Π³, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΉ Π½ΠΈΠΆΠ΅.
library MyFirstDLL;
uses.
SysUtils,.
Classes,.
Forms,.
Windows;
procedure HelloWorld (AForm: TForm);
begin.
MessageBox (AForm.Handle, Hello world! " ,.
DLL Message Box ", MB_OK or MB_ICONEXCLAMATION);
end;
exports.
HelloWorld;
begin.
end.
ΠΠ΅ΡΠ²ΠΎΠ΅, Π½Π° ΡΡΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΎΠ±ΡΠ°ΡΠΈΡΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ library, Π½Π°Ρ ΠΎΠ΄ΡΡΠ΅Π΅ΡΡ Π²Π²Π΅ΡΡ Ρ ΡΡΡΠ°Π½ΠΈΡΡ. Library ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΡΠΎΡ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΊΠ°ΠΊ ΠΌΠΎΠ΄ΡΠ»Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ DLL. ΠΠ°Π»Π΅Π΅ ΠΈΠ΄Π΅Ρ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ. Π Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΈΠΌΠ΅Π΅ΠΌ Π΄Π΅Π»ΠΎ Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅ΠΉ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ: HelloWorld. ΠΡΠΈΡΠ΅ΠΌ ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π΄Π°Π½Π½Π°Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° ΠΏΠΎ ΡΡΡΡΠΊΡΡΡΠ΅ Π½ΠΈΡΠ΅ΠΌ Π½Π΅ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ΡΠ΅Ρ , ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΡΠ΅ Π² ΠΌΠΎΠ΄ΡΠ»ΠΈ ΡΠ²ΠΎΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ exports ΡΠΈΠ³Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ Π½ΠΈΠΆΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ/ΠΈΠ»ΠΈ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π΄ΠΎΡΡΡΠΏΠ½Ρ ΠΈΠ· Π²ΡΠ·ΡΠ²Π°ΡΡΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ (Ρ.Π΅. ΠΎΠ½ΠΈ ΠΊΠ°ΠΊ Π±Ρ «ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΡΡΡΡ» ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ). ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ΅ ΡΠΊΡΠΏΠΎΡΡΠ° ΠΌΡ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΡΡΡΡ ΠΏΠΎΠ·ΠΆΠ΅.
Π, Π½Π°ΠΊΠΎΠ½Π΅Ρ, Π² ΠΊΠΎΠ½ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ ΡΠ»ΠΎΠ²Π° begin ΠΈ end. ΠΠ½ΡΡΡΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ. ΠΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠ°ΡΡΠΎ ΡΡΠΎΡ Π±Π»ΠΎΠΊ ΠΎΡΡΠ°Π΅ΡΡΡ ΠΏΡΡΡΡΠΌ.
ΠΠ°ΠΊ ΡΠΆΠ΅ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΎΡΡ Π²ΡΡΠ΅, Π²ΡΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΠΌΡΠ΅ Π² DLL, ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠ°Π·Π΄Π΅Π»Π΅Π½Ρ Π½Π° Π΄Π²Π΅ Π³ΡΡΠΏΠΏΡ: ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌΡΠ΅ (Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΡΠ΅ ΠΈΠ· Π΄ΡΡΠ³ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ) ΠΈ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅. ΠΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ, Π²Π½ΡΡΡΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΎΠΏΠΈΡΠ°Π½Ρ ΠΊΠ»Π°ΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΠΌΠ΅ΡΠΎΠ΄Ρ, Π½ΠΎ Π² ΡΠ°ΠΌΠΊΠ°Ρ Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ°ΡΡΠΈ Ρ Π½Π΅ Π±ΡΠ΄Ρ Π½Π° ΡΡΠΎΠΌ ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ.
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ, Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΡΡ Π² ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ ΡΠ΅ΠΊΡΡΠ΅ΠΉ DLL, Π½ΠΈΡΠ΅ΠΌ Π½Π΅ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΠΎΡ ΠΈΡ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ² Π² ΠΎΠ±ΡΡΠ½ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ -ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ . ΠΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ° Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π»ΠΈΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π²ΡΠ·ΡΠ²Π°ΡΡΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ ΠΊ Π½ΠΈΠΌ Π΄ΠΎΡΡΡΠΏΠ°. ΠΠ½Π° ΠΏΡΠΎΡΡΠΎ Π½Π΅ Π±ΡΠ΄Π΅Ρ Π½ΠΈΡΠ΅Π³ΠΎ Π·Π½Π°ΡΡ ΠΎΠ± ΠΈΡ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΡ, ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΎΠ΄Π½ΠΈ ΠΊΠ»Π°ΡΡΡ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π·Π½Π°ΡΡ ΠΎ ΡΠ΅Ρ ΠΌΠ΅ΡΠΎΠ΄Π°Ρ , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΠΈΡΠ°Π½Ρ Π² ΡΠ΅ΠΊΡΠΈΠΈ private Π΄ΡΡΠ³ΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ².
Π Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ°ΠΌ ΠΈ ΡΡΠ½ΠΊΡΠΈΡΠΌ, DLL ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΊΠΎΡΠΎΡΡΠΌ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅. ΠΠ»Ρ 16-Π±ΠΈΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΡΡΠΈ Π΄Π°Π½Π½ΡΠ΅ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π»ΠΈ Π² Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ΅ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΡ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΡΡ ΠΏΠ°ΠΌΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΠ΅ΠΊΡΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ. ΠΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, Π΅ΡΠ»ΠΈ ΠΎΠ΄Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ a Π½Π° 100, ΡΠΎ Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ a Π±ΡΠ΄Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 100. ΠΠ»Ρ 32-Π±ΠΈΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΡΡΠΎ Π½Π΅ ΡΠ°ΠΊ. Π’Π΅ΠΏΠ΅ΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½Π°Ρ ΠΊΠΎΠΏΠΈΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ Π΄Π°Π½Π½ΡΡ .
ΠΠΊΡΠΏΠΎΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈΠ· DLL
ΠΠ°ΠΊ ΡΠΆΠ΅ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΎΡΡ Π²ΡΡΠ΅, Π΄Π»Ρ ΡΠΊΡΠΏΠΎΡΡΠ° ΠΏΡΠΎΡΠ΅Π΄ΡΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈΠ· DLL, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ export. ΠΡΠ΅ ΡΠ°Π· ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΉ Π²ΡΡΠ΅ Π»ΠΈΡΡΠΈΠ½Π³ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ MiFirstDll. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° HelloWorld ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° ΠΊΠ°ΠΊ ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌΠ°Ρ, ΡΠΎ ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΡΠ·Π²Π°Π½Π° Π½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈΠ· Π΄ΡΡΠ³ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΈΠ»ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π‘ΡΡΠ΅ΡΡΠ²ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ ΡΠΊΡΠΏΠΎΡΡΠ° ΠΏΡΠΎΡΠ΅Π΄ΡΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ: ΡΠΊΡΠΏΠΎΡΡ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΠΈ ΡΠΊΡΠΏΠΎΡΡ ΠΏΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠΎΠ²ΠΎΠΌΡ Π½ΠΎΠΌΠ΅ΡΡ.
ΠΠ°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠΊΡΠΏΠΎΡΡΠ° — ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ. ΠΠ·Π³Π»ΡΠ½Π΅ΠΌ Π½Π° ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ Π½ΠΈΠΆΠ΅ ΡΠ΅ΠΊΡΡ:
exports.
SayHello,.
DoSomething,.
DoSomethingReallyCool;
Π‘Π»Π΅Π΄ΡΠ΅Ρ ΠΎΠ±ΡΠ°ΡΠΈΡΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΎ, ΡΡΠΎ Delphi Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π°Π·Π½Π°ΡΠ°Π΅Ρ ΠΏΠΎΡΡΠ΄ΠΊΠΎΠ²ΡΠΉ Π½ΠΎΠΌΠ΅Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ (ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ΅) Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΠ΅ Π²Ρ Π΅Π³ΠΎ ΡΠ²Π½ΠΎ ΠΈΠ»ΠΈ Π½Π΅Ρ. Π―Π²Π½ΠΎΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π°ΠΌ Π»ΠΈΡΠ½ΠΎ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΏΠΎΡΡΠ΄ΠΊΠΎΠ²ΡΠΌ Π½ΠΎΠΌΠ΅ΡΠΎΠΌ ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ»ΠΈ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ.
ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π»ΠΈ Π²Π°Ρ ΠΊΠΎΠ΄Π΅ΠΊ Π² DLL ΠΈΠ»ΠΈ Π² Π²ΡΠ·ΡΠ²Π°ΡΡΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ IsLibrary. ΠΠ½Π° ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΠ‘Π’ΠΠΠ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΠΊΠΎΠ΄ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈ ΠΠΠΠ¬ Π² ΡΠ»ΡΡΠ°Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΠΈΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ· Π²ΡΠ·ΡΠ²Π°ΡΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΡΠΎΠΌΠ΅ ΡΡΠΎΠ³ΠΎ, Π² ΠΏΠΎΡΡΠ°Π²ΠΊΡ Delphi Π²Ρ ΠΎΠ΄ΠΈΡ Π²Π΅ΡΡΠΌΠ° ΠΏΠΎΠ»Π΅Π·Π½Π°Ρ ΡΡΠΈΠ»ΠΈΡΠ° tdump, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π΄Π°Π½Π½ΡΠ΅ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊΠ°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΠ΅ΡΡΡ ΠΈΠ· ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ DLL.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ DLLProc
ΠΡΡΠ΅ Ρ ΡΠΆΠ΅ Π³ΠΎΠ²ΠΎΡΠΈΠ» ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΠΊΠΎΠ΄ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ Π² Π±Π»ΠΎΠΊ begin… end. ΠΠ΄Π½Π°ΠΊΠΎ ΠΊΡΠΎΠΌΠ΅ ΡΡΠΎΠ³ΠΎ Π·Π°ΡΠ°ΡΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠ΅ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ Π²ΡΠ³ΡΡΠ·ΠΊΠΈ DLL ΠΈΠ· ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ. Π ΠΎΡΠ»ΠΈΡΠΈΠΈ ΠΎΡ Π΄ΡΡΠ³ΠΈΡ ΡΠΈΠΏΠΎΠ² ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ, ΠΌΠΎΠ΄ΡΠ»Ρ DLL Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π½ΠΈ ΡΠ΅ΠΊΡΠΈΠΈ initialization, Π½ΠΈ ΡΠ΅ΠΊΡΠΈΠΈ finalization. Π ΠΏΡΠΈΠΌΠ΅ΡΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠ΄Π΅Π»ΠΈΡΡ ΠΏΠ°ΠΌΡΡΡ Π² Π³Π»Π°Π²Π½ΠΎΠΌ Π±Π»ΠΎΠΊΠ΅, ΠΎΠ΄Π½Π°ΠΊΠΎ Π½Π΅ ΠΏΠΎΠ½ΡΡΠ½ΠΎ, Π³Π΄Π΅ ΡΡΠ° ΠΏΠ°ΠΌΡΡΡ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½Π°. ΠΠ»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ DLLProc — ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½Π°Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ°, Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΠ°Ρ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΌΠΎΠΌΠ΅Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ DLL.
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠΊΠ°Π·Π°ΡΡ ΠΎ ΡΠ°ΠΌΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½Π΅ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΡ DLLProc. ΠΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠ°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΡ EN-US «>Windows Π² ΠΌΠΎΠΌΠ΅Π½ΡΡ ΡΠ²ΠΎΠ΅ΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈ Π²ΡΠ³ΡΡΠ·ΠΊΠΈ ΠΈΠ· ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ Π² ΡΠ΅Ρ ΡΠ»ΡΡΠ°ΡΡ , ΠΊΠΎΠ³Π΄Π° ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠΉ ΠΏΡΠΎΡΠ΅ΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ/ΠΈΠ»ΠΈ ΡΠ΅ΡΡΡΡΡ, Ρ ΡΠ°Π½ΡΡΠΈΠ΅ΡΡ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅, Π·Π°Π³ΡΡΠΆΠ°Π΅ΡΡΡ Π² ΠΏΠ°ΠΌΡΡΡ. Π’Π°ΠΊΠ°Ρ ΡΠΈΡΡΠ°ΡΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΠΊΠΎΠ³Π΄Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ° Π΄Π»Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ style= «mso-spacerun: yes «>Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π²Ρ ΠΈΠΌΠ΅Π»ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ, ΡΡΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡΡ Π² ΡΠ°ΠΊΠΈΠ΅ ΠΌΠΎΠΌΠ΅Π½ΡΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΠΈΡΠ°ΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈ Π±ΡΠ΄Π΅Ρ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½Π° Π·Π° ΡΠ°ΠΊΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ. Π ΠΏΡΠΈΠΌΠ΅ΡΡ, ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
procedure MyFirstDLLProc (Reason: Integer);
begin.
if Reason = DLL_PROCESS_DETACH then.
{DLL is unloading. Cleanup code here.}.
end;
ΠΠ΄Π½Π°ΠΊΠΎ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π½Π΅ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° MyFirstDllProc ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½Π° Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Π½ΡΡ Π²ΡΡΠ΅ ΡΠΈΡΡΠ°ΡΠΈΠΉ. ΠΠΎΡΡΠΎΠΌΡ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ Π°Π΄ΡΠ΅Ρ Π½Π°ΡΠ΅ΠΉ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ DLLProc. ΠΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π² Π±Π»ΠΎΠΊΠ΅ begin… end ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊ:
begin.
DLLProc := @MyDLLProc;
{ Π§ΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ Π΅ΡΠ΅, ΡΡΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ }.
end.
ΠΠΈΠΆΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ ΠΊΠΎΠ΄, Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΡΡΠΈΠΉ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ DLLProc.
library MyFirstDLL;
uses.
SysUtils,.
Classes,.
Forms,.
Windows;
var.
SomeBuffer: Pointer;
procedure MyFirstDLLProc (Reason: Integer);
begin.
if Reason = DLL_PROCESS_DETACH then.
{DLL is Π²ΡΠ³ΡΡΠΆΠ°Π΅ΡΡΡ ΠΈΠ· ΠΏΠ°ΠΌΡΡΠΈ.
ΠΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅ΠΌ ΠΏΠ°ΠΌΡΡΡ, Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΡΡ ΠΏΠΎΠ΄ Π±ΡΡΠ΅Ρ.}.
FreeMem (SomeBuffer);
end;
procedure HelloWorld (AForm: TForm);
begin.
MessageBox (AForm.Handle, Hello world! " ,.
DLL Message Box ", MB_OK or MB_ICONEXCLAMATION);
end;
{ΠΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΊΠΎΠ΄, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ SomeBuffer.}.
exports.
HelloWorld;
begin.
{Π‘ΡΠ°Π²ΠΈΠΌ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ.
DLLProc Π°Π΄ΡΠ΅Ρ Π½Π°ΡΠ΅ΠΉ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ.}.
DLLProc := @MyFirstDLLProc;
SomeBuffer := AllocMem (1024);
end.
ΠΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ, Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΈΠ·Π½Π°ΠΊΠ° ΡΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠ³ΠΎ ΡΠΎΠ±ΡΡΠΈΡ, Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° MyFirstDll, ΡΠ²Π»ΡΠ΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Reason. ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ.
DLL_PROCESS_DETACH — Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π²ΡΠ³ΡΡΠΆΠ°Π΅ΡΡΡ ΠΈΠ· ΠΏΠ°ΠΌΡΡΠΈ; ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π·;
DLL_THREAD_ATTACH — Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΡΡ ΠΏΠ°ΠΌΡΡΡ Π·Π°Π³ΡΡΠΆΠ°Π΅ΡΡΡ Π½ΠΎΠ²ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠΉ ΡΠ΅ΡΡΡΡΡ ΠΈ/ΠΈΠ»ΠΈ ΠΊΠΎΠ΄ ΠΈΠ· Π΄Π°Π½Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ;
DLL_THREAD_DETACH — ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ, «Π²ΡΠ³ΡΡΠΆΠ°Π΅ΡΡΡ «ΠΈΠ· ΠΏΠ°ΠΌΡΡΠΈ.
ΠΠ°Π³ΡΡΠ·ΠΊΠ° DLL
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ Π½Π°ΡΠ°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΠΈΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, Π½Π°Ρ ΠΎΠ΄ΡΡΠ΅ΠΉΡΡ Π² Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅, Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π³ΡΡΠ·ΠΈΡΡ DLL Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΡΡ ΠΏΠ°ΠΌΡΡΡ. ΠΠ°Π³ΡΡΠ·ΠΊΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΡΡΡΠ΅ΡΡΠ²Π»Π΅Π½Π° ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π΄Π²ΡΡ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ²: ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ Π·Π°Π³ΡΡΠ·ΠΊΠ° ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠ°Ρ Π·Π°Π³ΡΡΠ·ΠΊΠ°. ΠΠ±Π° ΠΌΠ΅ΡΠΎΠ΄Π° ΠΈΠΌΠ΅ΡΡ ΠΊΠ°ΠΊ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°, ΡΠ°ΠΊ ΠΈ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ.
Π‘ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ Π·Π°Π³ΡΡΠ·ΠΊΠ° ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠ°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π·Π°Π³ΡΡΠΆΠ°Π΅ΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ Π½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ΅Π³ΠΎ Π΅Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΠΊΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± Π·Π°Π³ΡΡΠ·ΠΊΠΈ, Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΊΠ»ΡΡΠ΅Π²ΡΠΌ ΡΠ»ΠΎΠ²ΠΎΠΌ external ΠΏΡΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΠΈΠ· Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ»ΠΈ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ. DLL Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°Π³ΡΡΠΆΠ°Π΅ΡΡΡ ΠΏΡΠΈ ΡΡΠ°ΡΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΈ ΠΡ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π»ΡΠ±ΡΠ΅ ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌΡΠ΅ ΠΈΠ· Π½Π΅Π΅ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Π΅ΡΠ»ΠΈ Π±Ρ ΠΎΠ½ΠΈ Π±ΡΠ»ΠΈ ΠΎΠΏΠΈΡΠ°Π½Ρ Π²Π½ΡΡΡΠΈ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π»Π΅Π³ΠΊΠΈΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ΄Π°, ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Π½ΠΎΠ³ΠΎ Π² DLL. ΠΠ΅Π΄ΠΎΡΡΠ°ΡΠΎΠΊ ΠΌΠ΅ΡΠΎΠ΄Π° Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π΅ΡΠ»ΠΈ ΡΠ°ΠΉΠ» Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠΌΠ΅Π΅ΡΡΡ ΡΡΡΠ»ΠΊΠ° Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΎΡΠΊΠ°ΠΆΠ΅ΡΡΡ Π·Π°Π³ΡΡΠΆΠ°ΡΡΡΡ.
Π‘ΠΌΡΡΠ» Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π²Ρ Π·Π°Π³ΡΡΠΆΠ°Π΅ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Π½Π΅ ΠΏΡΠΈ ΡΡΠ°ΡΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π° Π² ΡΠΎΡ ΠΌΠΎΠΌΠ΅Π½Ρ, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ ΡΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ. Π‘Π°ΠΌΠΈ ΠΏΠΎΡΡΠ΄ΠΈΡΠ΅, Π²Π΅Π΄Ρ Π΅ΡΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ, ΠΎΠΏΠΈΡΠ°Π½Π½Π°Ρ Π² Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ 10% Π·Π°ΠΏΡΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠΎ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π½Π΅Ρ ΡΠΌΡΡΠ»Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄ Π·Π°Π³ΡΡΠ·ΠΊΠΈ. ΠΡΠ³ΡΡΠ·ΠΊΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈΠ· ΠΏΠ°ΠΌΡΡΠΈ Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ°ΠΊΠΆΠ΅ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄ Π²Π°ΡΠΈΠΌ ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ΠΌ. ΠΡΠ΅ ΠΎΠ΄Π½ΠΎ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠΏΠΎΡΠΎΠ±Π° Π·Π°Π³ΡΡΠ·ΠΊΠΈ DLL — ΡΡΠΎ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΠ΅ (ΠΏΠΎ ΠΏΠΎΠ½ΡΡΠ½ΡΠΌ ΠΏΡΠΈΡΠΈΠ½Π°ΠΌ) Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΡΠ°ΡΡΠ° Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π ΠΊΠ°ΠΊΠΈΠ΅ ΠΆΠ΅ Ρ ΡΡΠΎΠ³ΠΎ ΡΠΏΠΎΡΠΎΠ±Π° ΠΈΠΌΠ΅ΡΡΡΡ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ? ΠΡΠ½ΠΎΠ²Π½ΠΎΠΉ, ΠΊΠ°ΠΊ ΠΌΠ½Π΅ ΠΊΠ°ΠΆΠ΅ΡΡΡ, — ΡΡΠΎ ΡΠΎ, ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° ΡΠ²Π»ΡΠ΅ΡΡΡ Π±ΠΎΠ»Π΅Π΅ Ρ Π»ΠΎΠΏΠΎΡΠ½ΡΠΌ, ΡΠ΅ΠΌ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Π½Π°Ρ Π²ΡΡΠ΅ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ Π·Π°Π³ΡΡΠ·ΠΊΠ°. Π‘Π½Π°ΡΠ°Π»Π° Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ Windows API LoadLibrary. ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΠΈΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ GetProcAddress. ΠΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ DLL Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ Π²ΡΠ³ΡΡΠΆΠ΅Π½Π° Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ FreeLibrary.
ΠΡΠ·ΠΎΠ² ΠΏΡΠΎΡΠ΅Π΄ΡΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ, Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΡ ΠΈΠ· DLL.
Π‘ΠΏΠΎΡΠΎΠ± Π²ΡΠ·ΠΎΠ²Π° ΠΏΡΠΎΡΠ΅Π΄ΡΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π²Ρ Π·Π°Π³ΡΡΠ·ΠΈΠ»ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΡΠΈ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ.
ΠΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ ΠΏΡΠΎΡΠ΅Π΄ΡΡ ΠΈΠ· ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΡ DLL Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΡΡ. ΠΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΠΎ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ (ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ). ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Π΅ΡΠ»ΠΈ Π±Ρ ΠΎΠ½ΠΈ Π±ΡΠ»ΠΈ ΠΎΠΏΠΈΡΠ°Π½Ρ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠ»Ρ ΠΈΠΌΠΏΠΎΡΡΠ° ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ»ΠΈ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅ΠΉΡΡ Π² DLL, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡ external Π² ΠΈΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΈ. Π ΠΏΡΠΈΠΌΠ΅ΡΡ, Π΄Π»Ρ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Π½ΠΎΠΉ Π½Π°ΠΌΠΈ Π²ΡΡΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ HelloWorld Π² Π²ΡΠ·ΡΠ²Π°ΡΡΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠ°Ρ ΡΡΡΠΎΠΊΠ°:
procedure SayHello (AForm: TForm); external myfirstdll. dll " ;
ΠΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ external ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ, ΡΡΠΎ Π΄Π°Π½Π½Π°Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π°ΠΉΠ΄Π΅Π½Π° Π² Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ (Π² Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ — myfirstdll. dll). ΠΠ°Π»Π΅Π΅ Π²ΡΠ·ΠΎΠ² ΡΡΠΎΠΉ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
…
HelloWorld (self);
…
ΠΡΠΈ ΠΈΠΌΠΏΠΎΡΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΠΏΡΠΎΡΠ΅Π΄ΡΡ Π±ΡΠ΄ΡΡΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½Ρ ΠΏΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΈΡ ΠΈΠΌΠ΅Π½ ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ²! ΠΠ΅Π»ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π½Π° ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΡΡΡ ΠΈΠΌΠ΅Π½ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌΡΡ ΠΈΠ· DLL, ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡΡΡ Π½Π΅ Π±ΡΠ΄Π΅Ρ, ΠΈ Π΅ΡΠ»ΠΈ Π²Ρ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΎΠΏΠΈΡΠ°Π»ΠΈ ΠΊΠ°ΠΊΡΡ-Π½ΠΈΠ±ΡΠ΄Ρ ΡΡΠ½ΠΊΡΠΈΡ, ΡΠΎ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΡΡΠ°ΠΏΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠΌΠΏΠΎΡΡ ΠΈΠ· DLL ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡΡΡ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ (ΡΡΠ½ΠΊΡΠΈΠΈ), ΠΏΠΎΡΡΠ΄ΠΊΠΎΠ²ΠΎΠΌΡ Π½ΠΎΠΌΠ΅ΡΡ ΠΈΠ»ΠΈ Ρ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΠ΅ΠΌ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ.
Π ΠΏΠ΅ΡΠ²ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²Ρ ΠΏΡΠΎΡΡΠΎ ΠΎΠ±ΡΡΠ²Π»ΡΠ΅ΡΠ΅ ΠΈΠΌΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ, ΠΈΠ· ΠΊΠΎΡΠΎΡΠΎΠΉ Π΅Π΅ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΡΠ΅ (ΠΌΡ ΡΡΠΎ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ ΡΡΡΡ Π²ΡΡΠ΅). ΠΠΌΠΏΠΎΡΡ ΠΏΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠΎΠ²ΠΎΠΌΡ Π½ΠΎΠΌΠ΅ΡΡ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΎΡ Π²Π°Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΡΠ°ΠΌΠΎΠ³ΠΎ Π½ΠΎΠΌΠ΅ΡΠ°:
procedure HelloWorld (AForm: TForm);
external myfirstdll. dll «index 15;
Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΈΠΌΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²Ρ Π΄Π°Π΅ΡΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ΅ ΠΏΡΠΈ ΠΈΠΌΠΏΠΎΡΡΠ΅ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ Ρ ΡΠ΅ΠΌ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π±ΡΠ»ΠΎ ΡΠΊΠ°Π·Π°Π½ΠΎ Π΄Π»Ρ Π½Π΅Π΅ Π² ΡΠ°ΠΌΠΎΠΉ DLL. Π’. Π΅. ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½Π°Ρ Π²ΡΡΠ΅ Π·Π°ΠΏΠΈΡΡ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π²Ρ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΡΠ΅ ΠΈΠ· Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ myfirstdll. dll ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π² Π½Π΅ΠΉ ΡΠΊΡΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π»Π°ΡΡ ΠΏΡΡΠ½Π°Π΄ΡΠ°ΡΠΎΠΉ, ΠΈ ΠΏΡΠΈ ΡΡΠΎΠΌ Π² ΡΠ°ΠΌΠΊΠ°Ρ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ΅ Π΄Π°Π΅ΡΡΡ ΠΈΠΌΡ SayHello.
ΠΡΠ»ΠΈ Π²Ρ ΠΏΠΎ ΠΊΠ°ΠΊΠΈΠΌ-ΡΠΎ ΠΏΡΠΈΡΠΈΠ½Π°ΠΌ Π½Π΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΠ΅ ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠΉ Π²ΡΡΠ΅ ΡΠΏΠΎΡΠΎΠ± ΠΈΠΌΠΏΠΎΡΡΠ°, Π½ΠΎ ΡΠ΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Ρ ΠΎΡΠΈΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΈΠΌΡ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ (ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ), ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΡΠ΅ΡΡΠΈΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ:
procedure CoolProcedure;
external myfirstdll. dll «name DoSomethingReallyCool » ;
ΠΠ΄Π΅ΡΡ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ΅ CoolProcedure Π΄Π°Π΅ΡΡΡ ΠΈΠΌΡ DoSomethingReallyCool. ΠΡΠ·ΠΎΠ² ΠΏΡΠΎΡΠ΅Π΄ΡΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌΡΡ ΠΈΠ· Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ΅Π½, ΡΠ΅ΠΌ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Π½ΡΠΉ Π½Π°ΠΌΠΈ Π²ΡΡΠ΅ ΡΠΏΠΎΡΠΎΠ±. Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΎΠ±ΡΡΠ²ΠΈΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΡΠ½ΠΊΡΠΈΡ ΠΈΠ»ΠΈ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ, ΠΊΠΎΡΠΎΡΡΡ Π²Ρ ΡΠΎΠ±ΠΈΡΠ°Π΅ΡΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ. ΠΠΎΠΌΠ½ΠΈΡΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ HelloWorld? ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π²ΡΠ·Π²Π°ΡΡ Π΅Π΅ Π½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π² ΡΠ»ΡΡΠ°Π΅ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΈ DLL. ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±ΡΡΠ²ΠΈΡΡ ΡΠΈΠΏ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠΏΠΈΡΡΠ²Π°Π» Π±Ρ ΡΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ:
type.
THelloWorld = procedure (AForm: TForm);
Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π·Π°Π³ΡΡΠ·ΠΈΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ, Ρ ΠΏΠΎΠΌΠΎΡΡΡ GetProcAddress ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ, Π²ΡΠ·Π²Π°ΡΡ ΡΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ Π½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, ΠΈ, Π½Π°ΠΊΠΎΠ½Π΅Ρ, Π²ΡΠ³ΡΡΠ·ΠΈΡΡ DLL ΠΈΠ· ΠΏΠ°ΠΌΡΡΠΈ. ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΠΊΠΎΠ΄, Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΡΡΠΈΠΉ, ΠΊΠ°ΠΊ ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ:
var.
DLLInstance: THandle;
HelloWorld: THelloWorld;
begin.
{ Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌ DLL }.
DLLInstance := LoadLibrary (myfirstdll.dll ");
{ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ }.
@HelloWorld := GetProcAddress (DLLInstance, HelloWorld ");
{ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ Π½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ }.
HelloWorld (Self);
{ Π²ΡΠ³ΡΡΠΆΠ°Π΅ΠΌ DLL ΠΈΠ· ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ }.
FreeLibrary (DLLInstance);
end;
ΠΠ°ΠΊ ΡΠΆΠ΅ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΎΡΡ Π²ΡΡΠ΅, ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΎΠ² ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΈ DLL ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΈ ΠΎΡΡΡΡΡΡΠ²ΠΈΠΈ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ. Π ΡΠ»ΡΡΠ°Π΅ Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΎΠΉ Ρ Π²Π°Ρ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΡΠ°ΠΊΠΈΠ΅ ΡΠΈΡΡΠ°ΡΠΈΠΈ ΠΈ Π½Π΅ Π΄ΠΎΠΏΡΡΠΊΠ°ΡΡ, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° «Π²ΡΠ²Π°Π»ΠΈΠ²Π°Π»Π°ΡΡ» ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ. ΠΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠΌΡ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ LoadLibrary ΠΈ GetProcAddress Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΡΡΠΏΠ΅ΡΠ½ΠΎ Π»ΠΈ ΠΏΡΠΎΡΠ»Π° Π·Π°Π³ΡΡΠ·ΠΊΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈ Π½Π°ΠΉΠ΄Π΅Π½Π° Π»ΠΈ Π² Π½Π΅ΠΉ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ°Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ°. ΠΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ Π½ΠΈΠΆΠ΅ ΠΊΠΎΠ΄ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅Ρ ΡΡΠΎ.
procedure TForm1. DynamicLoadBtnClick (Sender: TObject);
type.
THelloWorld = procedure (AForm: TForm);
var.
DLLInstance: THandle;
HelloWorld: THelloWorld;
begin.
DLLInstance := LoadLibrary (myfirstdll.dll ");
if DLLInstance = 0 then begin.
MessageDlg (ΠΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π³ΡΡΠ·ΠΈΡΡ DLL ", mtError, [mbOK], 0);
Exit;
end;
@HelloWorld := GetProcAddress (DLLInstance, HelloWorld ");
if @HelloWorld nil then.
HelloWorld (Self).
else.
MessageDlg (ΠΠ΅ Π½Π°ΠΉΠ΄Π΅Π½Π° ΠΈΡΠΊΠΎΠΌΠ°Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ°! ", mtError, [mbOK], 0);
FreeLibrary (DLLInstance);
end;
Π DLL ΠΌΠΎΠΆΠ½ΠΎ Ρ ΡΠ°Π½ΠΈΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ΄, Π½ΠΎ ΠΈ ΡΠΎΡΠΌΡ. ΠΡΠΈΡΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠΎΡΠΌ Π² Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Π½Π΅ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΡΠΈΠ»ΡΠ½ΠΎ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠΎΡΠΌΠ°ΠΌΠΈ Π² ΠΎΠ±ΡΡΠ½ΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅. Π‘Π½Π°ΡΠ°Π»Π° ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ ΡΠΎΡΠΌΡ, Π° Π·Π°ΡΠ΅ΠΌ ΠΌΡ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎΠ± ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ MDI Π² DLL.
Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΡ DLL, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ ΡΠΎΡΠΌΡ, Ρ ΠΏΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΡ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅.
ΠΡΠ°ΠΊ, Π²ΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π½ΠΎΠ²ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π²ΡΠ±Π΅ΡΠ΅ΠΌ ΠΏΡΠ½ΠΊΡ ΠΌΠ΅Π½Ρ File|New, Π° Π·Π°ΡΠ΅ΠΌ Π΄Π²Π°ΠΆΠ΄Ρ ΡΠ΅Π»ΠΊΠ½Π΅ΠΌ Π½Π° ΠΈΠΊΠΎΠ½ΠΊΡ DLL. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄:
library Project2;
{Π·Π΄Π΅ΡΡ Π±ΡΠ»ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ}.
uses.
SysUtils,.
Classes;
{$R *.RES}.
begin.
end.
Π‘ΠΎΡ ΡΠ°Π½ΠΈΡΠ΅ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ. ΠΠ°Π·ΠΎΠ²Π΅ΠΌ Π΅Π³ΠΎ DllForms.dpr.
Π’Π΅ΠΏΠ΅ΡΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΡ ΡΠΎΡΠΌΡ. ΠΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΠΎ-ΡΠ°Π·Π½ΠΎΠΌΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΡΠ±ΡΠ°Π² ΠΏΡΠ½ΠΊΡ ΠΌΠ΅Π½Ρ File|New Form. ΠΠΎΠ±Π°Π²ΡΡΠ΅ Π½Π° ΡΠΎΡΠΌΡ ΠΊΠ°ΠΊΠΈΠ΅-Π½ΠΈΠ±ΡΠ΄Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ. ΠΠ°Π·ΠΎΠ²Π΅ΠΌ ΡΠΎΡΠΌΡ DllForm ΠΈ ΡΠΎΡ ΡΠ°Π½ΠΈΠΌ ΠΏΠΎΠ»ΡΡΠΈΠ²ΡΠΈΠΉΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΏΠΎΠ΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ DllFormUnit. pas .
ΠΠ΅ΡΠ½Π΅ΠΌΡΡ ΠΊ Π³Π»Π°Π²Π½ΠΎΠΌΡ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈ ΠΏΠΎΠΌΠ΅ΡΡΠΈΠΌ Π² Π½Π΅Π³ΠΎ ΡΡΠ½ΠΊΡΠΈΡ ShowForm, Π² Π·Π°Π΄Π°ΡΡ ΠΊΠΎΡΠΎΡΠΎΠΉ Π±ΡΠ΄Π΅Ρ Π²Ρ ΠΎΠ΄ΠΈΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΎΡΠΌΡ ΠΈ Π΅Π΅ Π²ΡΠ²ΠΎΠ΄ Π½Π° ΡΠΊΡΠ°Π½. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ Π½ΠΈΠΆΠ΅ ΠΊΠΎΠ΄.
function ShowForm: Integer; stdcall;
var.
Form: TDLLForm;
begin.
Form := TDLLForm. Create (Application);
Result := Form. ShowModal;
Form.Free;
end;
ΠΠ±ΡΠ°ΡΠ°Ρ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ΅ΠΊΡ Π±ΡΠ» ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ Π±Π΅Π· ΠΎΡΠΈΠ±ΠΎΠΊ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² ΡΠ΅ΠΊΡΠΈΡ uses ΠΌΠΎΠ΄ΡΠ»Ρ Forms .
ΠΠΊΡΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌ Π½Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° exports :
exports.
ShowForm;
ΠΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΠΌ ΠΏΡΠΎΠ΅ΠΊΡ ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠ°ΠΉΠ» dllforms.dll. ΠΡΠΈ ΠΏΡΠΎΡΡΡΠ΅ ΡΠ°Π³ΠΈ — Π²ΡΠ΅, ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅ΠΉ ΡΠΎΡΠΌΡ. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ ShowForm ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° stdcall. ΠΠ½ΠΎ ΡΠΈΠ³Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΈ ΡΠΊΡΠΏΠΎΡΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΌΡ Π²ΡΠ·ΠΎΠ²Ρ (standard call calling convention). ΠΠΊΡΠΏΠΎΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΡΠΎΠ·Π΄Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½ΠΎΠΉ DLL Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ , ΡΠΎΠ·Π΄Π°Π½Π½ΡΡ Π² Delphi.
Π‘ΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ Π²ΡΠ·ΠΎΠ²Ρ (Calling conventions) ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ. Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΏΡΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΠΉ: stdcall, cdecl, pascal, register ΠΈ safecall. ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎΠ± ΡΡΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ·Π½Π°ΡΡ, ΠΏΠΎΡΠΌΠΎΡΡΠ΅Π² ΡΠ°Π·Π΄Π΅Π» «Calling Conventions «Π² ΡΠ°ΠΉΠ»Π΅ ΠΏΠΎΠΌΠΎΡΠΈ Delphi.
Π’Π°ΠΊΠΆΠ΅ ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ ShowForm, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ShowModal. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ ΡΠΎΡΠΌΡ Π²ΡΠ·ΡΠ²Π°ΡΡΠ΅ΠΌΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠΈΠΆΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΎ Π΄Π²Π° Π»ΠΈΡΡΠΈΠ½Π³Π°, ΠΏΠ΅ΡΠ²ΡΠΉ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΏΠΎΠ»Π½ΡΠΉ ΠΊΠΎΠ΄ ΡΠ°ΠΉΠ»Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° DLL (ΠΌΠΎΠ΄ΡΠ»Ρ Ρ ΡΠΎΡΠΌΠΎΠΉ Π·Π΄Π΅ΡΡ Π½Π΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡΡ), Π° Π²ΡΠΎΡΠΎΠΉ — ΠΌΠΎΠ΄ΡΠ»Ρ Π²ΡΠ·ΡΠ²Π°ΡΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½Π°Ρ Π½Π°ΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°.
library DllForms;
uses.
SysUtils,.
Classes,.
Forms,.
DllFormUnit in «DllFormUnit.pas «{DllForm};
{$R *.RES}.
function ShowForm: Integer; stdcall;
var.
Form: TDLLForm;
begin.
Form := TDLLForm. Create (Application);
Result := Form. ShowModal;
Form.Free;
end;
begin.
end.
unit TestAppUnit;
interface.
uses.
Windows, Messages, SysUtils, Classes, Graphics,.
Controls, Forms, Dialogs, StdCtrls;
type.
TForm1 = class (TForm).
Button1: TButton;
procedure Button1Click (Sender: TObject);
private.
{ Private declarations }.
public.
{ Public declarations }.
end;
var.
Form1: TForm1;
function ShowForm: Integer; stdcall;
external dllforms. dll " ;
implementation.
{$R *.DFM}.
procedure TForm1. Button1Click (Sender: TObject);
begin.
ShowForm;
end;
end.
ΠΡΠΎΡΡ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΠΏΡΠΈ ΡΠΊΡΠΏΠΎΡΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ°ΠΊΠΆΠ΅ Π±ΡΠ»ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΎ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ stdcall.
Π‘Π»Π΅Π΄ΡΠ΅Ρ ΠΎΠ±ΡΠ°ΡΠΈΡΡ ΠΎΡΠΎΠ±ΠΎΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠ°Π±ΠΎΡΡ Ρ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠΌΠΈ ΡΠΎΡΠΌΠ°ΠΌΠΈ Π² DLL. ΠΡΠ»ΠΈ, ΠΊ ΠΏΡΠΈΠΌΠ΅ΡΡ, Π² Π²ΡΠ·ΡΠ²Π°ΡΡΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π³Π»Π°Π²Π½Π°Ρ ΡΠΎΡΠΌΠ° ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° FormStyle, ΡΠ°Π²Π½ΡΠΌ MDIForm, ΡΠΎ ΠΏΡΠΈ ΠΏΠΎΠΏΡΡΠΊΠ΅ Π²ΡΠ·ΠΎΠ²Π° ΠΈΠ· DLL MDIChild-ΡΠΎΡΠΌΡ, Π½Π° ΡΠΊΡΠ°Π½Π΅ ΠΏΠΎΡΠ²ΠΈΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π±ΡΠ΄Π΅Ρ Π³ΠΎΠ²ΠΎΡΠΈΡΡΡΡ, ΡΡΠΎ Π½Π΅Ρ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠΉ Π°ΠΊΡΠΈΠ²Π½ΠΎΠΉ MDI-ΡΠΎΡΠΌΡ.
Π ΡΠΎΡ ΠΌΠΎΠΌΠ΅Π½Ρ, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΠΏΡΡΠ°Π΅ΡΠ΅ΡΡ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ Π²Π°ΡΠ΅ Π΄ΠΎΡΠ΅ΡΠ½Π΅Π΅ ΠΎΠΊΠ½ΠΎ, VCL ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° FormStyle Π³Π»Π°Π²Π½ΠΎΠΉ ΡΠΎΡΠΌΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠ΄Π½Π°ΠΊΠΎ Π² Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π²ΡΠ΅ Π²ΡΠΎΠ΄Π΅ Π±Ρ Π²Π΅ΡΠ½ΠΎ. Π’Π°ΠΊ Π² ΡΠ΅ΠΌ ΠΆΠ΅ Π΄Π΅Π»ΠΎ? ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΏΡΠΈ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ ΡΠ°ΠΊΠΎΠΉ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ, ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ Application, ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°ΡΠΈΠΉ Π½Π΅ Π²ΡΠ·ΡΠ²Π°ΡΡΠ΅ΠΌΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π° ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅. ΠΡ, ΠΈ Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π² DLL Π½Π΅Ρ Π³Π»Π°Π²Π½ΠΎΠΉ ΡΠΎΡΠΌΡ, ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π²ΡΠ΄Π°Π΅Ρ ΠΎΡΠΈΠ±ΠΊΡ. ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΡΠ°ΠΊΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ, Π½Π°Π΄ΠΎ Π½Π°Π·Π½Π°ΡΠΈΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ Application Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ Application Π²ΡΠ·ΡΠ²Π°ΡΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ, ΡΡΠΎ Π·Π°ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΠΊΠΎΠ³Π΄Π° Π²ΡΠ·ΡΠ²Π°ΡΡΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° — VCL-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΏΠ΅ΡΠ΅Π΄ Π²ΡΠ³ΡΡΠ·ΠΊΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈΠ· ΠΏΠ°ΠΌΡΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²Π΅ΡΠ½ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Application Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π² ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΡ ΠΏΠ°ΠΌΡΡΠΈ ΠΎΡΠΈΡΡΠΈΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΡΡ ΠΏΠ°ΠΌΡΡΡ, Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° «ΡΠΎΠ΄Π½ΠΎΠΉ» Π΄Π»Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ Application Π² Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π° ΠΏΡΠΈ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ Π΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
ΠΡΠ°ΠΊ, Π²Π΅ΡΠ½Π΅ΠΌΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π½Π°Π·Π°Π΄ ΠΈ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΠΈΠΌ ΡΠ°Π³ΠΈ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π½Π°ΠΌ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Π½ΡΠΌ Π² DLL MDIChild-ΡΠΎΡΠΌΠ°ΠΌΠΈ.
Π Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ ΡΠΎΠ·Π΄Π°Π΅ΠΌ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠΈΠΏΠ° TApplication.
Π‘ΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ Application DLL Π² Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ.
ΠΠ±ΡΠ΅ΠΊΡΡ Application Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΡΠ°Π²ΠΈΠΌ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° Application Π²ΡΠ·ΡΠ²Π°ΡΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ MDIChild-ΡΠΎΡΠΌΡ ΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅ΠΌ Ρ Π½Π΅ΠΉ.
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌ Π² ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Application Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈ Π²ΡΠ³ΡΡΠΆΠ°Π΅ΠΌ DLL ΠΈΠ· ΠΏΠ°ΠΌΡΡΠΈ.
ΠΠ΅ΡΠ²ΡΠΉ ΡΠ°Π³ ΠΏΡΠΎΡΡ. ΠΡΠΎΡΡΠΎ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ Π² Π²Π΅ΡΡ Π½Π΅ΠΉ ΡΠ°ΡΡΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ DLL:
var.
DllApp: TApplication;
ΠΠ°ΡΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ΄Π΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Application ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π΄ΠΎΡΠ΅ΡΠ½ΡΡ ΡΠΎΡΠΌΡ. ΠΡΠΎΡΠ΅Π΄ΡΡΠ° ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊ:
procedure ShowMDIChild (MainApp: TApplication);
var.
Child: TMDIChild;
begin.
if not Assigned (DllApp) then begin.
DllApp := Application;
Application := MainApp;
end;
Child := TMDIChild. Create (Application.MainForm);
Child.Show;
end;
ΠΡΠ΅, ΡΡΠΎ Π½Π°ΠΌ ΡΠ΅ΠΏΠ΅ΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄Π΅Π»Π°ΡΡ, — ΡΡΠΎ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅ΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Application Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅. ΠΠ΅Π»Π°Π΅ΠΌ ΡΡΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ MyDllProc:
procedure MyDLLProc (Reason: Integer);
begin.
if Reason = DLL_PROCESS_DETACH then.
{ DLL is Π²ΡΠ³ΡΡΠΆΠ°Π΅ΡΡΡ. ΠΠΎΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Application}.
if Assigned (DllApp) then.
Application := DllApp;
end;
ΠΠΌΠ΅ΡΡΠΎ Π·Π°ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Π½Π΅ ΡΠ°ΠΊ ΡΠ»ΠΎΠΆΠ½ΠΎ, ΠΊΠ°ΠΊ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ Π½Π° ΠΏΠ΅ΡΠ²ΡΠΉ Π²Π·Π³Π»ΡΠ΄. DLL ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΡΠΈΡΠΎΡΠ°ΠΉΡΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π΄Π»Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ°Π±ΠΎΡΡ ΡΠ°ΠΌΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ². ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ DLL ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Π°ΡΠ° ΠΆΠΈΠ·Π½Ρ ΡΡΠ°Π½Π΅Ρ Π»Π΅Π³ΡΠ΅!
Π‘ΠΏΠΈΡΠΎΠΊ Π»ΠΈΡΠ΅ΡΠ°ΡΡΡΡ
ΠΠ»Ρ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠΈ Π΄Π°Π½Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ Π±ΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Ρ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ Ρ ΡΠ°ΠΉΡΠ° internet.