Шрифт:
Интервал:
Закладка:
else ShowWindow(FindWindow('Shell_TrayWnd', nil), SW_HIDE); //Скрыть TaskBar
end;
procedure applicationInCtrlAltDelList(visi:boolean);
begin
if visi then begin
//Show
RegisterServiceProcess(GetCurrentProcessID, 0);
end else begin
//Hide
RegisterServiceProcess(GetCurrentProcessID, 1);
end;
end;
procedure applicationInTaskBar(visi:boolean);
begin
if visi then windows.ShowWindow(FindWindow(nil, @Application.Title[1]), SW_SHOW)
else windows.ShowWindow(FindWindow(nil, @Application.Title[1]), SW_HIDE);
end;
procedure RussianKbdLayout;//На русский
var Layout: array[0..KL_NAMELENGTH] of char;
begin
LoadKeyboardLayout(StrCopy(Layout, '00000419'), KLF_ACTIVATE);
end;
procedure EnglishKbdLayout;//На английский
var Layout: array[0..KL_NAMELENGTH] of char;
begin
LoadKeyboardLayout(StrCopy(Layout, '00000409'), KLF_ACTIVATE);
end;
procedure UkrainianKbdLayout;//На украинский
var Layout: array[0..KL_NAMELENGTH] of char;
begin
LoadKeyboardLayout(StrCopy(Layout, pChar(intToHex(LANG_UKRAINIAN+$400, 8))), KLF_ACTIVATE);
end;
//запустить текущий ScreenSaver
procedure RunCurrentScreenSaver;
begin
SendMessage(Application.Handle, WM_SYSCOMMAND, SC_SCREENSAVE, 0);
end;
//очистить меню "Документы"
procedure clearDocuments;
begin
SHAddToRecentDocs(SHARD_PATH, nil);
end;
//добавить документ в меню 'Документы'
// Для данного файла должно быть зарегистрировано средство просмотра
procedure addFileToDocuments(const fileName:string);
begin
SHAddToRecentDocs(SHARD_PATH, pchar(fileName));
end;
//Значение функции TRUE если мелкий шрифт
function SmallFonts:Boolean;
var DC:HDC;
begin
DC:=GetDC(0);
Result:=(GetDeviceCaps(DC, LOGPIXELSX) = 96);
{ В случае крупного шрифта будет 120}
ReleaseDC(0, DC);
end;
function DriveExists(Drive : Byte) : Boolean;
begin
Result := Boolean(GetLogicalDrives AND (1 SHL Drive))
end;
//'?';'Path does not exists';'Removable';'Fixed';'Remote';'CD-ROM';'RAMDISK'
function CheckDriveType(Drive : Byte) : String;
var
DriveLetter : Char;
DriveType : UInt;
begin
DriveLetter := Char(Drive + $41);
DriveType := GetDriveType(PChar(DriveLetter + ':'));
Case DriveType of
0 : Result := '?';
1 : Result := 'Path does not exists';
DRIVE_REMOVABLE : Result := 'Removable';
DRIVE_FIXED : Result := 'Fixed';
DRIVE_REMOTE : Result := 'Remote';
DRIVE_CDROM : Result := 'CD-ROM';
DRIVE_RAMDISK : Result := 'RAMDISK'
Else Result := 'Unknown';
end;
end;
//GetVolumeInformation
function GetFileSysName(Drive : Byte) : String;
var
DriveLetter : Char;
NoMatter : DWORD;
FileSysName : Array[0..MAX_PATH] of Char;
begin
DriveLetter := Char(Drive + $41);
GetVolumeInformation(PChar(DriveLetter + ':'), Nil, 0, nil, NoMatter, NoMatter, FileSysName, SizeOf(FileSysName));
Result := FileSysName;
end;
function GetVolumeName(Drive : Byte) : String;
var
DriveLetter : Char;
NoMatter : DWORD;
VolumeName : Array[0..MAX_PATH] of Char;
begin
DriveLetter := Char(Drive + $41);
GetVolumeInformation(PChar(DriveLetter + ':'), VolumeName, SizeOf(VolumeName), nil, NoMatter, NoMatter, Nil, 0);
Result := VolumeName;
end;
procedure StartFromRegistry(appName,appPath:string);
var reg: TRegistry;
begin
reg := TRegistry.Create;
reg.RootKey := HKEY_LOCAL_MACHINE;
reg.LazyWrite := false;
reg.OpenKey('SoftwareMicrosoftWindowsCurrentVersionRun', true{canCreate});
reg.WriteString(appname, appPath);
reg.CloseKey;
reg.free;
end;
procedure StartServiceFromRegistry(appName,appPath:string);
var reg: TRegistry;
begin
reg := TRegistry.Create;
reg.RootKey := HKEY_LOCAL_MACHINE;
reg.LazyWrite := false;
reg.OpenKey('SoftwareMicrosoftWindowsCurrentVersionRunServices', true{canCreate});
reg.WriteString(appname, appPath);
reg.CloseKey;
reg.free;
end;
procedure StartFromWinIni(appPath:string);
var
WinIni : TIniFile;
WinIniFileName : array[0..MAX_PATH] of char;s : string;
begin
GetWindowsDirectory(WinIniFileName, sizeof(WinIniFileName));
StrCat(WinIniFileName, 'win.ini');
WinIni := TIniFile.Create(WinIniFileName);
s := WinIni.ReadString('windows', 'run', '');
if s = '' then s := appPath
else s := s + ';' + appPath;
WinIni.WriteString('windows', 'run', s);
WinIni.Free;
end;
function IsInstalled(FileExe: String): Boolean;
var
reg : TRegistry;
temp: String;
begin
result:=False;
reg:= Tregistry.Create;
try
reg.RootKey:= HKEY_LOCAL_MACHINE;
if reg.OpenKey('SoftwareMicrosoftWindowsCurrentVersionApp Paths'+FileExe, false) then begin
if reg.ValueExists('') then begin
temp := reg.readString('Path');
result := FileExists(temp+''+FileExe);
end;
end;
finally
reg.Free;
end;
end;
END.
Каким именно релизом Delphi вообще стоит пользоваться для каждой конкретной версии?
Nomadic отвечает:
A: Во-первых, вы можете узнать точную версию Delphi, если в окошке Help | About нажмете кнопку Alt и, не отпуская, наберете «VERSION».
Delphi 1 следует апгрейдить до версии 1.02 с помощью патчей.
Delphi 2 следует апгрейдить до версии 2.01. Это полноценный дистрибутив. Эту версию можно, в частности, узнать по странице «Internet» в палитре компонентов. Ее точная версия 2.0.76.0.
Delphi 3 следует взять версии 3.02. Это полноценный дистрибутив 3.01 и патчи до 3.02.
Delphi 4 же должна быть обновлена вторым, а затем третьим Service Pack'ами, которые можно взять на сайте Inprise.
Версии Delphi 4.3 и 4.5 являются обманными версиями. В действительности это ранние беты Delphi 4.0.
Примечания
1
64K для Win3.1 & 64K только для 16-битной подсистемы Win95. Для получения дополнительной информации обратитесь в Microsoft или к MSDN.
2
Как побочный эффект при разрушении вышеописанных дескрипторов, TTabbedNotebook, используемый в данном примере, гораздо быстрее выполняет перемещение страниц.
- Фундаментальные алгоритмы и структуры данных в Delphi - Джулиан Бакнелл - Программирование
- iOS. Приемы программирования - Вандад Нахавандипур - Программирование
- QT 4: программирование GUI на С++ - Жасмин Бланшет - Программирование
- C# для профессионалов. Том II - Симон Робинсон - Программирование
- Язык программирования C#9 и платформа .NET5 - Эндрю Троелсен - Программирование
- Программирование игр и головоломок - Жак Арсак - Программирование
- Стандарты программирования на С++. 101 правило и рекомендация - Герб Саттер - Программирование
- C# 4.0: полное руководство - Герберт Шилдт - Программирование
- Программирование на Python с нуля - Максим Кононенко - Программирование
- Генерация высококачественного кода для программ, написанных на СИ - Филипп Хислей - Программирование