delphi È¡CPUÐòÁкŵķ½·¨
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls,
Forms, Dialogs, ExtCtrls, StdCtrls, Buttons;
type
TDemoForm = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
GetButton: TBitBtn;
CloseButton: TBitBtn;
Bevel1: TBevel;
Label5: TLabel;
FLabel: TLabel;
MLabel: TLabel;
PLabel: TLabel;
SLabel: TLabel;
PValue: TLabel;
FValue: TLabel;
MValue: TLabel;
SValue: TLabel;
procedure GetButtonClick(Sender: TObject);
end;
var
DemoForm: TDemoForm;
implementation
{$R *.DFM}
const
ID_BIT = $200000; // EFLAGS ID bit
type
TCPUID = array[1..4] of Longint;
TVendor = array [0..11] of char;
function IsCPUID_Available : Boolean; register;
asm
PUSHFD {direct access to flags no possible, only via stack}
POP EAX {flags to EAX}
MOV EDX,EAX {save current flags}
XOR EAX,ID_BIT {not ID bit}
PUSH EAX {onto stack}
POPFD {from stack to flags, with not ID bit}
PUSHFD {back to stack}
POP EAX {get back to EAX}
XOR EAX,EDX {check if ID bit affected}
JZ @exit {no, CPUID not availavle}
MOV AL,True {Result=True}
@exit:
end;
function GetCPUID : TCPUID; assembler; register;
asm
PUSH EBX {Save affected register}
PUSH EDI
MOV EDI,EAX {@Resukt}
MOV EAX,1
DW $A20F {CPUID Command}
STOSD  
Ïà¹ØÎĵµ£º
¸ù¾Ý¼ôÌù°åµÄÔÀí£¬ÔÚ»ñÈ¡¼ôÌù°åÄÚÈÝ֮ǰ£¬±ØÐëÖ¸¶¨Òª»ñÈ¡ÄÚÈݵĸñʽ¡£ÓÉÓÚ¼ôÌù°åÖеÄÊý¾Ý¿ÉÄÜ´æÔÚ¶àÖÖ¸ñʽ£¬ËùÒÔÓбØÒª¶Ô¼ôÌù°åµÄ¸ñʽÀàÐÍÏÈ×öһЩÁ˽⡣WдÏÂÁËÒÔϵIJâÊÔ´úÂ룺
procedure TForm1.Button3Click(Sender: TObject);
var
i: integer;
Buffer: PChar;
s: string;
begin
M ......
¼¼Êõ½»Á÷,DH½²½â. ½ñÌìÀ´ÊµÏÖÒ»¸ö¼òµ¥µÄÎå×ÓÆå,Ö±½ÓÓÃGDIÀ´»µÄÒ»¸öÓÎÏ·.
Ê×ÏÈÎÒÃÇÀ´ÏëÏÂÔõô´æ·ÅÊý¾Ý,ÄÄЩµØ·½ÊÇ°×Æå,ÄÄЩµØ·½ÊÇºÚÆå,ÄÄЩµØ·½Ã»ÓÐÏÂÆå?
¶Ô,ÎÒÃÇÓÃÒ»¸ö¶þάÊý×é,Èç¹ûÊý×éÖÐijһ¸öλÖõÄֵΪ0´ú±íûÓÐÏÂÆå,Ϊ1´ú±íÊÇ°×Æå,Ϊ2´ú±íÊÇºÚÆå.
ºÃ¾ÍÕâô˵¶¨ÁË,ΪÁËʹÓ÷½±ã,ÎÒÃÇ´òËã×ö³ÉÒ»¸ö¿Ø¼ ......
Delphi²Ù×÷XMLÊǺܷ½±ãµÄ£¬Ö÷ÒªÓÐÁ½ÖÖ·½·¨£»
1.ÓÃTClientDataSet²Ù×÷XML£»TClientDataSetÊǸöºÃ¶«Î÷£¬ÓÃËü²Ù×÷XMLÊǺܼòµ¥µÄÊ£¬²»¹ýȱµãÊÇÖ»ÄܲÙ×÷¹Ì¶¨¸ñʽµÄ XML£¬ËüÊʺϲÙ×÷±í½á¹¹µÄÊý¾Ý£¬Èç¹ûÄãÐèÒª°ÑÊý¾Ý±íµ¼³ö³ÉXMLÄÇÓÃTClientDataSetÊǸöºÃÖ÷Ò⣬±ÈÈçÏÂÃæÊÇÒ»¸öÊý¾Ý¼¯µ¼³ö³ÉXMLµÄ· ......