Получение информации о системе
Как определить сериальный номер файловой системы
Как получить значения переменных среды
Как определить запущено ли приложение под Delphi
Определение буквы привода CD-ROM
Как определить готовность дисковода к работе
Вычисление тактовой частоты процессора
Определение пути к папкам операционной системы
procedure TForm1.Button1Click(Sender: TObject); var SerialNum: Pdword; a,b: Dword; buffer: array [0..255] of char; begin new(SerialNum); if getVolumeInformation('c:\',buffer,sizeof(buffer),SerialNum,a,b,nil,0) then Label1.Caption:=IntToStr(SerialNum^); Dispose(SerialNum); end;
uses FileCtrl; function DirSize(Dir:string): integer; var SearchRec: TSearchRec; Separator: string; DirBytes: integer; begin Result:=-1; if Copy(Dir,Length(Dir),1)='\' then Separator := '' else Separator := '\'; if FindFirst(Dir+Separator+'*.*',faAnyFile,SearchRec) = 0 then begin if FileExists(Dir+Separator+SearchRec.Name) then DirBytes := DirBytes + SearchRec.Size else if DirectoryExists(Dir+Separator+SearchRec.Name) then begin if (SearchRec.Name<>'.') and (SearchRec.Name<>'..') then DirSize(Dir+Separator+SearchRec.Name); end; while FindNext(SearchRec) = 0 do begin if FileExists(Dir+Separator+SearchRec.Name) then DirBytes := DirBytes + SearchRec.Size else if DirectoryExists(Dir+Separator+SearchRec.Name) then begin if (SearchRec.Name<>'.') and (SearchRec.Name<>'..') then DirSize(Dir+Separator+SearchRec.Name); end; end; end; FindClose(SearchRec); Result:=DirBytes; end; procedure TForm1.Button1Click(Sender: TObject); var DirBytes: integer; begin DirBytes:=DirSize('c:\windows'); Form1.Label1.Caption:=IntToStr(DirBytes); end;
function GetCPUSpeed: double; const DelayTime = 500; // время измерения в миллисекундах var TimerHi, TimerLo: DWORD; PriorityClass, Priority: integer; begin PriorityClass := GetPriorityClass(GetCurrentProcess); Priority := GetThreadPriority(GetCurrentThread); SetPriorityClass(GetCurrentProcess, REALTIME_PRIORITY_CLASS); SetThreadPriority(GetCurrentThread, THREAD_PRIORITY_TIME_CRITICAL); Sleep(10); asm dw 310Fh // rdtsc mov TimerLo, eax mov TimerHi, edx end; Sleep(DelayTime); asm dw 310Fh // rdtsc sub eax, TimerLo sbb edx, TimerHi mov TimerLo, eax mov TimerHi, edx end; SetThreadPriority(GetCurrentThread, Priority); SetPriorityClass(GetCurrentProcess, PriorityClass); Result := TimerLo / (1000.0 * DelayTime); end; begin LabelCPUSpeed.Caption := Format('CPU speed: %f MHz', [GetCPUSpeed]); end;
uses Registry, Windows; function GetFolder: string; var Folder:string; Reg: TRegistry; begin Reg:=TRegistry.Create; try // подставить имя нужной папки Folder:='StartUp'; //Cache,Cookies,Desktop,Favorites,Fonts, //Personal,Programs,SendTo,Start Menu,Startp Reg.RootKey := HKEY_CURRENT_USER; Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion'+ '\Explorer\Shell Folders', False); Result:=Registry.ReadString('StartUp'); finally Reg.Free; end; end;
function SetTime(DateTime:TDateTime): boolean; var st: TSystemTime; ZoneTime: TTimeZoneInformation; begin GetTimeZoneInformation(ZoneTime); DateTime:=DateTime+ZoneTime.Bias/1440; with st do begin DecodeDate(DateTime,wYear,wMonth,wDay); DecodeTime(DateTime,wHour,wMinute,wSecond,wMilliseconds); end; Result:=SetSystemTime(st); end;