Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΡΠΎΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠΌ Π² ΠΏΠ°ΠΌΡΡΡ ΡΠ°ΠΉΠ»ΠΎΠΌ. ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠ°ΠΉΠ»Π°, ΠΏΡΠΎΠ΅ΡΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎ Π² ΠΏΠ°ΠΌΡΡΡ, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ CreateFileMapping. ΠΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
...function CreateFileMapping(hFile: THandle;
lpFileMappingAttributes: PSecurityAttributes;
flProtect, dwMaximumSizeHigh, dwMaximumSizeLow: DWORD;
lpName: PChar ): THandle;
ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ.
β’ hFile β ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΡΠ°ΠΉΠ»Π°. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΡ ΡΡΠΎΠΌΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ INVALID_HANDLE_VALUE ΠΌΡ ΡΠ²ΡΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΡΠΉΠΎΠ±ΡΠ΅ΠΊΡ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠΎ ΡΡΡΠ°Π½ΠΈΡΠ½ΡΠΌ swap-ΡΠ°ΠΉΠ»ΠΎΠΌ (ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΌ ΡΠ°ΠΉΠ»ΠΎΠΌ ΠΏΠΎΠ΄ΠΊΠ°ΡΠΊΠΈ).
β’ lpFileMappingAttributes β ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΡΡΡΠΊΡΡΡΡ ΡΠΈΠΏΠ° TSecurity-Attributes. Π‘ΡΡΡΠΊΡΡΡΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°.
β’ flProtect β ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ, Π·Π°Π΄Π°ΡΡΠΈΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, Π² ΡΠ»ΡΡΠ°Π΅ Π΄ΠΎΡΡΡΠΏΠ° Π½Π° ΡΡΠ΅Π½ΠΈΠ΅ ΠΈ Π·Π°ΠΏΠΈΡΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ PAGE_ READWRITE.
β’ dwMaximumSi zeHigh β ΡΡΠ°ΡΡΠΈΠΉ ΡΠ°Π·ΡΡΠ΄ 64-Π±ΠΈΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π²ΡΠ΄Π΅Π»ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΌΠ° ΠΏΠ°ΠΌΡΡΠΈ.
β’ dwMaximumSizeLow β ΠΌΠ»Π°Π΄ΡΠΈΠΉ ΡΠ°Π·ΡΡΠ΄ 64-Π±ΠΈΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π²ΡΠ΄Π΅Π»ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΌΠ° ΠΏΠ°ΠΌΡΡΠΈ.
β’ lpName β ΠΈΠΌΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΏΡΠΎΠ΅ΡΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° (ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ nil Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π±Π΅Π·ΡΠΌΡΠ½Π½ΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡΠΈΠΈ ΡΠ°ΠΉΠ»Π°).
Π€ΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠΉ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ (THandle). ΠΡΠ»ΠΈ ΠΏΡΠΎΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΉΠ» Π½Π΅ ΡΠΎΠ·Π΄Π°Π½, ΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ CreateFileMapping Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π½ΡΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΏΡΠΎΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΉΠ» Π±ΡΠ» ΡΠΎΠ·Π΄Π°Π½, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΡ Π΅Π³ΠΎ Π² Π°Π΄ΡΠ΅ΡΠ½ΠΎΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π° ΡΡΠ½ΠΊΡΠΈΡ MapViewOf File, ΠΈΠΌΠ΅ΡΡΠ°Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ:
...function MapViewOfFile(hFileMappingObject: THandle;
dwDesiredAccess: DWORD;
dwFileOffsetHigh, dwFileOffsetLow,
dwNumberOfBytesToMap: DWORD ): Pointer;
Π€ΡΠ½ΠΊΡΠΈΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ.
β’ hFileMappingOb j ect β ΠΎΠΏΠΈΡΠ°ΡΠ΅Π»Ρ ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ.
β’ dwDesiredAccess β ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΌ Π΄Π°Π½Π½ΡΠΌ, Π² ΡΠ»ΡΡΠ°Π΅ ΡΡΠ΅Π½ΠΈΡ ΠΈ Π·Π°ΠΏΠΈΡΠΈ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ FILE_MAP_WRITE.
β’ dwFileOf f setHigh, dwFileOf fsetLow β 64-Π±ΠΈΡΠ½ΠΎΠ΅ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΡ Π½Π°ΡΠ°Π»Π° ΡΠ°ΠΉΠ»Π°.
β’ dwNumberOf BytesToMap β ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΠΊΠΎΠ»ΡΠΊΠΎ Π±Π°ΠΉΡ Π±ΡΠ΄Π΅Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΎ. ΠΡΠ»ΠΈ ΡΡΠΎΡ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 0, ΡΠΎ Π½Π° ΠΎΠ±Π»Π°ΡΡΡ ΠΏΠ°ΠΌΡΡΠΈ Π±ΡΠ΄Π΅Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ Π²Π΅ΡΡ ΡΠ°ΠΉΠ».
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΡΠΏΠ΅ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ MapViewOfFile Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ (ΡΠΈΠΏ Pointer) Π½Π° Π½Π°ΡΠ°Π»ΡΠ½ΡΠΉ Π°Π΄ΡΠ΅Ρ Π΄Π°Π½Π½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. Π£ΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ ΠΈΠ»ΠΈ ΡΡΠ΅Π½ΠΈΡ ΡΠ°ΠΉΠ»Π°.
Π‘Π»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ, ΠΏΡΠΎΡΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΠΉ ΠΏΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΡΠΌ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ MapViewOfFile, ΡΠ²Π»ΡΠ΅ΡΡΡ UnMapViewOf File. ΠΠ½Π° ΠΎΡΠΊΠ»ΡΡΠ°Π΅Ρ ΠΏΡΠΎΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΉΠ» ΠΎΡ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°:
...function UnMapViewOfFile(lpBaseAddress: Pointer): Boolean;
Π€ΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠΉ MapViewOfFile, ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π΅Π³ΠΎ Π΄Π»Ρ ΠΎΡΠΌΠ΅Π½Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΈΠΈ ΡΠ°ΠΉΠ»Π° Π½Π° Π°Π΄ΡΠ΅ΡΠ½ΠΎΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°. Π ΡΠ»ΡΡΠ°Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎΠΉ Π²ΡΠ³ΡΡΠ·ΠΊΠΈ ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ True, Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ β False.
Π ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅ΡΡ, β ΡΡΠΎ CloseHandle. ΠΠ½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π·Π°ΠΊΡΡΡΠΈΡ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠ° (ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², Π° Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΈΠΈ ΡΠ°ΠΉΠ»Π°).
...function CloseHandle(hFileMapObj: THandle):Boolean;
ΠΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΎΠ½Π° ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΎΠΏΠΈΡΠ°ΡΠ΅Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ CreateFileMapping ΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅Ρ Π΅Π³ΠΎ. ΠΠ»Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠ½Π°ΡΠ°Π»Π° ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΡ UnMapViewOf File, Π° Π·Π°ΡΠ΅ΠΌ CloseHandle.
Π‘Π°ΠΌΠ° ΠΏΡΠΎΠ΅ΠΊΡΠΈΡ ΡΠ°ΠΉΠ»Π° Π±ΡΠ΄Π΅Ρ ΡΠ΄Π°Π»Π΅Π½Π° ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π±ΡΠ΄ΡΡ Π·Π°ΠΊΡΡΡΡ Π²ΡΠ΅ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΡ Π²ΠΎ Π²ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΡ ΡΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠ°Ρ .
ΠΠ»Ρ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΈ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ΅ΡΠΈΡΡΠ΅ΠΌΡΡ Π² ΠΏΠ°ΠΌΡΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ Π² ΡΠ°ΠΊΠΎΠΉ ΡΠ°ΠΉΠ» ΡΡΡΠΎΠΊΡ ΠΈ ΡΠΏΡΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΡΡΠΈΡΡΠ²Π°ΡΡ Π΅Π΅ ΠΎΡΡΡΠ΄Π°. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ TextBox, ΠΊΠ½ΠΎΠΏΠΊΠ°, ΠΌΠ΅ΡΠΊΠ° ΠΈ ΡΠ°ΠΉΠΌΠ΅Ρ. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ: ΡΡΡΠΎΠΊΠ°, Π·Π°ΠΏΠΈΡΠ°Π½Π½Π°Ρ Π² ΠΏΠΎΠ»Π΅ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ°, ΠΏΠΎΡΠ»Π΅ Π½Π°ΠΆΠ°ΡΠΈΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΡΡΡ Π² ΠΏΡΠΎΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΉΠ». ΠΠ°Π»Π΅Π΅, ΡΠΏΡΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ΅ΠΌΡ (Π·Π°Π΄Π°Π΅ΡΡΡ ΡΠ°ΠΉΠΌΠ΅ΡΠΎΠΌ), ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ°ΠΉΠ»Π° ΡΡΠΈΡΡΠ²Π°Π΅ΡΡΡ ΠΈ Π·Π°Π΄Π°Π΅ΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° ΠΌΠ΅ΡΠΊΠΈ (ΡΠΈΡ. 8.2).
Π ΠΈΡ. 8.2. ΠΠΈΠ΄ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΉΠ»
Π ΡΠ΅ΠΊΡΠΈΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ:
...var
FormMappingFile: TFormMappingFile;
//ΠΠ»ΠΎΠ±Π°Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅
//ΠΠΏΠΈΡΠ°ΡΠ΅Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΏΡΠΎΠ΅ΡΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°
hFileMapObj:THandle;
//Π£ΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° Π½Π°ΡΠ°Π»ΡΠ½ΡΠΉ Π°Π΄ΡΠ΅Ρ Π΄Π°Π½Π½ΡΡ
lpBaseAddress:PChar;
ΠΠ°Π»Π΅Π΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΏΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ ΡΠΎΡΠΌΡ. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ΅ΡΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΠΈ Π΅Π³ΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π² Π°Π΄ΡΠ΅ΡΠ½ΠΎΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π² ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΎΡΠΌΡ (Π»ΠΈΡΡΠΈΠ½Π³ 8.7).
...ΠΠΈΡΡΠΈΠ½Π³ 8.7.
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΎΡΠΌΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
procedure TMappingFile.FormCreate(Sender: TObject);
begin
//Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΏΡΠΎΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΉΠ» Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ FileMemory
//ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΠΌ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΎΠΏΠΈΡΠ°ΡΠ΅Π»Ρ
//Π² Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ hFileMapObj
hFileMapObj := CreateFileMapping(MAXDWORD,Nil,PAGE_READWRITE,
0,4,βFileMemoryβ);
If (hFileMapObj = 0) Then
ShowMessage(\'ΠΠ΅ ΠΌΠΎΠ³Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΡΠΎΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΉΠ»!\')
Else
//ΠΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌ ΡΠ°ΠΉΠ» ΠΊ Π°Π΄ΡΠ΅ΡΠ½ΠΎΠΌΡ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Ρ
//ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π½Π°ΡΠ°Π»ΡΠ½ΡΠΉ Π°Π΄ΡΠ΅Ρ Π΄Π°Π½Π½ΡΡ
lpBaseAddress := MapViewOfFile(hFileMapObj,FILE_MAP_WRITE,
0,0,0);
If lpBaseAddress = Nil Then
ShowMessage(\'ΠΠ΅ ΠΌΠΎΠ³Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ ΠΏΡΠΎΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΉΠ»!\');
end;
ΠΠΎΡΠ»Π΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°ΠΉΠ»Π° Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ. ΠΡΠΈΠ²Π΅Π΄Π΅ΠΌ Π»ΠΈΡΡΠΈΠ½Π³ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°, ΠΊΠΎΠΏΠΈΡΡΡΡΠ΅Π³ΠΎ Π΄Π°Π½Π½ΡΠ΅ Π² ΠΏΡΠΎΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΉΠ» (Π»ΠΈΡΡΠΈΠ½Π³ 8.8).
...ΠΠΈΡΡΠΈΠ½Π³ 8.8. ΠΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ Π² ΠΏΡΠΎΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΉΠ»
procedure TMappingFile.bnOKClick(Sender: TObject);
begin
//Π‘ΡΠΈΡΡΠ²Π°Π΅ΠΌ Π΄Π°Π½Π½ΡΠ΅ Π² ΠΏΡΠΎΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΉΠ»
StrPCopy(lpBaseAddress,edVariable.Text);
end;
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π±ΡΠ΄Π΅Ρ Π½Π°ΠΆΠ°ΡΠ° ΠΊΠ½ΠΎΠΏΠΊΠ°, Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡΡΡ Π² ΠΏΡΠΎΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΉΠ». ΠΠΎ ΠΈΡΡΠ΅ΡΠ΅Π½ΠΈΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠΌΠ΅ΡΠΎΠΌ, ΡΡΡΠΎΠΊΠ° ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ΅ΠΊΡΡΠ° ΠΌΠ΅ΡΠΊΠΈ (Π»ΠΈΡΡΠΈΠ½Π³ 8.9).
...ΠΠΈΡΡΠΈΠ½Π³ 8.9.
Π‘ΡΠΈΡΡΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ ΠΈΠ· ΠΏΡΠΎΠ΅ΠΊΡΠΈΠΈ ΡΠ°ΠΉΠ»Π°
procedure TMappingFile.TimerMFTimer(Sender: TObject);
begin
lbVariable.Caption := PChar(lpBaseAddress);
end;
Π ΠΌΠΎΠΌΠ΅Π½Ρ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ ΠΏΡΠΎΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΉΠ» ΠΎΡ Π°Π΄ΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΈ Π·Π°ΠΊΡΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠ°ΠΉΠ»Π°. ΠΡΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π² ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½ΠΈΡ ΡΠΎΡΠΌΡ (Π»ΠΈΡΡΠΈΠ½Π³ 8.10).
...ΠΠΈΡΡΠΈΠ½Π³ 8.10.
Π£Π½ΠΈΡΡΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠΎΡΠΌΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
procedure TMappingFile.FormClose(Sender: TObject; var Action:
TCloseAction);
begin
//ΠΡΠΊΠ»ΡΡΠΈΠΌ ΡΠ°ΠΉΠ» ΠΎΡ Π°Π΄ΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°
UnMapViewOfFile(lpBaseAddress);
//ΠΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠ°ΠΉΠ»Π°
CloseHandle(hFileMapObj);
//ΠΠ°ΠΊΡΡΠ²Π°Π΅ΠΌ ΡΠΎΡΠΌΡ
Action := caFree;
end;
ΠΠ΄Π΅ΡΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΈΠ΅ΠΉ ΡΠ°ΠΉΠ»Π° Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠΎΠ»Π΅Π΅ ΠΆΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΉ ΠΈ ΡΠ΅Π°Π»ΡΠ½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ Π² ΡΠ°Π·Π΄. 10.2 ΠΏΡΠΈ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Β«ΠΠΊΠΎΠ½Π½ΡΠΉ ΡΠΏΠΈΠΎΠ½Β»: ΡΠ°ΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡ ΡΠ°ΠΉΠ»Π° Π² ΠΏΠ°ΠΌΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄Π°Π½Π½ΡΡ ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΈ DLL, ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅ΠΉ Π² ΠΏΠ°ΠΌΡΡΠΈ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°.
ΠΠ»Π°Π²Π° 9 ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ COM Π² Microsoft Word ΠΈ Microsoft Excel
β’ Π’Π΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ OLE
β’ Π’Π΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ COM
β’ ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ OLE Π² Delphi
β’ Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Microsoft Word ΠΈ Microsoft Excel
Π’Π΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ COM/DCOM ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π²Π°ΠΆΠ½ΡΡ ΠΈ ΡΠΈΡΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ. ΠΡ Π²Π°ΡΠΈΡΡ Π²ΡΠ΅ Π°ΡΠΏΠ΅ΠΊΡΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ COM/DCOM ΠΎΡΠ΅Π½Ρ ΡΠ»ΠΎΠΆΠ½ΠΎ, ΠΈ Π² ΡΠ°ΠΌΠΊΠ°Ρ Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ Π² ΡΡΠΎΠΌ Π½Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ. Π ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅ Π±ΡΠ΄ΡΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π‘ΠΠ ΠΈ ΠΈΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅. ΠΡΠΈΠΌΠ΅ΡΡ, ΡΠ°Π·ΠΎΠ±ΡΠ°Π½Π½ΡΠ΅ Π² Π³Π»Π°Π²Π΅, Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ, ΡΠ½Π°Π±ΠΆΠ°Π΅ΠΌΡΠΌΠΈ Π‘ΠΠ-ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ. Π ΡΠ°ΠΊΠΈΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠ½Π΅ΡΡΠΈ Π²ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈΠ· ΠΏΠ°ΠΊΠ΅ΡΠ° Microsoft Office (Microsoft Word, Microsoft Excel ΠΈ Ρ. Π΄.).
9.1. Π’Π΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ OLE
Π Windows 3.1 ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠ°Π½Π½ΠΈΡ Π²Π΅ΡΡΠΈΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌ ΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½ΡΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΠΌΠΈ Π±ΡΠ»Π° ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ DDE β Dynamic Data Exchange (Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΎΠ±ΠΌΠ΅Π½ Π΄Π°Π½Π½ΡΠΌΠΈ). ΠΠ° ΡΡΠΎΠΉ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΎΡΠ½ΠΎΠ²ΡΠ²Π°Π»Π°ΡΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ OLE β Object Linking and Embedding (ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΠ΅ ΠΈ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²). OLE ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΄Π΅Π»Π°ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ°ΡΡΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ² Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΠΎΠ»ΡΡΠΈΠ» Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π΄Π»Ρ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°.
Π ΠΎΡΠ½ΠΎΠ²Π΅ DDE Π»Π΅ΠΆΠΈΡ ΠΎΠ±ΠΌΠ΅Π½ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΠΎΠΊΠ½Π°ΠΌΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΠΎΠ΄ΠΎΠ±Π½ΡΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Π·Π°ΡΡΡΠ΄Π½ΡΠ΅Ρ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² ΠΈ ΠΎΠ±ΠΌΠ΅Π½ Π΄Π°Π½Π½ΡΠΌΠΈ ΡΠ΅ΡΠ΅Π· ΡΠ΅ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ, ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠΌΠΈ Π½Π° ΡΠ°Π·Π½ΡΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°Ρ . ΠΡΠΎ ΠΏΡΠΈΠ²Π΅Π»ΠΎ ΠΊ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ DDE β NetDDE, Π½ΠΎ ΡΡΠ° ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ ΠΈ Π½Π΅ΡΡΡΠΎΠΉΡΠΈΠ²ΠΎ.
ΠΠ°ΡΠΈΠ½Π°Ρ Ρ Windows NT 3.51, Π²Π½Π΅Π΄ΡΡΠ΅ΡΡΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ OLE 2 β Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅Π΅ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ OLE. OLE 2 Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ ActiveX. ΠΠΎΠ·ΠΆΠ΅ ΡΠ΅ΡΠΌΠΈΠ½ OLE 2 ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈ Π½Π° OLE.
Π’Π΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ DDE Π±ΡΠ»Π° Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎΠΉ Π΄Π»Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ OLE 2, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ Π΄Π»Ρ Π½Π΅Π΅ Π±ΡΠ»Π° ΡΠΎΠ·Π΄Π°Π½Π° ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΠΌΠΈ β Π‘ΠΠ (Component Object Model, ΠΌΠΎΠ΄Π΅Π»Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²). Π‘ΠΠ ΠΎΠΊΠ°Π·Π°Π»Π°ΡΡ ΠΎΡΠ΅Π½Ρ ΡΠ΄Π°ΡΠ½ΠΎΠΉ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠ΅ΠΉ, ΠΏΠΎΡΡΠΎΠΌΡ, Π½Π°ΡΠΈΠ½Π°Ρ Ρ Windows 95, DDE Π±ΡΠ»Π° ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π° ΡΡΡΠ°ΡΠ΅Π²ΡΠ΅ΠΉ, Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠ΅ΠΉ ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½ΡΠΌΠΈ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ ΡΡΠ°Π»Π° ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ Π‘ΠΠ.
9.2. Π’Π΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ Π‘ΠΠ
ΠΠΎΠ΄Π΅Π»Ρ Π‘ΠΠ ΠΏΠΎΡΡΡΠΎΠ΅Π½Π° ΠΏΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ Β«ΠΊΠ»ΠΈΠ΅Π½Ρ β ΡΠ΅ΡΠ²Π΅ΡΒ». Π‘Π΅ΡΠ²Π΅Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΏΠΈΡΠΎΠΊ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ (ΡΡΠ½ΠΊΡΠΈΠΉ), ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠΌ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π·Π°ΠΏΡΠΎΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, Π²ΡΠΏΠΎΠ»Π½ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ. ΠΠΎΠ³Π΄Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅Ρ ΠΎΠ±ΠΌΠ΅Π½ Π΄Π°Π½Π½ΡΠΌΠΈ, ΡΡΠΈ Π΄Π°Π½Π½ΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠΊΡΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π²ΡΠ·Π²Π°Π½Ρ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ.