哪位高手帮忙把下面这个程序(获取cpu id)改写成为,控制台程序(像DOS命令可直接调用,直接返回DOS).谢谢.一定给分...//-----------------------------------------网络源程序部分--------------------
第一个函数我试过,可以得到CPU序列号
没有问题,你可以用一用,是别人给我的。
得CPU ID:
type
TCPUID = array[1..4] of Longint;
...
function GetCPUID : TCPUID; assembler; register;
asm
PUSH EBX
PUSH EDI
MOV EDI,EAX
MOV EAX,1
DW $A20F
STOSD
MOV EAX,EBX
STOSD
MOV EAX,ECX
STOSD
MOV EAX,EDX
STOSD
POP EDI
POP EBX
end;function GetCPUSpeed: Double;
const DelayTime = 100;
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(DelayTime);
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);
end;
第一个函数我试过,可以得到CPU序列号
没有问题,你可以用一用,是别人给我的。
得CPU ID:
type
TCPUID = array[1..4] of Longint;
...
function GetCPUID : TCPUID; assembler; register;
asm
PUSH EBX
PUSH EDI
MOV EDI,EAX
MOV EAX,1
DW $A20F
STOSD
MOV EAX,EBX
STOSD
MOV EAX,ECX
STOSD
MOV EAX,EDX
STOSD
POP EDI
POP EBX
end;function GetCPUSpeed: Double;
const DelayTime = 100;
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(DelayTime);
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);
end;
writeln(GetCPUSpeed);
SysUtils,
Windows; //注意,要加入这个文件type
TCPUID = array[1..4] of Longint;function GetCPUID: TCPUID; assembler; register;
asm
PUSH EBX
PUSH EDI
MOV EDI,EAX
MOV EAX,1
DW $A20F
STOSD
MOV EAX,EBX
STOSD
MOV EAX,ECX
STOSD
MOV EAX,EDX
STOSD
POP EDI
POP EBX
end;function GetCPUSpeed: Double;
const
DelayTime = 100;
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(DelayTime);
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);
end;begin
{ TODO -oUser -cConsole Main : Insert code here }
Writeln(GetCPUSpeed);
Writeln(GetCPUID[1]);
Writeln(GetCPUID[2]);
Writeln(GetCPUID[3]);
Writeln(GetCPUID[4]);
readln;
end.
SysUtils, StrUtils,
Windows; //注意,要加入这个文件type
//CPUID 一共有4组,4组连接成串是世界唯一的,常用于软件注册
TCPUID = array[1..4] of Longint;function GetCPUID: TCPUID; assembler; register;
asm
PUSH EBX
PUSH EDI
MOV EDI,EAX
MOV EAX,1
DW $A20F
STOSD
MOV EAX,EBX
STOSD
MOV EAX,ECX
STOSD
MOV EAX,EDX
STOSD
POP EDI
POP EBX
end;function GetCPUSpeed: Double;
const
DelayTime = 100;
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(DelayTime);
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);
end;var
sCmd: string;
i:integer;
label here;
begin
{ TODO -oUser -cConsole Main : Insert code here }
Writeln('你可以选择一下命令输入:');
Writeln('cpuspd 返回本机CPU的速度');
Writeln('cpuid -n/a 返回本机CPU的速度,参数n为1到4的整数,参数a返回全部CPU的ID');
Writeln('exit 退出程序');
here:
Readln(sCmd);
if Trim(sCmd)='exit' then Exit;
if Trim(sCmd)='cpuspd' then Writeln(GetCPUSpeed)
else
if (LeftStr(TrimLeft(sCmd),8)='cpuid -a') then
Writeln(inttostr(GetCPUID[1])+inttostr(GetCPUID[2])+inttostr(GetCPUID[3])+inttostr(GetCPUID[4]))
else
if (LeftStr(TrimLeft(sCmd),7)='cpuid -') then
begin
TryStrToInt(RightStr(Trim(sCmd),1),i);
if (i>=1) and (i<=4) then Writeln(GetCPUID[i])
else Writeln(sCmd+'不是合法命令!');
end
else
Writeln(sCmd+'不是合法命令!');
goto here;
end.