الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيفية معرفة نظام التشغيل للحاسب الذي اعمل عليه

مغلق
بدأه mouna في 25 سبتمبر 2006 · 1 رد · 703 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته :

عندي برنامج بيشتغل على الويندوز واللينكس

وهذا البرنامج يعمل على الدلفي والماي سكول واريد عند بداية تشغيل البرنامج ان اعرف اذا كان النظام يعمل على الويندوز ام اللينكس

لاوضح اكثر :

في MySQL عندما اعرف ODBC ادخل Port=3306 للويندوز

أو Port =3307 للينكس

فعندما يعمل البرنامج اذا كان يعمل على الويندوز اضع Port=3306 واذا كان يعمل على اللينكس اضع Port=3307

فالذي اريد معرفته هو نظام التشغيل الذي اعمل عليه

وشكرا لأعضاء المنتدى

#2
uses
Winsock,Registry


var
  Form1: TForm1;
   reg : TRegistry;
cpuspd : string;
Version : DWORD;
Build : WORD;
MajorVersion, MinorVersion : BYTE;
VolumeSerialNumber : DWORD;
MaximumComponentLength : DWORD;
FileSystemFlags : DWORD;
SerialNumber : string;
implementation

{$R *.dfm}

function WinVer: string;
var
VersionInfo: TOSVersionInfo;
begin
VersionInfo.dwOSVersionInfoSize := SizeOf(VersionInfo);
GetVersionEx(VersionInfo);
with VersionInfo do
begin
case dwPlatformid of
0 : begin
result := 'Windows System:   '+'3.11';
end;
1 : begin
case dwMinorVersion of
0 : result := 'Windows System:   '+'95';
10: begin
if ( szCSDVersion[ 1 ] = 'A' ) then
Result := 'Windows System:   '+'98 SE'
else
Result := 'Windows System:   '+'98';
end;
90 : result := 'Windows System:   '+'Millenium';
else
result := 'Windows System:   '+'Unknown';
end;
end;
2 : begin
case dwMajorVersion of
3 : result := 'Windows System:   '+'Windows NT';
4 : result := 'Windows System:   '+'XP';
5 : begin
case dwMinorVersion of
0 : result := 'Windows System:   '+'2000';
1 : result := 'Windows System:   '+'Whistler';
else
result := 'Windows System:   '+'Unknown';
end;
if szCSDVersion <> '' then
result := result + ' + Service pack: ' + szCSDVersion;
end;
else
result := 'Windows Platform: '+'Unknown';
end; // end case
end; // end case
end; // end case
end; // end version info
end; // GetWindowsVersion

function LocalIP: String;
type
TaPInAddr = Array[0..10] of PInAddr;
PaPInAddr = ^TaPInAddr;
var
phe: PHostEnt;
pptr: PaPInAddr;
Buffer: Array[0..63] of Char;
I: Integer;
GInitData: TWSAData;
begin
WSAStartup($101, GInitData);
Result := '';
GetHostName(Buffer, SizeOf(Buffer));
phe := GetHostByName(buffer);
if phe = nil then Exit;
pPtr := PaPInAddr(phe^.h_addr_list);
I := 0;
while pPtr^ <> nil do
begin
Result := inet_ntoa(pptr^^);
Inc(I);
end;
WSACleanup;
end;

function GetCPUSpeed: Double;
const
DelayTime = 500;
var
TimerHi, TimerLo: DWORD;
PriorityClass, Priority: Integer;
begin
try
PriorityClass := GetPriorityClass(GetCurrentProcess);
Priority := GetThreadPriority(GetCurrentThread);

SetPriorityClass(GetCurrentProcess, REALTIME_PRIORITY_CLASS);
SetThreadPriority(GetCurrentThread, THREAD_PRIORITY_TIME_CRITICAL);

Sleep(10);
asm
dw 310Fh
mov TimerLo, eax
mov TimerHi, edx
end;
Sleep(DelayTime);
asm
dw 310Fh
sub eax, TimerLo
sbb edx, TimerHi
mov TimerLo, eax
mov TimerHi, edx
end;

SetThreadPriority(GetCurrentThread, Priority);
SetPriorityClass(GetCurrentProcess, PriorityClass);

Result := TimerLo / (1000.0 * DelayTime);
except end;
end;

function GetWinDir: String;
var
WinDir: PChar;
begin
GetMem(WinDir, 144);
GetWindowsDirectory(WinDir, 144);
Result := StrPas(WinDir);
FreeMem(WinDir, 144);
end;

function GetSysDir: string;
var
SysDir: PChar;
begin
GetMem(SysDir, 144);
GetSystemDirectory(SysDir, 144);
Result := StrPas(SysDir);
FreeMem(SysDir, 144);
end;

function GetAppDir: string;
begin
Result := ExtractFileDir(ParamStr(0));
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
memo3.Clear;
reg := TRegistry.Create;
reg.RootKey := HKEY_LOCAL_MACHINE;
Version := GetVersion();
// Get major and minor version numbers of Windows
MajorVersion := LOBYTE(LOWORD(Version));
MinorVersion := HIBYTE(LOWORD(Version));
// Get build numbers for Windows NT or Win32s
if (Version and $80000000) = 0 then begin // Windows NT/XP
 memo3.Lines.Add(WinVer);
Build := HIWORD(Version);
end
else if (MajorVersion < 4) then begin // Win32s
  memo3.lines.add(WinVer);
Build := HIWORD(Version) and $7FFF;
end
else begin
  memo3.lines.add(WinVer); // Windows 95/98/ME -- No build numbers provided
Build := 0;
end;
// Version
if IntToStr(MajorVersion) = '' then
  memo3.lines.add('Windows Version:  '+'N/A')
else
  memo3.lines.add('Windows Version:  '+IntToStr(MajorVersion)+'.'+IntToStr(MinorVersion));
if IntToStr(MinorVersion) = '' then
  memo3.lines.add('Windows Version:  '+'N/A');
// Build
if IntToStr(Build) = '' then
  memo3.lines.add('Windows Build:	'+'N/A')
else
  memo3.lines.add('Windows Build:	'+IntToStr(Build));
  memo3.lines.add('');
// Computer Name
If reg.OpenKey('System\CurrentControlSet\Control\ComputerName\ComputerName',True) then
begin
if reg.ReadString('ComputerName') = '' then begin
  memo3.lines.add('Computer Name:	'+'N/A');
  memo3.lines.add('');
end
else begin
  memo3.lines.add('Computer Name:	'+reg.ReadString('ComputerName'));
  memo3.lines.add('');
end;
end;
reg.CloseKey;
// Product ID
if reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\',True) then
begin
if reg.ReadString('ProductId') = '' then begin
  memo3.lines.add('Product ID:	   '+'N/A');
  memo3.lines.add('');
end
else begin
  memo3.lines.add('Product ID:	   '+reg.ReadString('ProductID'));
  memo3.lines.add('');
end;
end;
reg.CloseKey;
// Serial Number
GetVolumeInformation('C:\', nil, 0, @VolumeSerialNumber, MaximumComponentLength, FileSystemFlags, nil, 0);
SerialNumber := IntToHex(HiWord(VolumeSerialNumber), 4) +'-' + IntToHex(LoWord(VolumeSerialNumber), 4);
if SerialNumber = '' then begin
  memo3.lines.add('Volume Serial:	'+'N/A');
  memo3.lines.add('');
end
else begin
  memo3.lines.add('Volume Serial:	'+SerialNumber);
  memo3.lines.add('');
end;
// Local IP
if LocalIP = '' then begin
  memo3.lines.add('Local IP:		 '+'N/A');
  memo3.lines.add('');
end
else begin
  memo3.lines.add('Local IP:		 '+LocalIP);
  memo3.lines.add('');
end;
// CPU Speed
cpuspd := 'CPU Speed:		'+Format('%f MHz', [GetCPUSpeed]);
  memo3.lines.add(cpuspd);
  memo3.lines.add('');
if reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Setup',True) then
begin
// App Dir
if GetAppDir = '' then begin
  memo3.lines.add('Application Dir:  '+'N/A');
  memo3.lines.add('');
end
else begin
  memo3.lines.add('Application Dir:  '+GetAppDir);
  memo3.lines.add('');
end;
// Boot Dir
if reg.ReadString('BootDir') = '' then begin
  memo3.lines.add('Boot Dir:		 '+'N/A');
  memo3.lines.add('');
end
else begin
  memo3.lines.add('Boot Dir:		 '+reg.ReadString('BootDir'));
  memo3.lines.add('');
end;
// Windows Dir
if GetWinDir = '' then begin
  memo3.lines.add('Windows Dir:	  '+'N/A');
  memo3.lines.add('');
end
else begin
  memo3.lines.add('Windows Dir:	  '+GetWinDir);
  memo3.lines.add('');
end;
// System Dir
if GetSysDir = '' then begin
  memo3.lines.add('System Dir:	   '+'N/A');
end
else begin
  memo3.lines.add('System Dir:	   '+GetSysDir);
end;
end;
reg.CloseKey;
end;

ارجو ان تفهميه وليس كوبي و باست

تم تعديل هذه المشاركة بواسطة master of all في 25 سبتمبر 2006 في 23:32

هذا الموضوع مغلق.

مواضيع مشابهة