Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Delphi. Π’Ρ€ΡŽΠΊΠΈ ΠΈ эффСкты». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 18

Автор Π’Π°Π»Π΅Ρ€ΠΈΠΉ Борисок

Листинг 4.12.

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ располоТСния ΠΏΠ°ΠΏΠΊΠΈ для Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ²

function GetTempDir(): String;

var

buffer: String;

len: UINT;

begin

SetLength(buffer, MAX_PATH + 1);

len := GetTempPath(MAX_PATH, PAnsiChar(buffer));

SetLength(buffer, len);

GetTempDir := buffer;

end;

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Windows API прСдусматриваСт ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΈΠ·Π±Π°Π²Π»ΡΡŽΡ‰ΡƒΡŽ программиста ΠΎΡ‚ нСобходимости ΠΏΠΎΠ΄Π±ΠΈΡ€Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π° Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ Π±Ρ‹Π»ΠΈ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠΈ (это Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΠΏΠ°ΠΏΠΊΠ° Temp ). Имя этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ – GetTempFileName. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π΅Π΅ использования ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π² листингС 4.13.

...

Листинг 4.13.

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°

function GetTempFile(prefix: String = \'~mytmp\'): String;

var

buffer, dir: String;

begin

dir := GetTempDir();

//ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° (систСма сама опрСдСляСт

имя,

//ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ для Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠΈ)

SetLength(buffer, MAX_PATH + 1);

GetTempFileName(PAnsiChar(dir), PAnsiChar(prefix), 0,

PAnsiChar(buffer));

GetTempFile := buffer;

end;

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Π°Ρ Π² листингС 4.13 функция Π² качСствС ΠΏΠ°ΠΏΠΊΠΈ для Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΏΠ°ΠΏΠΊΡƒ Temp. Однако Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ GetTempFileName ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для получСния ΠΈΠΌΠ΅Π½ Ρ„Π°ΠΉΠ»ΠΎΠ² Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… любой ΠΏΠ°ΠΏΠΊΠΈ.

ΠšΡ€ΠΎΠΌΠ΅ ΠΏΡƒΡ‚ΠΈ ΠΏΠ°ΠΏΠΊΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ», функция GetTempFileName ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ строку-прСфикс для ΠΈΠΌΠ΅Π½ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° ΠΈ цСлочислСнноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€). Если Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π½Π΅ Ρ€Π°Π²Π΅Π½ Π½ΡƒΠ»ΡŽ, Ρ‚ΠΎ Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅ просто прибавляСтся справа ΠΊ строкС prefix. Никаких ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ Π½Π° ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ²ΡˆΠ΅Π³ΠΎΡΡ ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π° ΠΏΡ€ΠΈ этом Π½Π΅ производится. Если ΠΆΠ΅ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π² 0, Ρ‚ΠΎ систСма сама сформируСт ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ имя Ρ„Π°ΠΉΠ»Π° Π±Ρ‹Π»ΠΎ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π² Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΡ€ΠΈ этом создаСтся ΠΈ сам Ρ„Π°ΠΉΠ».

Π‘ΡƒΡ„Π΅Ρ€ (послСдний ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ GetTempFileName) Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ МАΠ₯РАВН символов, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ функция записываСт Π² Π½Π΅Π³ΠΎ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ опрСдСлСния ΠΏΠ°ΠΏΠΊΠΈ для Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ², получСния ΠΈΠΌΠ΅Π½ΠΈ для Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°, Π° Ρ‚Π°ΠΊΠΆΠ΅ опрСдСлСния систСмных ΠΏΠ°ΠΏΠΎΠΊ Windows приводится Π½Π° рис. 4.2.

Рис. 4.2. Папки WINDOWS, system, Temp ΠΈ имя для Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°

ΠŸΡ€ΠΎΡ‡ΠΈΠ΅ систСмныС ΠΏΡƒΡ‚ΠΈ

Π’ Windows сущСствуСт ряд Π΄Ρ€ΡƒΠ³ΠΈΡ… систСмных ΠΏΡƒΡ‚Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Π°ΠΊ ΠΈΠ»ΠΈ ΠΈΠ½Π°Ρ‡Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠ³ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ. ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΎΠ½ΠΈ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ просто, Ρ‡Π΅ΠΌ ΠΏΡƒΡ‚ΠΈ ΠΊ систСмным ΠΏΠ°ΠΏΠΊΠ°ΠΌ (листинг 4.14).

...

Листинг 4.14. ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΡ‡ΠΈΡ… систСмных ΠΏΡƒΡ‚Π΅ΠΉ

function GetSpecialDir(dirtype: Integer): String;

var

buffer: String;

begin

SetLength(buffer, MAX_PATH + 1);

SHGetSpecialFolderPath(0, PAnsiChar(buffer), dirtype, False);

GetSpecialDir := buffer;

end;

Π—Π΄Π΅ΡΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ функция ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы (Windows Shell) SHGetSpecialFolderPath, Π΅Π΅ объявлСниС находится Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ ShlObj. Π‘Ρ€Π΅Π΄ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ самыми Π·Π½Π°Ρ‡ΠΈΠΌΡ‹ΠΌΠΈ для нас (ΠΊΡ€ΠΎΠΌΠ΅ Π±ΡƒΡ„Π΅Ρ€Π° Π΄Π»ΠΈΠ½ΠΎΠΉ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ МАΠ₯РАВН символов для помСщСния Π² Π½Π΅Π³ΠΎ ΠΏΡƒΡ‚ΠΈ) ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π΄Π²Π° послСдних. Π’Ρ€Π΅Ρ‚ΠΈΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ SHGetSpecialFolderPath ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для указания Ρ‚ΠΎΠ³ΠΎ, располоТСниС ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠ°ΠΏΠΊΠΈ нас интСрСсуСт. Если Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ SHGetSpecialFolderPath Π½Π΅ Ρ€Π°Π²Π΅Π½ False, Ρ‚ΠΎ Π·Π°ΠΏΡ€ΠΎΡˆΠ΅Π½Π½Π°Ρ ΠΏΠ°ΠΏΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ создана, Ссли Π΄ΠΎ этого ΠΎΠ½Π° Π½Π΅ сущСствовала.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ GetSpesialDir для составлСния списка (Π² элСмСнтС управлСния ListView) Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… систСмных ΠΏΡƒΡ‚Π΅ΠΉ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π² листингС 4.15. Из Π½Π΅Π³ΠΎ Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ смоТСтС ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π° цСлочислСнных констант, ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ°ΠΏΠΊΠΈ.

...

Листинг 4.15.

ИспользованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ GetSpecialDir

procedure TForm3.Button1Click(Sender: TObject);

var

item: TListItem;

begin

lvwPathes.Clear;

//ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΡƒΡ‚Π΅ΠΉ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… систСмных ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ²

//..Π Π°Π±ΠΎΡ‡ΠΈΠΉ стол

item := lvwPathes.Items.Add();

item.Caption := \'Π Π°Π±ΠΎΡ‡ΠΈΠΉ стол\

item.SubItems.Insert(0, GetSpecialDir(CSIDL_DESKTOPDIRECTORY));

//..Π˜Π·Π±Ρ€Π°Π½Π½ΠΎΠ΅

item := lvwPathes.Items.Add();

item.Caption := \'Π˜Π·Π±Ρ€Π°Π½Π½ΠΎΠ΅\

item.SubItems.Insert(0, GetSpecialDir(CSIDL_FAVORITES));

//..Π¨Ρ€ΠΈΡ„Ρ‚Ρ‹

item := lvwPathes.Items.Add();

item.Caption := \'Π¨Ρ€ΠΈΡ„Ρ‚Ρ‹\

item.SubItems.Insert(0, GetSpecialDir(CSIDL_FONTS));

//..Мои Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹

item := lvwPathes.Items.Add();

item.Caption := \'Мои Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹\

item.SubItems.Insert(0, GetSpecialDir(CSIDL_PERSONAL));

//..ПослСдниС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹

item := lvwPathes.Items.Add();

item.Caption := \'ПослСдниС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹\

item.SubItems.Insert(0, GetSpecialDir(CSIDL_RECENT));

//..Π˜ΡΡ‚ΠΎΡ€ΠΈΡ

item := lvwPathes.Items.Add();

item.Caption := \'Π˜ΡΡ‚ΠΎΡ€ΠΈΡ\

item.SubItems.Insert(0, GetSpecialDir(CSIDL_HISTORY));

//..ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ

item := lvwPathes.Items.Add();

item.Caption := \'ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ\

item.SubItems.Insert(0, GetSpecialDir(CSIDL_SENDTO));

//..МСню ΠŸΡƒΡΠΊ

item := lvwPathes.Items.Add();

item.Caption := \'ΠŸΡƒΡΠΊ\

item.SubItems.Insert(0, GetSpecialDir(CSIDL_STARTMENU));

//..МСню ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

item := lvwPathes.Items.Add();

item.Caption := \'ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹\

item.SubItems.Insert(0, GetSpecialDir(CSIDL_PROGRAMS));

//..МСню Автозагрузка

item := lvwPathes.Items.Add();

item.Caption := \'Автозагрузка\

item.SubItems.Insert(0, GetSpecialDir(CSIDL_STARTUP));

//..Папка с шаблонами Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²

item := lvwPathes.Items.Add();

item.Caption := \'Π¨Π°Π±Π»ΠΎΠ½Ρ‹\

item.SubItems.Insert(0, GetSpecialDir(CSIDL_TEMPLATES));

end;

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΈΠ· листинга 4.14 приводится Π½Π° рис. 4.3.

Рис. 4.3. ΠŸΡ€ΠΎΡ‡ΠΈΠ΅ систСмныС ΠΏΡƒΡ‚ΠΈ Windows

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π² листингС 4.15 ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π½Π΅ всС ΠΏΡƒΡ‚ΠΈ, доступныС с использованиСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ SHGetSpecialFolderPath. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ сущСствуСт ряд Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… (Π½Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ Π½Π° дискС) папокМой ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€, ΠŸΡ€ΠΈΠ½Ρ‚Π΅Ρ€Ρ‹, Π‘Π΅Ρ‚Π΅Π²ΠΎΠ΅ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Ρ‚ Π΄.

Для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π΅ΠΌΡ‹Ρ… Π² листингС 4.15 ΠΏΠ°ΠΏΠΎΠΊ Π΅ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΠ°ΠΏΠΊΠΈ, содСрТимоС ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… доступно всСм ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ:

β€’ CSIDL_COMMON_DESKTOPDIRECTORY – содСрТимоС этой ΠΏΠ°ΠΏΠΊΠΈ отобраТаСтся Π½Π° Π Π°Π±ΠΎΡ‡Π΅ΠΌ столС всСх ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ;

β€’ CSIDL_COMMON_DOCUMENTS – ΠΎΠ±Ρ‰ΠΈΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹;

β€’ CSIDL_COMMON_FAVORlTESβ€”ΠΎΠ±Ρ‰ΠΈΠ΅ элСмСнты ΠΏΠ°ΠΏΠΊΠΈ Π˜Π·Π±Ρ€Π°Π½Π½ΠΎΠ΅;

β€’ CSIDL_COMMON_PROGRAMS – ΠΎΠ±Ρ‰ΠΈΠ΅ для всСх ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ (ΠΏΡƒΠ½ΠΊΡ‚ ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ мСню ΠŸΡƒΡΠΊ);

β€’ CSIDL_COMMON_STARTMENU – ΠΎΠ±Ρ‰ΠΈΠ΅ элСмСнты, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΡ‹Π΅ вмСню ΠŸΡƒΡΠΊ;

β€’ CSIDL_COMMON_STARTUP – ΠΎΠ±Ρ‰ΠΈΠ΅ элСмСнты мСню Автозагрузка;

β€’ CSIDL_COMMON_TEMPLATES – ΠΏΠ°ΠΏΠΊΠ° с ΠΎΠ±Ρ‰ΠΈΠΌΠΈ для всСх ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ шаблонами Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²....

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΈΠ· пСрСчислСнных Π²Ρ‹ΡˆΠ΅ ΠΏΡƒΡ‚Π΅ΠΉ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² систСмах Windows Π½Π° ядрС NT, Π½ΠΎ Π½Π΅ Π² Windows 95/98/МС.

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈ установка Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΏΠ°ΠΏΠΊΠΈ

Π’ΠΎ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ прилоТСния для Π½Π΅Π³ΠΎ запоминаСтся ΠΏΠ°ΠΏΠΊΠ°, которая считаСтся Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ (для этого прилоТСния). ΠŸΡ€ΠΈ Π³Ρ€Π°ΠΌΠΎΡ‚Π½ΠΎΠΌ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΏΠ°ΠΏΠΊΠΎΠΉ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ рассмотрСнныС Π΄Π°Π»Π΅Π΅ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡƒΡ‚ΠΈ.

Для опрСдСлСния Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΏΠ°ΠΏΠΊΠΈ прилоТСния ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ GetCurrentDir, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π² листингС 4.16.

...

Листинг 4.16.

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΏΠ°ΠΏΠΊΠΈ

function GetCurrentDir(): String;

var

len: Integer;

buffer: String;

begin

SetLength(buffer, MAX_PATH + 1);

len := GetCurrentDirectory(MAX_PATH, PAnsiChar(buffer));

GetCurrentDir := Copy(buffer, 1, len);

end;

Ѐункция опрСдСлСния ΠΏΡƒΡ‚ΠΈ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΏΠ°ΠΏΠΊΠΈ основана Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ API-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ GetCurrentDirectory. Π’ΠΏΠΎΠ»Π½Π΅ СстСствСнно, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠ°Ρ€Ρƒ – Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для задания Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° SetCurrentDirectory. ОбъявлСниС этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

...

function SetCurrentDirectory(lpPathName: PChar): BOOL; stdcall;

Ѐункция ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΏΡƒΡ‚ΡŒ ΠΏΠ°ΠΏΠΊΠΈ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½Π΅Π½ΡƒΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² случаС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ выполнСния.

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡƒΡ‚Π΅ΠΉ

Рассмотрим нСсколько Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠ³ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ, Ссли Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ прСобразования ΠΏΡƒΡ‚Π΅ΠΉ. Π˜ΠΌΠ΅Π΅Ρ‚ΡΡ Π² Π²ΠΈΠ΄Ρƒ ΠΏΡ€Π΅ΠΆΠ΄Π΅ всСго ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ Ρ„Π°ΠΉΠ»ΠΎΠ² Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ MS-DOS ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ. Π­Ρ‚ΠΎΡ‚ Π²ΠΈΠ΄ прСобразования наглядно продСмонстрирован Π½Π° рис. 4.4 (вСрхняя Ρ‡Π°ΡΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡ‹).

Иногда оказываСтся ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΏΡƒΡ‚ΠΈ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΏΠ°ΠΏΠΊΠΈ, Π½ΠΎ Π½Π΅ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠ³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° диска. НапримСр, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ, ΡΠ²Π»ΡΡŽΡ‰ΠΈΠ΅ΡΡ Π½Π΅Π΄Π΅Π»ΠΈΠΌΡ‹ΠΌΠΈ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΌΠΎΠ³ΡƒΡ‚ фактичСски ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ ΠΈΠ· большого количСства Ρ„Π°ΠΉΠ»ΠΎΠ², располоТСнных Π² Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠ°ΠΏΠΊΠ°Ρ… (Images, Movies, Embed). Π‘Π°ΠΌΠΈ ΠΏΠ°ΠΏΠΊΠΈ располоТСны Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, Π³Π΄Π΅ ΠΈ основной Ρ„Π°ΠΉΠ» Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°, ΠΈΠ»ΠΈ Π½ΠΈΠΆΠ΅ ΠΏΠΎ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ (Π²ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΏΠ°ΠΏΠΊΠ°Ρ…). Как Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ прилоТСния со всСми Π½ΡƒΠΆΠ½Ρ‹ΠΌΠΈ ΠΏΠ°ΠΏΠΊΠ°ΠΌΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΎΠ΅ мСсто (Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ диск ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€, Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ) Π΅Π³ΠΎ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ, ΠΏΡ€ΠΈ этом рассчитывая, Ρ‡Ρ‚ΠΎ Π² ΠΏΠ°ΠΏΠΊΠ°Ρ… Images, Movies ΠΈ Embed содСрТится Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ нуТная информация. ПослСднСС Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Β«Π·Π½Π°Ρ‚ΡŒΒ», ΠΊΠ°ΠΊΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ Π² ΠΊΠ°ΠΊΠΈΡ… ΠΏΠ°ΠΏΠΊΠ°Ρ… Π΅ΠΌΡƒ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС пригодится ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ нСсСт Π² сСбС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ количСствС ΠΈ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ² ΠΈΠ· ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°, Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π² качСствС ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠ³ΠΎ, для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΡ‹ смогли Π½Π°ΠΉΡ‚ΠΈ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π² этом ΠΏΡƒΡ‚ΠΈ Ρ„Π°ΠΉΠ» ΠΈΠ»ΠΈ ΠΏΠ°ΠΏΠΊΡƒ.

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ· Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎΠ³ΠΎ Π² ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚ продСмонстрировано Π½Π° рис. 4.4 (ниТняя Ρ‡Π°ΡΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡ‹). ΠŸΡ€ΠΈ этом Π² качСствС исходного ΠΏΡƒΡ‚ΠΈ бСрСтся содСрТимоС тСкстового поля Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ, Π° Π² качСствС ΠΏΡƒΡ‚ΠΈ ΠΏΠ°ΠΏΠΊΠΈ для построСния ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΡƒΡ‚ΠΈ – содСрТимоС поля ВСкущая ΠΏΠ°ΠΏΠΊΠ°.

Рис. 4.4. ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡƒΡ‚Π΅ΠΉ

На всякий случай Π½ΡƒΠΆΠ½ΠΎ ΡƒΡ‚ΠΎΡ‡Π½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌ ΠΏΡƒΡ‚ΠΈ элСмСнт. ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ (Π½ΠΈΠΊΡƒΠ΄Π° ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π½Π΅ Π½Π°Π΄ΠΎ), Π° элСмСнт. ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΏΠ°ΠΏΠΊΡƒ, Ρ€Π°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡƒΡŽ Π½Π° ΠΎΠ΄ΠΈΠ½ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π²Ρ‹ΡˆΠ΅ (Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ). Π’Π°ΠΊΠΆΠ΅ слСдуСт ΡƒΡ‚ΠΎΡ‡Π½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ΄ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹ΠΌ ΠΏΡƒΡ‚Π΅ΠΌ понимаСтся ΠΏΡƒΡ‚ΡŒ, ΠΊΠΎΡ€Π½Π΅Π²Ρ‹ΠΌ элСмСнтом ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ являСтся \\ ΠΈΠ»ΠΈ <диск>: \ (Π‘: \, D: \ ΠΈΡ… Π΄.).