亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Delphi > 正文

DELPHI7.0 獲取硬盤、CPU、網(wǎng)卡序列號的代碼

2020-01-31 20:52:23
字體:
供稿:網(wǎng)友
復(fù)制代碼 代碼如下:

//引用及TYPE變量申明

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,nb30; {重要引用}

type
PASTAT = ^TASTAT;
TASTAT = record
adapter : TAdapterStatus;
name_buf : TNameBuffer;
end;

TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Edit2: TEdit;
Edit3: TEdit;
Button2: TButton;
Edit4: TEdit;
Label4: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}
type
TCPUID = array[1..4] of Longint;

//取硬盤系列號:
function GetIdeSerialNumber: pchar; //獲取硬盤的出廠系列號;
const IDENTIFY_BUFFER_SIZE = 512;
type
TIDERegs = packed record
bFeaturesReg: BYTE;
bSectorCountReg: BYTE;
bSectorNumberReg: BYTE;
bCylLowReg: BYTE;
bCylHighReg: BYTE;
bDriveHeadReg: BYTE;
bCommandReg: BYTE;
bReserved: BYTE;
end;

TSendCmdInParams = packed record
cBufferSize: DWORD;
irDriveRegs: TIDERegs;
bDriveNumber: BYTE;
bReserved: array[0..2] of Byte;
dwReserved: array[0..3] of DWORD;
bBuffer: array[0..0] of Byte;
end;

TIdSector = packed record
wGenConfig: Word;
wNumCyls: Word;
wReserved: Word;
wNumHeads: Word;
wBytesPerTrack: Word;
wBytesPerSector: Word;
wSectorsPerTrack: Word;
wVendorUnique: array[0..2] of Word;
sSerialNumber: array[0..19] of CHAR;
wBufferType: Word;
wBufferSize: Word;
wECCSize: Word;
sFirmwareRev: array[0..7] of Char;
sModelNumber: array[0..39] of Char;
wMoreVendorUnique: Word;
wDoubleWordIO: Word;
wCapabilities: Word;
wReserved1: Word;
wPIOTiming: Word;
wDMATiming: Word;
wBS: Word;
wNumCurrentCyls: Word;
wNumCurrentHeads: Word;
wNumCurrentSectorsPerTrack: Word;
ulCurrentSectorCapacity: DWORD;
wMultSectorStuff: Word;
ulTotalAddressableSectors: DWORD;
wSingleWordDMA: Word;
wMultiWordDMA: Word;
bReserved: array[0..127] of BYTE;
end;

PIdSector = ^TIdSector;
TDriverStatus = packed record
bDriverError: Byte;
bIDEStatus: Byte;
bReserved: array[0..1] of Byte;
dwReserved: array[0..1] of DWORD;
end;

TSendCmdOutParams = packed record
cBufferSize: DWORD;
DriverStatus: TDriverStatus;
bBuffer: array[0..0] of BYTE;
end;
var
hDevice: Thandle;
cbBytesReturned: DWORD;
SCIP: TSendCmdInParams;
aIdOutCmd: array[0..(SizeOf(TSendCmdOutParams) + IDENTIFY_BUFFER_SIZE-1)-1] of Byte;
IdOutCmd: TSendCmdOutParams absolute aIdOutCmd;

procedure ChangeByteOrder(var Data; Size: Integer);//函數(shù)中的過程
var
ptr: Pchar;
i: Integer;
c: Char;
begin
ptr := @Data;
for I := 0 to (Size shr 1) - 1 do begin
c := ptr^;
ptr^ := (ptr + 1)^;
(ptr + 1)^ := c;
Inc(ptr, 2);
end;
end;

begin //函數(shù)主體
Result := '';
if SysUtils.Win32Platform = VER_PLATFORM_WIN32_NT then
begin // Windows NT, Windows 2000
hDevice := CreateFile('//./PhysicalDrive0', GENERIC_READ or GENERIC_WRITE,
FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0, 0);
end
else // Version Windows 95 OSR2, Windows 98
hDevice := CreateFile('//./SMARTVSD', 0, 0, nil, Create_NEW, 0, 0);
if hDevice = INVALID_HANDLE_VALUE then Exit;
try
FillChar(SCIP, SizeOf(TSendCmdInParams) - 1, #0);
FillChar(aIdOutCmd, SizeOf(aIdOutCmd), #0);
cbBytesReturned := 0;
with SCIP do
begin
cBufferSize := IDENTIFY_BUFFER_SIZE;
with irDriveRegs do
begin
bSectorCountReg := 1;
bSectorNumberReg := 1;
bDriveHeadReg := $A0;
bCommandReg := $EC;
end;
end;
if not DeviceIoControl(hDevice, $0007C088, @SCIP, SizeOf(TSendCmdInParams) - 1,@aIdOutCmd, SizeOf(aIdOutCmd), cbBytesReturned, nil) then Exit;
finally
CloseHandle(hDevice);
end;
with PIdSector(@IdOutCmd.bBuffer)^ do
begin
ChangeByteOrder(sSerialNumber, SizeOf(sSerialNumber));
(Pchar(@sSerialNumber) + SizeOf(sSerialNumber))^:= #0;
Result := Pchar(@sSerialNumber);
end;
end;
//=================================================================

//CPU系列號:
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 {CPUID[1]}
MOV EAX,EBX
STOSD {CPUID[2]}
MOV EAX,ECX
STOSD {CPUID[3]}
MOV EAX,EDX
STOSD {CPUID[4]}
POP EDI {Restore registers}
POP EBX
END;

function GetCPUIDStr:String;
var
CPUID:TCPUID;
begin
CPUID:=GetCPUID;
Result:=IntToHex(CPUID[1],8)+IntToHex(CPUID[2],8)+IntToHex(CPUID[3],8)+IntToHex(CPUID[4],8);
end;

///==================================================================================

///取MAC(非集成網(wǎng)卡):

function NBGetAdapterAddress(a: Integer): string;
var
NCB: TNCB; // Netbios control block //NetBios控制塊
ADAPTER: TADAPTERSTATUS; // Netbios adapter status//取網(wǎng)卡狀態(tài)
LANAENUM: TLANAENUM; // Netbios lana
intIdx: Integer; // Temporary work value//臨時變量
cRC: Char; // Netbios return code//NetBios返回值
strTemp: string; // Temporary string//臨時變量
begin
// Initialize
Result := '';
try
// Zero control blocl
ZeroMemory(@NCB, SizeOf(NCB));
// Issue enum command
NCB.ncb_command := Chr(NCBENUM);
cRC := NetBios(@NCB);
// Reissue enum command
NCB.ncb_buffer := @LANAENUM;
NCB.ncb_length := SizeOf(LANAENUM);
cRC := NetBios(@NCB);
if ord(cRC) <> 0 then
exit;
// Reset adapter
ZeroMemory(@NCB, SizeOf(NCB));
NCB.ncb_command := Chr(NCBRESET);
NCB.ncb_lana_num := LANAENUM.lana[a];
cRC := NetBios(@NCB);
if ord(cRC) <> 0 then
exit;
// Get adapter address
ZeroMemory(@NCB, SizeOf(NCB));
NCB.ncb_command := Chr(NCBASTAT);
NCB.ncb_lana_num := LANAENUM.lana[a];
StrPCopy(NCB.ncb_callname, '*');
NCB.ncb_buffer := @ADAPTER;
NCB.ncb_length := SizeOf(ADAPTER);
cRC := NetBios(@NCB);
// Convert it to string
strTemp := '';
for intIdx := 0 to 5 do
strTemp := strTemp + InttoHex(Integer(ADAPTER.adapter_address[intIdx]), 2);
Result := strTemp;
finally
end;
end;
//==========================================================================
//取MAC地址(集成網(wǎng)卡和非集成網(wǎng)卡):

function Getmac:string;
var
ncb : TNCB;
s:string;
adapt : TASTAT;
lanaEnum : TLanaEnum;
i, j, m : integer;
strPart, strMac : string;
begin
FillChar(ncb, SizeOf(TNCB), 0);
ncb.ncb_command := Char(NCBEnum);
ncb.ncb_buffer := PChar(@lanaEnum);
ncb.ncb_length := SizeOf(TLanaEnum);
s:=Netbios(@ncb);
for i := 0 to integer(lanaEnum.length)-1 do
begin
FillChar(ncb, SizeOf(TNCB), 0);
ncb.ncb_command := Char(NCBReset);
ncb.ncb_lana_num := lanaEnum.lana[i];
Netbios(@ncb);
Netbios(@ncb);
FillChar(ncb, SizeOf(TNCB), 0);
ncb.ncb_command := Chr(NCBAstat);
ncb.ncb_lana_num := lanaEnum.lana[i];
ncb.ncb_callname := '* ';
ncb.ncb_buffer := PChar(@adapt);
ncb.ncb_length := SizeOf(TASTAT);
m:=0;
if (Win32Platform = VER_PLATFORM_WIN32_NT) then
m:=1;
if m=1 then
begin
if Netbios(@ncb) = Chr(0) then
strMac := '';
for j := 0 to 5 do
begin
strPart := IntToHex(integer(adapt.adapter.adapter_address[j]), 2);
strMac := strMac + strPart + '-';
end;
SetLength(strMac, Length(strMac)-1);
end;
if m=0 then
if Netbios(@ncb) <> Chr(0) then
begin
strMac := '';
for j := 0 to 5 do
begin
strPart := IntToHex(integer(adapt.adapter.adapter_address[j]), 2);
strMac := strMac + strPart + '-';
end;
SetLength(strMac, Length(strMac)-1);
end;
end;
result:=strmac;
end;

function PartitionString(StrV,PrtSymbol: string): TStringList;
var
iTemp: integer;
begin
result := TStringList.Create;
iTemp := pos(PrtSymbol,StrV);
while iTemp>0 do begin
if iTemp>1 then result.Append(copy(StrV,1,iTemp-1));
delete(StrV,1,iTemp+length(PrtSymbol)-1);
iTemp := pos(PrtSymbol,StrV);
end;
if Strv<>'' then result.Append(StrV);
end;

function MacStr():String;
var
Str:TStrings;
i:Integer;
MacStr:String;
begin
MacStr:='';
Str:=TStringList.Create;
Str:=PartitionString(Getmac,'-');
for i:=0 to Str.Count-1 do
MacStr:=MacStr+Str[i];
Result:=MacStr;
end;

//==============================================


//調(diào)用示例
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit3.Text:=strpas(GetIdeSerialNumber);//取硬盤號
Edit2.text:=GetCPUIDStr;//CPU系列號
edit4.Text:=NBGetAdapterAddress(12);//非集成網(wǎng)卡
Edit1.text:=MacStr;//集成和非集成網(wǎng)卡

end;
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

日韩免费一二三区| 一区二区三区一级片| hd100%videos日本| 国内露脸中年夫妇交换精品| www.xxx国产| 国产**成人网毛片九色| 国产一区二区高清在线| sm国产在线调教视频| 亚洲欧美综合另类在线卡通| 午夜激情福利在线| 熟妇女人妻丰满少妇中文字幕| 免费观看一二区视频网站| 国产黄色精品| 免费污网站在线观看| 成人午夜精品无码区| 欧美三级伦理在线| 久久网一区二区| 国产精品电影在线观看| 欧洲毛片视频| 国产主播自拍av| 香蕉视频在线播放| 最新不卡av| 日韩中文一区二区三区| 国产精品亚洲综合在线观看| 欧美成人se01短视频在线看| 亚洲欧美激情诱惑| 亚洲午夜久久久久久久| av中文一区二区三区| 久久久久久网| 日韩精品一区二区三区不卡| 色偷偷88888欧美精品久久久| 国产chinasex对白videos麻豆| 伊人久久青青草| 黄页网址大全在线观看| 91国内精品野花午夜精品| 91精品产国品一二三产区| 成人444kkkk在线观看| 妖精视频一区二区三区免费观看| 肉色超薄丝袜脚交69xx图片| 天天骑夜夜操| 夜夜爽夜夜爽精品视频| 手机在线不卡av| 日日夜夜操操操| 日韩人妻无码精品综合区| 国产成人无码精品久久久性色| 成人欧美在线| 日本一本视频| 激情av一区二区| 国产激情一区二区三区在线观看| 国产美女撒尿一区二区| 在线看片欧美| 亚洲综合福利| 亚洲精品极品| 欧美噜噜久久久xxx| 色的视频在线观看免费播放| 懂色av中文一区二区三区| 欧美亚男人的天堂| 中文字幕日韩精品在线| 中文在线观看免费视频| 中文字幕在线视频久| 99在线精品视频免费观看软件| 成年网站在线观看视频| 久久久久久久久久久久久久| 91成人在线免费观看| 国产精品国模大尺度视频| 女生裸体视频网站免费观看| 久久久午夜电影| 精品综合久久久久久8888| 99在线免费观看| 亚洲福利国产精品| 国产美女在线免费观看| 国精产品一区一区三区四川| 青娱乐国产盛宴| 蜜桃传媒一区二区亚洲av| 懂色av中文一区二区三区| 日本高清免费电影一区| 欧美一区视频在线| 六月婷婷色综合| 天堂中文字幕——hd| 欧美高清视频在线观看| 最近2019年手机中文字幕| 国产精品久久久久久久久免费桃花| 视频一区中文字幕| 91久久精品美女高潮| 136导航精品福利| 国产精品av免费观看| 精品三区视频| 91精品国产视频| 好看的亚洲午夜视频在线| 欧美性生活一级片| 日本免费不卡一区二区| 免费一级特黄3大片视频| 成人av中文字幕| 久艹视频在线观看| av免费在线观看网址| 亚洲精品日产精品乱码不卡| 国产av熟女一区二区三区| 日韩精品视频中文字幕| 亚洲 高清 成人 动漫| 黄色网址大全在线观看| 免费观看成人av| www夜片内射视频日韩精品成人| 波多野结衣一二三四区| 国产片一区二区三区| 欧美高清视频不卡网| 国产一区二区91| 日韩欧美一级精品久久| 中文国产在线观看| 欧美午夜寂寞影院| 欧美精品videossex少妇| 国产卡1卡2卡三卡在线| 紧缚奴在线一区二区三区| 国产伦精品一区二区三区免费视频| 日韩三级高清在线| av观看免费在线| 97国产精东麻豆人妻电影| 在线能看的黄色| 色综合久久综合网97色综合| 性xxxx奶大欧美高清| 在线不卡中文字幕| 国产三区在线视频| www.日本久久| www.精品av.com| 日韩欧美中文在线观看| 欧美精品久久久久久久久久| 国 产 黄 色 大 片| 99久久久无码国产精品免费蜜柚| 久久蜜桃一区二区| 不卡毛片在线看| 日韩欧美高清一区二区三区| 日韩av在线播放网址| 久久久精品国产99久久精品芒果| 国产一区二区三区站长工具| 北条麻妃一二三区| 久久精品国产99国产精品澳门| www.国产精品.com| 国产精品久久久久久久天堂| 欧美午夜精品一区二区三区电影| 欧美午夜www高清视频| 欧美体内谢she精2性欧美| 男人的天堂免费在线视频| 久久www视频| 国产亚洲精品资源在线26u| 国产亚洲第一区| 成人听书哪个软件好| 亚洲成人精品在线观看| 黄色片视频免费| 日韩一区二区在线观看视频播放| 精灵使的剑舞无删减版在线观看| 亚洲综合欧美综合| www.成人爱| 精品国内片67194| 在线观看日韩av| xxxx性bbbb欧美野外| aaaaaav| 天堂网在线.www天堂在线| 国产综合久久久久久| 亚洲欧美日韩国产综合精品二区| 瑟瑟网站在线观看| 在线成年人视频| 国产欧美日韩精品a在线观看| 国产精品免费视频一区二区三区| 丁香五月缴情综合网| 国产精品久久久久久久久免费桃花| 五月天丁香激情| 性综艺节目av在线播放| 欧美韩国日本一区| 最近高清中文在线字幕在线观看| 97在线视频免费观看完整版| 粉嫩精品一区二区三区在线观看| 欧美激情亚洲色图| 欧美色视频一区二区三区在线观看| 中文在线观看av| 日韩成人综合| 欧美色综合网| 天天做天天摸天天爽国产一区| 四虎精品永久免费| 国产乱理伦片在线观看夜一区| 久久91导航| 国产导航在线| 亚洲精品视频三区| 日韩福利视频在线观看| 92裸体在线视频网站| 久久久午夜视频| 97香蕉久久超级碰碰高清版| 女同互添互慰av毛片观看| 免费黄网站在线播放| 日韩免费视频一区二区视频在线观看| 亚洲一二三区在线| 91视频最新网址| 亚洲视频资源在线| 老熟妇高潮一区二区三区| 国产日产欧美精品一区二区三区| aaa级黄色片| 肉色欧美久久久久久久免费看| 一区二区三区日韩精品| 亚洲欧洲高清在线| 在线观看视频中文字幕| 正义之心1992免费观看全集完整版| 日韩av色综合| 性中国古装videossex| 免费试看一区| 久久精品一区二区三区不卡免费视频| 亚洲国产一区二区久久久777| 精品一区二区三区在线播放视频| 日韩欧美国产成人精品免费| 美女免费视频一区| 国产精品亚洲欧美导航| 久久久三级国产网站| 青青成人在线| www.久久久精品| 日韩电影网在线| 人与人69性欧美三人交| 蜜臀av一区二区在线观看| 18禁一区二区三区| 一区二区三区亚洲变态调教大结局| 久久久精品少妇| 国产一二三在线| 伊人久久大香线蕉午夜av| 亚洲成人不卡| jizzjizz4| 日韩经典一区二区| 欧美成人直播| 激情成人午夜视频| 国产美女18xxxx免费视频| 色视频一区二区三区| 午夜电影福利网| 嫩草研究院在线| 亚洲福利视频导航| av女在线播放| 亚洲v精品v日韩v欧美v专区| 欧美日韩国产在线一区| 性色av一区二区三区在线观看| 久久天天躁狠狠躁老女人| 免费黄色网页在线观看| 久久亚洲精品一区二区| 成年丰满熟妇午夜免费视频| 久草在线免费福利资源| 黑人巨大精品欧美一区二区奶水| 美女脱光衣服与内衣内裤一区二区三区四区| 欧美一级一片| 国产精品久久久av久久久| 久久综合久久综合九色| 亚州av中文字幕在线免费观看| 国产精品色婷婷久久58| 久热在线视频精品网站| 97国产成人精品视频| 雨宫琴音一区二区在线| 国产女人高潮时对白| 国产日韩欧美久久| 99鲁鲁精品一区二区三区| 色老头在线一区二区三区| 爱爱免费视频网站| 日韩一级大片在线| 欧美黄色免费网站| 日韩激情图片| 亚洲qvod图片区电影| 国产日韩一区二区在线| 日韩欧美在线视频观看| 欧美三级超在线视频| 中文字幕一区二区三区四区免费看| 欧洲一级毛片| 色综合一个色综合| 国产黄色大片在线观看| 日本黄网免费一区二区精品| 国产日产精品_国产精品毛片| 中文字幕天堂在线| 无码人妻一区二区三区精品视频| 91cn在线观看| 日本麻豆一区二区三区视频| 四虎永久免费影库二三区| 日本在线视频播放| 最新亚洲精品| 黑人性受xxxx黑人xyx性爽| 国产精品免费视频一区| 亚洲精品一区二区网址| 樱花草www在线观看| 欧美主播一区二区三区美女 久久精品人| 香蕉视频免费在线看| 一级欧洲+日本+国产| 天堂а√在线中文在线鲁大师| 国产欧美日韩亚洲一区二区三区| 国产福利图片| 欧美精品videos性欧美| 91精品国模一区二区三区| 精品久久久噜噜噜噜久久图片| 国产精品久久一区主播| 久久国产夜色精品鲁鲁99| 国产精品羞羞答答在线| 91黄色在线观看| 99热这里只有精品5| 国产一二三四在线视频| 国产精品露脸av在线| 国产免费一区二区三区四区五区| 国产精品久久久久久亚洲毛片| 日韩伦理在线观看| 岛国精品一区二区三区| 国产亚洲精品成人a| 日韩一级精品| 久久超碰97人人做人人爱| 日韩一级片大全| 中文字幕人妻一区二区三区视频| 波多野结衣欧美| 日韩 欧美一区二区三区| 欧美在线免费看| 国产另类在线| 青青草国产免费自拍| 久久亚洲精精品中文字幕| 欧美一区二区性放荡片| 亚洲一级不卡视频| av在线不卡电影| 天海翼亚洲一区二区三区| 久久97久久97精品免视看秋霞| 欧美一级片免费在线| 日韩成人av在线播放| 日本在线免费观看视频| 五福影院新址进入www1378| 成人综合色站| 亚洲欧美日本精品| 午夜av区久久| 亚洲人成网址| 免费影院在线观看一区| 国产毛片视频| 黄色电影免费在线观看| 久久久精品影视| 国产精品国产一区| 免费一级欧美在线观看视频| 国内揄拍国内精品少妇国语|