IT-Academy Logo
Sign Up Login Help
Home - Programmieren - Delphi - Wichtige Systeminformationen mit Borland Delphi auslesen



Wichtige Systeminformationen mit Borland Delphi auslesen

In diesem Artikel werde ich einig Kniffe aufführen, mit denen man mit Borland Delphi Information über das aktuelle Betriebssystem und die Hardware, die im PC steckt, auslesen und ändern kann. Das kann für manche Programme sehr wichtig sein.


Autor: P. Wagner (maggifex)
Datum: 04-01-2004, 00:01:48
Referenzen: keine
Schwierigkeit: Fortgeschrittene
Ansichten: 11010x
Rating: 6 (3x bewertet)

Hinweis:

Für den hier dargestellte Inhalt ist nicht der Betreiber der Plattform, sondern der jeweilige Autor verantwortlich.
Falls Sie Missbrauch vermuten, bitten wir Sie, uns unter missbrauch@it-academy.cc zu kontaktieren.

[Druckansicht] [Als E-Mail senden] [Kommentar verfassen]



Wie kann ich mit einem Delphi Programm die CPU–Frequenz auslesen?

Ganz einfach: Die folgende Funktion liefert als Ergebnis die CPU–Geschwindigkeit!

function GetCPUSpeed: real;

const

TimeOfDelay = 500;

var

TimerHigh, TimerLow: DWORD;

begin

SetPriorityClass(GetCurrentProcess, REALTIME_PRIORITY_CLASS);

SetThreadPriority(GetCurrentThread, THREAD_PRIORITY_TIME_CRITICAL);

Sleep(10);

asm

dw 310Fh

mov TimerLow, eax

mov TimerHigh, edx

end;



Sleep(TimeOfDelay);

asm

dw 310Fh

sub eax, TimerLow

sbb edx, TimerHigh

mov TimerLow, eax

mov TimerHigh, edx

end;



Result := TimerLow / (1000.0 * TimeOfDelay);

end;
Wie kann ich mit einem Delphiprogramm die Bildschirmauflösung ändern?

Dieser Effekt lässt sich am besten mit der folgenden Funktion erzielen. Sie muss mit den Parametern Breite, Höhe und Farbtiefe aufgerufen werden.

function change_resolution(width, height, color: word): BOOL;

var lpDevMode: TDeviceMode;

begin

Result := EnumDisplaySettings(nil, 0, lpDevMode);

if Result then begin

lpDevMode.dmFields := DM_PELSWIDTH Or DM_PELSHEIGHT or DM_BITSPERPEL;

lpDevMode.dmPelsWidth := width;

lpDevMode.dmPelsHeight := height;

lpDevMode.dmBitsPerPel := color;

Result := ChangeDisplaySettings(lpDevMode, CDS_UPDATEREGISTRY) = DISP_CHANGE_SUCCESSFUL;

end;

end;
Folgende Daten lassen sich aus der Registry auslesen:
  • Betriebssystem
  • CPU
  • aktuelle Bildschirmauflösung
  • Windows Produktkey
  • Computername
  • Benutzer
  • Firma
Folgende Routine liest sie aus:

Var Benutzer, Firma, System, WinProdctkey, CPU, Resolution: String;

Reg:= Tregistry.create;

Reg.RootKey := HKEY_CURRENT_USER;

Reg.OpenKey('\Software\Microsoft\MS Setup (ACME)\User Info\', false);

Benutzer:=Reg.ReadString('Defname');

Firma:=Reg.ReadString('Defcompany');

Reg.RootKey := HKEY_LOCAL_MACHINE;

Reg.OpenKey('\System\CurrentControlSet\Control\ComputerName\ComputerName\', false);

Computername:=Reg.ReadString('ComputerName');

Reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion', false);

System:=Reg.ReadString('Version');

WinProductkey:= 'Reg.ReadString('Productkey');

Resolution:=Inttostr(Screen.Width)+' * '+Inttostr(Screen.height));

Reg.OpenKey('\Hardware\Description\System\CentralProcessor\0\', false);

CPU:=Reg.ReadString('Identifier')+' ['+Floattostr(Round(GetCpuSpeed))+' MHZ ]');

reg.free;
Wie kann ich mit Delphi prüfen, ob gerade eine Internetverbindung besteht?

Die folgende Funktion liefert "true" zurück, wenn Internetverbindung besteht!

Function Connection: boolean;

var

flags: dword;

begin

result:= InternetGetConnectedState(@flags, 0);

end;
Wie kann ich mit Delphi den freien Festplattenspeicherplatz ermitteln?

function GetDiskSize(drive: Char; var free_size, total_size: Int64): Boolean; 
var 
RootPath: array[0..4] of Char; 
RootPtr: PChar; 
current_dir: string; 
begin 
RootPath[0] := Drive; 
RootPath[1] := ':'; 
RootPath[2] := '\'; 
RootPath[3] := #0; 
RootPtr := RootPath; 
current_dir := GetCurrentDir; 
if SetCurrentDir(drive + ':\') then 
begin 
GetDiskFreeSpaceEx(RootPtr, Free_size, Total_size, nil); 
SetCurrentDir(current_dir); 
Result := True; 
end 
else 
begin 
Result := False; 
Free_size := -1; 
Total_size := -1; 
end; 
end;

procedure TForm1.Button1Click(Sender: TObject); 
var 
free_size, total_size: Int64; 
begin 
if GetDiskSize(laufwerksbuchstabe, free_size, total_size) then 
ShowMessage('free space =' + 
IntToStr(free_size) + #13 + 'total size=' + 
IntToStr(total_size)) 
else 
ShowMessage('Keine Disk im Laufwerk!'); 
end; 
end;
Die Funktion GetDiskSize liefert "true" zurück, wenn freier Speicherplatz vorhanden ist. Den Speicherplatz kann man sich wie in der Prozedur Butto1Click anzeigen.

So, das waren einige nützliche Tricks. Vielleicht konnte ich dem einen oder anderen damit weiterhelfen.


[back to top]



Userdaten
User nicht eingeloggt

Gesamtranking
Werbung
Datenbankstand
Autoren:04508
Artikel:00815
Glossar:04116
News:13565
Userbeiträge:16552
Queueeinträge:06246
News Umfrage
Ihre Anforderungen an ein Online-Zeiterfassungs-Produkt?
Mobile Nutzung möglich (Ipone, Android)
Externe API Schnittstelle/Plugins dritter
Zeiterfassung meiner Mitarbeiter
Exportieren in CSV/XLS
Siehe Kommentar



[Results] | [Archiv] Votes: 1154
Comments: 0