怎样获得机器的cpu频率,硬盘大小,内存大小,是否用光驱?(30分)

  • 主题发起人 主题发起人 shuoshuo
  • 开始时间 开始时间
S

shuoshuo

Unregistered / Unconfirmed
GUEST, unregistred user!
怎样获得机器的cpu频率,硬盘大小,内存大小,是否用光驱,软驱?
 
我也不知道
用Tregist(写对没有?)行不行?
 
一。关于硬盘操作的函数:
diskfree:返回磁盘的自由空间。
disksize:返回指定磁盘的大小。
函数返回值为int64类型。如果返回-1表示 指定的driver无效。
其参数都是driver:byte;其中0, 表示当前目录。
1:A。
2:B。
3:C.... and so on.

二关于内存举列说明:
procedure Tform1.timer1timer(sender:Tobject);
var
TMS:TMemoryStatus;
begin
TMS.dwLength:=sizeof(TMS);
GlobalMemorystatus(TMS);
gauge1.progress:=TMS.dwMemoryLoad;
gauge1.progress:=(100*TMS.dwAvailphys) div TMS.dwtotalphys;
gauge1.progress:=(100*TMS.dwavailpagefile)div tms.dwtotalpagefile;
end;
TMS结构说明:
dwlength 该结构的长度
dwmemoryload 内存使用百分比
dwtotalphys 实际内存总字节数
dwavailphys 用的实际内存总字节数
dwtotalpagefile 分页文件总字节数
dwavailpagefile 分页文件可用字节数
dwtotalvirtual 虚拟内存的总字节数。
dwavailvirtual 可用的虚拟内存字节数

三。关于 cpu 速度我也从别人那里抄来的一个例子:(测pentium级以上cpu)
unction GetCPUSpeed: Double;
const
DelayTime = 500; // measure time in ms
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;

四。关于用光驱,软驱。
我般是用disksize(driver:byte):int64来读取其大小如果返回值为-1 则证明
驱动器无盘或不可用.


 
有一个叫Microsoft Sysinfo Control 的控件,
可以取到这些信息

这个控件好象装了Visual studio就有了
 
不要怪别人不理你,看看你自己能记住自己的帐号么??
说说,shuoshuo,sh1,sh2……,sh8,sh9……
该结束的题自己结束吧!!!!!!
 
后退
顶部