国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁 > 編程 > Delphi > 正文

DELPHI7.0 獲取硬盤、CPU、網卡序列號的代碼

2020-01-31 20:52:23
字體:
來源:轉載
供稿:網友
復制代碼 代碼如下:

//引用及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);//函數中的過程
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 //函數主體
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(非集成網卡):

function NBGetAdapterAddress(a: Integer): string;
var
NCB: TNCB; // Netbios control block //NetBios控制塊
ADAPTER: TADAPTERSTATUS; // Netbios adapter status//取網卡狀態
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地址(集成網卡和非集成網卡):

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;

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


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

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

圖片精選

国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
国产麻豆视频免费观看| a视频免费看| 国产一二区在线观看| 免费特级黄毛片| 男女午夜视频在线观看| 久久99国产视频| 中文字幕在线视频观看| 国产一级二级在线| 91精选福利| 免费在线高清av| 国产香蕉视频在线观看| 国产传媒在线播放| 97中文字幕| 奇米影视狠狠狠| 中文字幕有码在线视频| 中文字幕在线观看播放| 精品视频三区| 久草.com| 亚洲欧美小说国产图片| 国产理论片免费观看| aaa大片在线观看| 福利视频网站导航| 精品一区二区三区免费站| 久久国产综合视频| 亚洲综合色视频在线观看 | 青青草原av在线| 国产蜜臀在线| 亚洲精品成人a| 国产精品186在线观看在线播放 | 热99re久久精品这里都是免费| 老司机在线视频二区| 中文国产字幕在线观看| 午夜国产在线| 国产原创在线播放| 国产在线更新| 欧美日韩在线精品成人综合网| 中文字幕在线免费看| 亚洲成人国产综合| 91免费日韩| 992tv在线观看在线播放| 国产精品视频一区二区久久 | 国产黄色免费| 国产精品黄页网站在线播放免费| 国产毛片在线| 黄色片视频在线观看| 亚洲综合色视频在线观看| 国产精品粉嫩av| 中文字幕有码在线视频| 成人欧美日韩| 天天操天天操一操| 国产精品偷乱一区二区三区| 狠狠干天天爱| 午夜国产视频| 国产黄色免费在线观看| 精品美女调教视频| 在线视频观看亚洲| 超碰在线网址| 国产精品666| 亚洲成人在线播放| 丁香花高清在线观看完整版| 国产免费网址| 国产黄视频在线观看| 在线播放黄色网址| 牛牛在线精品视频| 国产三级在线观看| 在线免费观看黄色av| 久久av少妇| 国产成人精品久久一区二区小说| 精品剧情v国产在线观看| 任你操在线观看| 国产精品视频一区麻豆| 欧美性猛交xxxx免费看蜜桃 | 国产麻豆综合视频在线观看| 国产精品白浆视频免费观看| 国产精品视频一区麻豆| 一级黄色av| 中文字幕视频在线观看| 日本免费视频www| 国产黄大片在线观看画质优化| 亚洲videos| 国产成人综合美国十次| 国产免费av网站| 日本一二三区视频免费高清| 国产一区二区影视| 久久99国产视频| 亚洲成人av在线影院| 国产91在线视频蝌蚪| 国产免费一级片| а√资源新版在线天堂| 国产三级视频在线播放线观看| 亚洲综合天堂网| 91香蕉视频免费在线观看| 国产女人在线视频| 久久精品最新免费国产成人| 影音先锋在线中文字幕| 国产黄色大片在线观看| 中文字幕高清av | 超碰在线97国产| 天堂√中文在线| 在线天堂av| 精品街拍一区二区| 91精品国产高久久久久久五月天| 五月婷婷在线观看| 九九热在线观看 | 成人日韩欧美| 国产九色视频| 国产美女视频网站| 国产美女极品在线| 最近中文字幕mv免费高清视频8| 免费在线超碰| 超碰人人在线| 国产中文在线观看| 大香伊人中文字幕精品| 在线看黄网址| 青青草观看免费视频在线| 久久五月精品| 开心婷婷激情| 国产一二三区在线观看| 中文字幕免费在线视频| 中文日本在线观看| 久久久久久久久久久久网站| 国产视频中文字幕| 亚洲欧美国产另类首页| 免费精品国产自产拍观看| 国产一级性片| 性欧美精品xxxx| 国产乱子伦三级在线播放| 国产视频你懂的| 一本久中文高清| 天堂资源最新版在线视频观看免费网| 成年网站免费入口在线观看| 国产精品福利视频一区二区三区| 精品国产福利一区二区在线| 国产不卡视频| 超碰人人在线| 影音av资源站| 天天av综合网| 制服丝袜中文字幕在线观看| 麻豆精品传媒视频观看| 国产精品免费91| 男人天堂亚洲| 在线免费观看污| 国产三级视频在线| 国产免费av在线| 另类综合图区| www.99色.com| 99在线视频观看| 中文字幕日本三级| 免费观看一二区视频网站| 在线免费观看黄色av| 中文字幕在线免费看| 黄网址在线播放免费| 日本免费不卡| 日本在线天堂| 天天艹天天操| 波多野结衣中文字幕久久| 先锋av资源网| 日本福利在线观看| wwww在线观看免费视频| 依依成人在线| 在线观看国产福利视频| 亚洲欧美自拍另类| 国产98在线| 影音先锋日韩| 夜夜爽视频导航| 四虎成人免费| 超碰在线人人| 懂色一区二区三区| 国产网站观看9久| 国产精品入口麻豆免费看| 国产精选在线观看| √天堂中文在线| 69日小视频在线观看| 亚洲私人影吧| 粉嫩av一区| 国产高清一级片| 在线观看中文字幕| 亚洲精品在线播放视频| 男女羞羞视频在线观看| 成人午夜无人区一区二区| 中文字幕乱在线伦视频乱在线伦视频| 国产一级在线| 午夜在线不卡| 福利在线国产| 在线欧美一级视频| 国产美女被草| 四虎成人精品在永久免费| 91sp网站在线观看入口| 在线中文字幕第一页| 麻豆视频在线观看免费网站 | 国内外激情在线| 国产精品一区二区三区四区色| 国产黄色在线免费观看| 精品黄色免费中文电影在线播放 | 秋霞av在线| 国产精品入口麻豆免费观看| h视频在线网站| 国产青草视频在线观看视频| av在线第一页| 91麻豆福利|