ΠΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΡ ΠΊ ΡΠ΅ΠΌΠ΅ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π»ΠΎΠ²ΡΡΠΊΠΈ Π·Π°Π΄Π°Π΄ΠΈΠΌΡΡ Π²ΠΎΠΏΡΠΎΡΠΎΠΌ: ΠΏΠΎΡΠ΅ΠΌΡ ΠΈΠΌΠ΅Π½Π½ΠΎ DLL? Π§Π΅ΠΌ ΠΏΠ»ΠΎΡ ΠΎ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π»ΠΎΠ²ΡΡΠΊΠΈ Π² ΠΠ₯Π-ΠΌΠΎΠ΄ΡΠ»Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ? Π‘Π°ΠΌΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠΌΠ½ΠΈΡΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ Π² Windows Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π² ΡΠ²ΠΎΠ΅ΠΌ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠΌ Π°Π΄ΡΠ΅ΡΠ½ΠΎΠΌ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅. ΠΠΎΡΡΠΎΠΌΡ Π°Π΄ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π°Π΄ΡΠ΅ΡΠΎΠΌ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ Π³Π΄Π΅-ΡΠΎ Π²Π½ΡΡΡΠΈ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° (ΡΠΈΡ. 10.1).
Π ΠΈΡ. 10.1. ΠΡΠΈΠΌΠ΅Ρ Π°Π΄ΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΡΠ°Π·Π½ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ²
Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΠΠ₯Π-ΡΠ°ΠΉΠ»ΠΎΠ², ΡΠ°ΠΉΠ»Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Π»Π΅Π³ΠΊΠΎ ΠΏΡΠΎΠ΅ΡΠΈΡΡΡΡΡΡ Π² Π°Π΄ΡΠ΅ΡΠ½ΠΎΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ΅Π³ΠΎ ΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠ°. Π Π°Π·ΠΌΠ΅ΡΡΠΈΠ² ΡΡΠ½ΠΊΡΠΈΡ Π»ΠΎΠ²ΡΡΠΊΠΈ Π² DLL ΠΈ ΡΠΊΠ°Π·Π°Π² Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ ΠΌΠΎΠ΄ΡΠ»Ρ ΡΡΠΎΠΉ DLL, ΠΌΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΏΠΎΠ»Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΎΠ½Π° ΡΠΌΠΎΠ³Π»Π°:
β’ ΡΠΏΡΠΎΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Ρ Π»ΠΎΠ²ΡΡΠΊΠΎΠΉ Π² Π°Π΄ΡΠ΅ΡΠ½ΠΎΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΈΡΡΠ»Π΅Π΄ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°;
β’ ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (Π°Π΄ΡΠ΅Ρ) ΡΡΠ½ΠΊΡΠΈΠΈ-Π»ΠΎΠ²ΡΡΠΊΠΈ Π² Π°Π΄ΡΠ΅ΡΠ½ΠΎΠΌ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ ΠΈΡΡΠ»Π΅Π΄ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°.
ΠΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π²ΡΡΠ΅ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΠΈ Ρ DLL ΠΏΡΠΎΠΈΠ»Π»ΡΡΡΡΠΈΡΠΎΠ²Π°Π½Ρ Π½Π° ΡΠΈΡ. 10.2 (ΠΡΠΎΡΠ΅ΡΡ 2 Π½Π° ΡΠΈΡΡΠ½ΠΊΠ΅ β ΠΏΡΠΎΡΠ΅ΡΡ, Π² ΠΊΠΎΡΠΎΡΡΠΉ Π²Π½Π΅Π΄ΡΡΠ΅ΡΡΡ Π»ΠΎΠ²ΡΡΠΊΠ°).
Π ΠΈΡ. 10.2. ΠΠ°Π³ΡΡΠ·ΠΊΠ° DLL Ρ Π»ΠΎΠ²ΡΡΠΊΠΎΠΉ Π² Π°Π΄ΡΠ΅ΡΠ½ΠΎΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΈΡΡΠ»Π΅Π΄ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°Π’Π΅ΠΏΠ΅ΡΡ Π½Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΏΡΠ΅ΠΏΡΡΡΡΠ²ΠΈΠΉ Π² Π²ΡΠ·ΠΎΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ-Π»ΠΎΠ²ΡΡΠΊΠΈ ΠΏΡΠΈ Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΠΈ Π·Π° Π΄ΡΡΠ³ΠΈΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠΌ.
...ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅
Π ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ DIIMain, Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΠ°Ρ (ΡΠΏΡΠΎΡΠ΅Π½Π½ΠΎ) ΠΏΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅/Π²ΡΠ³ΡΡΠ·ΠΊΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ. ΠΠ°Π»Ρ ΡΠΎΠ»ΡΠΊΠΎ, ΡΡΠΎ ΠΏΡΠΈ ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠΌ ΡΠΏΠΎΡΠΎΠ±Π΅ ΠΏΠΎΠ΄Π³ΡΡΠ·ΠΊΠΈ DLL ΡΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Π½Π΅ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ. ΠΡΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΡΡΠ»ΠΎΠΆΠ½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°Π»ΠΎΠ²ΡΡΠΊΠΈ, Π² ΡΠ΅ΠΌ Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠΊΠΎΡΠ΅ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ.
10.2. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Β«ΠΠΊΠΎΠ½Π½ΡΠΉ ΡΠΏΠΈΠΎΠ½Β»
ΠΠ΅ΡΠ΅ΠΉΠ΄Π΅ΠΌ, Π½Π°ΠΊΠΎΠ½Π΅Ρ, ΠΊ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠ°ΡΡΠΈ Π³Π»Π°Π²Ρ: ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ΅ΠΉ ΡΠΎΡΡΠ°Π²Π»ΡΡΡ ΡΠΏΠΈΡΠΎΠΊ (Π° ΡΠΎΡΠ½Π΅Π΅, Π΄Π΅ΡΠ΅Π²ΠΎ) Π²ΡΠ΅Ρ ΠΎΠΊΠΎΠ½, ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ²Π°, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡ ΠΏΠ΅ΡΠ΅Ρ Π²Π°Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° (Π½Π΅Π΄Π°ΡΠΎΠΌ ΠΌΡ ΡΡΠΎΠ»ΡΠΊΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΏΠΎΡΡΠ°ΡΠΈΠ»ΠΈ Π½Π° ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΠ΅ Π»ΠΎΠ²ΡΡΠ΅ΠΊ Windows).
ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠ²ΠΎΠ΅ Β«ΠΏΡΠΎΡΠΈΠ²ΠΎΠ·Π°ΠΊΠΎΠ½Π½ΠΎΠ΅Β» Π½Π°Π·Π²Π°Π½ΠΈΠ΅, ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΠΌΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ Π²Π΅ΡΡΠΌΠ° ΠΏΡΠΈΠ³ΠΎΠ΄ΠΈΡΡΡΡ ΠΏΡΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π° ΠΎΡΠ½ΡΠ΄Ρ Π½Π΅ΠΏΡΠΈ ΠΈΡ Π²Π·Π»ΠΎΠΌΠ΅ ΠΈ ΡΠΏΠΈΠΎΠ½Π°ΠΆΠ΅ (Ρ ΠΎΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ Π΄ΠΎΠ±ΡΠΎΡΠΎΠ²Π΅ΡΡΠ½ΠΎΡΡΠΈ Π»ΠΈΡΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ). Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π±ΡΠ»Π° Π½Π°ΠΉΠ΄Π΅Π½Π° ΠΎΡΠΈΠ±ΠΊΠ°, Π½Π° Π΄ΠΎΠ»Π³ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π·Π°ΠΊΡΠ°Π²ΡΠ°ΡΡΡ Π² ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² Π³Π». 2: ΠΈΠ·-Π·Π° Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΉ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΡΠΈΠ»Π΅ΠΉ ΠΏΡΠΈ ΡΡΡΠ½ΠΎΠΌ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π΅ ΡΠ΄Π°Π²Π°Π»ΠΎΡΡ Π΄ΠΎΠ±ΠΈΡΡΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠΎΠ²ΠΊΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Β«ΡΠ°ΠΌΠΊΠ°Β».
Π‘ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠ° ΠΎΡΠΊΡΡΡΡΡ ΠΎΠΊΠΎΠ½
Π‘ΠΏΠΈΡΠΎΠΊ (Π° ΡΠΎΡΠ½Π΅Π΅, Π΄Π΅ΡΠ΅Π²ΠΎ) ΠΎΠΊΠΎΠ½, ΠΎΡΠΊΡΡΡΡΡ Π² ΠΌΠΎΠΌΠ΅Π½Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½Π° ΡΠΈΡ. 10.3.
Π ΠΈΡ. 10.3. ΠΠ΅ΡΠ΅Π²ΠΎ ΠΎΡΠΊΡΡΡΡΡ ΠΎΠΊΠΎΠ½
Π€ΠΎΡΠΌΠ°, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½Π°Ρ Π½Π° ΡΠΈΡ. 10.3, ΠΈΠΌΠ΅Π΅Ρ ΠΈΠΌΡ f rmMain. ΠΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ TreeView ΠΈΠΌΠ΅Π΅Ρ ΠΈΠΌΡ tree. Π§Π°ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΎΡΠ²Π΅ΡΠ°ΡΡΠ°Ρ Π·Π° ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ Π΄Π΅ΡΠ΅Π²Π°, ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠ°. ΠΠ½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π²ΡΠΊΠΎΠ»ΡΠ·Ρ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Π½ΡΠΉ Π² Π³Π».2 ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΎΠΊΠΎΠ½. Π‘ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π΅ΡΠ΅Π²Π° ΠΎΠΊΠΎΠ½ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ LoadWindowsTree, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈ Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΠΎΠΊΠΎΠ½ Π²Π΅ΡΡ Π½Π΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ, ΡΠΎ Π΅ΡΡΡ ΠΎΠΊΠΎΠ½, ΡΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΌ ΠΊΠΎΡΠΎΡΡΡ ΡΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠΊΠ½ΠΎ Π Π°Π±ΠΎΡΠ΅Π³ΠΎ ΡΡΠΎΠ»Π° (Π»ΠΈΡΡΠΈΠ½Π³ 10.1).
...ΠΠΈΡΡΠΈΠ½Π³ 10.1. ΠΠ°ΡΠ°Π»ΠΎ ΡΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π΄Π΅ΡΠ΅Π²Π° ΠΎΠΊΠΎΠ½
procedure TfrmMain.LoadWindowsTree();
var
desktop: TTreeNode;
//enInfo: TEnumInfo;
begin
tree.Items.Clear;
//ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ·Π»Π° Π΄Π»Ρ Π Π°Π±ΠΎΡΠ΅Π³ΠΎ ΡΡΠΎΠ»Π°
desktop := tree.Items.Add(tree.Items.GetFirstNode, \'Π Π°Π±ΠΎΡΠΈΠΉ
ΡΡΠΎΠ»\');
//ΠΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΠΎΠΊΠΎΠ½
enInfo.tree := tree;
enInfo.parent := desktop;
EnumWindows(Addr(NewWindow), Integer(Addr(enInfo)));
end;
Π‘ΡΠ°Π·Ρ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΡΡΡΡΠΊΡΡΡΡ, ΠΈΠ½ΡΠ΅Π½ΡΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠΉ (Π΄Π°Π»Π΅Π΅ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ Π²ΠΈΠ΄Π½ΠΎ) ΠΏΡΠΈ ΡΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠΈ Π΄Π΅ΡΠ΅Π²Π°:
...Type
TEnumInfo = Record
tree: TTreeView; //ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ TreeView
parent: TTreeNode; //ΠΠ»Π΅ΠΌΠ΅Π½Ρ Π΄Π΅ΡΠ΅Π²Π°, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ
//ΡΠ΅ΠΊΡΡΠ΅ΠΌΡ ΠΎΠΊΠ½Ρ, Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠ΅
//ΠΎΠΊΠ½Π° ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΡΡΡΡΡ
end;
ΠΡΠΈ Π½Π°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ NewWindow (Π΅Π΅ Π°Π΄ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π½ Π² API-ΡΡΠ½ΠΊΡΠΈΡ EnumWindows). Π€ΡΠ½ΠΊΡΠΈΡ NewWindow (Π»ΠΈΡΡΠΈΠ½Π³ 10.2) ΡΠ΅ΡΠ°Π΅Ρ Π΄Π²Π΅ Π·Π°Π΄Π°ΡΠΈ. ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , ΠΎΠ½Π° Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ Π² Π΄Π΅ΡΠ΅Π²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½Ρ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠΌΡ ΠΎΠΊΠ½Ρ. ΠΠΎ-Π²ΡΠΎΡΡΡ , Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ ΠΏΠΎΠΈΡΠΊ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΡ ΠΎΠΊΠΎΠ½ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΠΈΡΡ Π²ΡΠ΅ ΠΎΠΊΠ½Π° (ΠΎΡ Π³Π»Π°Π²Π½ΠΎΠΉ ΡΠΎΡΠΌΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄ΠΎ ΠΊΠ½ΠΎΠΏΠΎΠΊ, Π½Π°Π΄ΠΏΠΈΡΠ΅ΠΉ ΠΈ Ρ. Π΄.).
...ΠΠΈΡΡΠΈΠ½Π³ 10.2.
ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π² Π΄Π΅ΡΠ΅Π²ΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎΠ± ΠΎΠΊΠ½Π΅ ΠΈ ΠΏΠΎΠΈΡΠΊ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΡ ΠΎΠΊΠΎΠ½
function NewWindow(wnd: HWND; param: LPARAM):BOOL; stdcall;
var
wndNode, parentNode: TTreeNode;
begin
wndNode := AddWindowToTree(wnd); //ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎΠ±
ΠΎΠΊΠ½Π΅ Π² Π΄Π΅ΡΠ΅Π²ΠΎ
//ΠΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΡ ΠΎΠΊΠΎΠ½
parentNode := enInfo.parent;
enInfo.parent := wndNode;
EnumChildWindows(wnd, Addr(NewWindow), param);
enInfo.parent := parentNode;
//ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ (ΠΏΠΎΡΠ»Π΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ
//Π²ΡΠ΅Ρ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΡ ΠΎΠΊΠΎΠ½)
NewWindow := True;
end;
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠ°Ρ Π² Π»ΠΈΡΡΠΈΠ½Π³Π΅ 10.3 ΡΡΠ½ΠΊΡΠΈΡ AddWindowToTree Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½Ρ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠΌΡ ΠΎΠΊΠ½Ρ, Π² Π΄Π΅ΡΠ΅Π²ΠΎ (ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠ΅ΠΊΡΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° ΠΎΠΊΠ½Π° ΠΈ ΠΈΠΌΡ ΠΎΠΊΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°):
...ΠΠΈΡΡΠΈΠ½Π³ 10.3.
ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΎΠΊΠ½Ρ, Π² Π΄Π΅ΡΠ΅Π²ΠΎ
function AddWindowToTree(wnd: HWND): TTreeNode;
var
caption, classname: String;
text: String;
node: TTreeNode;
begin
//ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ΠΊΡΡΠ° ΠΎΠΊΠ½Π°
SetLength(caption, SendMessage(wnd, WM_GETTEXTLENGTH, 0, 0) + 1);
SetLength(caption, SendMessage(wnd, WM_GETTEXT, Length(caption),
Integer(PAnsiChar(caption))));
//ΠΠΌΡ ΠΊΠ»Π°ΡΡΠ° ΠΎΠΊΠ½Π°
SetLength(classname, 1024);
SetLength(classname, GetClassName(wnd, PAnsiChar(classname),
100));
//Π€ΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅ΠΊΡΡΠ° Π΄Π»Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΅Π³ΠΎ Π² Π΄Π΅ΡΠ΅Π²ΠΎ
text := \'"\' + caption + \'" \' + classname;
node := enInfo.tree.Items.AddChild( enInfo.parent, text );
node.Data := Pointer(wnd); //ΠΠ΅ Π·Π°Π±ΡΠ²Π°Π΅ΠΌ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡΡ
//Π΄Π΅ΠΊΡΡΠΈΠΏΡΠΎΡ ΠΎΠΊΠ½Π°
AddWindowToTree := node;
end;
ΠΠΎΡ, ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ, ΠΈ Π²ΡΠ΅, ΡΡΠΎ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ Π΄Π΅ΡΠ΅Π²Π° ΠΎΠΊΠΎΠ½, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π½Π° ΡΠΈΡ. 10.3.
ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎΠ± ΠΎΠΊΠ½Π΅
Π‘Π»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ Β«ΠΎΠΊΠΎΠ½Π½ΠΎΠ³ΠΎ ΡΠΏΠΈΠΎΠ½Π°Β» ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π±ΠΎΠ»Π΅Π΅-ΠΌΠ΅Π½Π΅Π΅ ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎΠ± ΠΎΠΊΠ½Π΅, Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠΌ Π² Π΄Π΅ΡΠ΅Π²Π΅. Π€ΠΎΡΠΌΠ° Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ ΠΎ Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΠΎΠΌ Π² Π΄Π΅ΡΠ΅Π²Π΅ ΠΎΠΊΠ½Π΅ (Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠΎ ΠΏΡΠ΅ΡΠ»ΠΎΠ²ΡΡΠ°Ρ ΠΊΠ½ΠΎΠΏΠΊΠ° ΠΡΡΠΊ) ΠΏΠΎΠΊΠ°Π·Π°Π½Π° Π½Π° ΡΠΈΡ. 10.4.
Π ΠΈΡ. 10.4. Π€ΠΎΡΠΌΠ° ΡΠ²ΠΎΠΉΡΡΠ² ΠΎΠΊΠ½Π°
ΠΠ°ΡΠΈΠ½Π°Π΅ΡΡΡ Π²ΡΠ΅ Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΏΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΠΌΠ΅Π½Ρ ΠΡΠ°Π²ΠΊΠ° β Π‘Π²ΠΎΠΉΡΡΠ²Π° Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ ShowWindowProp ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° f rmWindowProp. ΠΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ ΠΎΠΊΠ½Π°, ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌ Π½ΡΠΆΠ½ΠΎ ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΡ (Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΡΡ Π² ΠΏΠΎΠ»Π΅ Data ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΏΡΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠΈ Π΄Π΅ΡΠ΅Π²Π°) (Π»ΠΈΡΡΠΈΠ½Π³ 10.4).
...ΠΠΈΡΡΠΈΠ½Π³ 10.4.
ΠΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ° ΡΠΎΡΠΌΡ ΡΠ²ΠΎΠΉΡΡΠ² Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°
procedure TfrmWindowProp.ShowWindowProp(window: HWND);
begin
wnd := window;
LoadWindowInfo();
ShowModal(); //ΠΠ΅ Π·Π°Π±ΡΠ²Π°Π΅ΠΌ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ ΡΠ°ΠΌΠΈ ΡΠ΅Π±Ρ
end;
ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ wnd, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΠΉ BShowWindowProp Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ ΠΎΠΊΠ½Π°, ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ»Π΅Π½ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ° Tf rmWindowProp. ΠΠ½Π° Π½ΡΠΆΠ½Π° Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π΄ΡΡΠ³ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΠΎΡΠΌΡ Tf rmWindowProp ΠΌΠΎΠ³Π»ΠΈ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΡ ΠΎΠΊΠ½Π°.
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°, ΠΈΠΌΠ΅Π½ΠΈ ΠΊΠ»Π°ΡΡΠ°, ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° ΠΎΠΊΠ½Π°, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ±Π»Π°ΡΡΠΈ ΡΠΊΡΠ°Π½Π°, Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΠΎΠΉ ΠΎΠΊΠ½ΠΎΠΌ, ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ Π² ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ΅ LoadWindowInf ΠΎ (Π»ΠΈΡΡΠΈΠ½Π³ 10.5).
...ΠΠΈΡΡΠΈΠ½Π³ 10.5.
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎΠ± ΠΎΠΊΠ½Π΅
procedure TfrmWindowProp.LoadWindowInfo();
var
rect: TRect;
buffer: String;
begin
//Π‘Π±ΠΎΡ ΡΠ²Π΅Π΄Π΅Π½ΠΈΠΉ ΠΎΠ± ΠΎΠΊΠ½Π΅
//..ΠΈΠΌΡ ΠΊΠ»Π°ΡΡΠ°
SetLength(buffer, 1024);
SetLength(buffer, GetClassName(wnd, PAnsiChar(buffer), 1024));
txtClassName.Text := buffer;
//..ΠΈΠΌΡ (Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ) ΠΎΠΊΠ½Π°
SetLength(buffer, SendMessage(wnd, WM_GETTEXTLENGTH, 0, 0) + 1);
SendMessage(wnd, WM_GETTEXT, Length(buffer),
Integer(PAnsiChar(buffer)));
txtWindowName.Text := buffer;
//..ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ (ΠΈΠ»ΠΈ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ ΠΌΠ΅Π½Ρ) ΠΎΠΊΠ½Π°
txtId.Text := IntToStr(GetWindowLong(wnd, GWL_ID));
//..ΠΎΠΊΠΎΠ½Π½ΡΠΉ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ
GetWindowRect(wnd, rect);
txtWindowRect.Text :=
\'(\' + IntToStr(rect.Left) + \',\' + IntToStr(rect.Top) + \')\' +
\' β \' +
\'(\' + IntToStr(rect.Right) + \',\' + IntToStr(rect.Bottom) + \') \' +
IntToStr(rect.Rightβrect.Left) + \'x\' + IntToStr(rect.Bottom β
rect.Top);
//ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΡΠΈΠ»Ρ ΠΎΠΊΠ½Π°
LoadWindowStyle();
LoadWindowExStyle();
end;
ΠΡΠ»ΠΈ Π²Ρ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅Π»ΠΈ Π»ΠΈΡΡΠΈΠ½Π³ 10.5, ΡΠΎ ΠΌΠΎΠ³Π»ΠΈ Π·Π°ΠΌΠ΅ΡΠΈΡΡ Π²ΡΠ·ΠΎΠ²Ρ Π΄Π²ΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡ Π² Π΄Π²ΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ ΡΡΡΠΎΠΊΠ°Ρ ΠΊΠΎΠ΄Π°. ΠΡΠΎΡΠ΅Π΄ΡΡΠ° LoadWindowStyle Π·Π°ΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΠΏΠΈΡΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΈ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ ΠΎΠΊΠΎΠ½Π½ΡΡ ΡΡΠΈΠ»Π΅ΠΉ (ΡΠΌ. ΡΠΈΡ. 10.4), Π° ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° LoadWindowExStyle ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ Π·Π°ΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΠΏΠΈΡΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΈ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ (ΠΈΠ»ΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΡΡ ) ΡΡΠΈΠ»Π΅ΠΉ ΠΎΠΊΠ½Π°.
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ LoadWindowStyle ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡΡ Π² Π»ΠΈΡΡΠΈΠ½Π³Π΅ 10.6
...ΠΠΈΡΡΠΈΠ½Π³ 10.6.
ΠΠ°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠΎΠ² ΠΎΠΊΠΎΠ½Π½ΡΡ ΡΡΠΈΠ»Π΅ΠΉ
procedure TfrmWindowProp.LoadWindowStyle();
var
i: Integer;
style: DWORD;
begin
style := GetWindowLong(wnd, GWL_STYLE);
lstStyle.Clear();
lstAvailStyle.Clear();
//ΠΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈΠ· 32-Π±ΠΈΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΡ ΡΡΠΈΠ»Ρ ΠΎΠΊΠ½Π°
for i := 0 to 17 do
if styles[i].value and style <> 0 then
begin
//Π‘ΡΠΈΠ»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ
lstStyle.Items.Add(styles[i].name);
styles[i].used := True;
end
else
begin
//Π‘ΡΠΈΠ»Ρ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ
lstAvailStyle.Items.Add(styles[i].name);
styles[i].used := False;
end;
end;
ΠΠΌΠ΅ΡΡΠΎ Π³ΡΠΎΠΌΠΎΠ·Π΄ΠΊΠΎΠΉ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π½Π°Π»ΠΈΡΠΈΡ Π² Π·Π½Π°ΡΠ΅Π½ΠΈΠΈ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½Π½ΠΎΠΌ API-ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ GetWindowLong, Π±ΠΈΡΠΎΠ² ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ³ΠΎ ΡΡΠΈΠ»Ρ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, case Π·Π΄Π΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² styles ΡΡΡΡΠΊΡΡΡ Styleinf ΠΎ. ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠΈΠΏΠ° ΡΡΡΡΠΊΡΡΡΡ (Π·Π°ΠΏΠΈΡΠΈ) Styleinf ΠΎ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
...type
StyleInfo = record
value: DWORD; //ΠΠΎΠ΄ ΡΡΠΈΠ»Ρ
name: String; //Π’Π΅ΠΊΡΡΠΎΠ²ΠΎΠ΅ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠΈΠ»Ρ
used: Boolean; //Π‘Π»ΡΠΆΠ΅Π±Π½ΠΎΠ΅ ΠΏΠΎΠ»Π΅
end;
ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΌΠ°ΡΡΠΈΠ²Π° styles Ρ ΡΠ°Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ ΠΎΠΊΠΎΠ½Π½ΠΎΠΌ ΡΡΠΈΠ»Π΅. ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°, ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΡΡΡΡΠΊΡΡΡΡ Stylelnfo ΠΈ ΠΏΡΠΎΡΠΈΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Π½ΡΡ Π² ΡΡΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ ΡΠΈΠΏΠΎΠ² Π΄Π°Π½Π½ΡΡ , Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΠΌΠΎΠ΄ΡΠ»Π΅ WindowData, ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΠΎΠΌ Π½Π° Π΄ΠΈΡΠΊΠ΅ Π² ΠΏΠ°ΠΏΠΊΠ΅ Ρ Π½ΠΎΠΌΠ΅ΡΠΎΠΌ Π³Π»Π°Π²Ρ.