日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Delphi自定义获取网卡MAC地址过程

發(fā)布時間:2024/4/18 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Delphi自定义获取网卡MAC地址过程 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

//獲取網(wǎng)卡MAC地址===============================================================
procedure CvtInt;
asm
??????? OR????? CL,CL
??????? JNZ???? @CvtLoop
@C1:??? OR????? EAX,EAX
??????? JNS???? @C2
??????? NEG???? EAX
??????? CALL??? @C2
??????? MOV???? AL,'-'
??????? INC???? ECX
??????? DEC???? ESI
??????? MOV???? [ESI],AL
??????? RET
@C2:??? MOV???? ECX,10

@CvtLoop:
??????? PUSH??? EDX
??????? PUSH??? ESI
@D1:??? XOR???? EDX,EDX
??????? DIV???? ECX
??????? DEC???? ESI
??????? ADD???? DL,'0'
??????? CMP???? DL,'0'+10
??????? JB????? @D2
??????? ADD???? DL,('A'-'0')-10
@D2:??? MOV???? [ESI],DL
??????? OR????? EAX,EAX
??????? JNE???? @D1
??????? POP???? ECX
??????? POP???? EDX
??????? SUB???? ECX,ESI
??????? SUB???? EDX,ECX
??????? JBE???? @D5
??????? ADD???? ECX,EDX
??????? MOV???? AL,'0'
??????? SUB???? ESI,EDX
??????? JMP???? @z
@zloop: MOV???? [ESI+EDX],AL
@z:???? DEC???? EDX
??????? JNZ???? @zloop
??????? MOV???? [ESI],AL
@D5:
end;

function IntToHex(Value: Integer; Digits: Integer): string;
asm
??????? CMP???? EDX, 32??????? // Digits < buffer length?
??????? JBE???? @A1
??????? XOR???? EDX, EDX
@A1:??? PUSH??? ESI
??????? MOV???? ESI, ESP
??????? SUB???? ESP, 32
??????? PUSH??? ECX??????????? // result ptr
??????? MOV???? ECX, 16??????? // base 16???? EDX = Digits = field width
??????? CALL??? CvtInt
??????? MOV???? EDX, ESI
??????? POP???? EAX??????????? // result ptr
??????? CALL??? System.@LStrFromPCharLen
??????? ADD???? ESP, 32
??????? POP???? ESI
end;

function MacAddress: string; //獲取MAC信息
var??????
? Lib: Cardinal;
? Func: function(GUID: PGUID): Longint; stdcall;???????
? GUID1, GUID2: TGUID;???????
begin
? Result :='';???????
? Lib := LoadLibrary('rpcrt4.dll');
? if Lib <> 0 then??????
? begin
??? @Func := GetProcAddress(Lib, 'UuidCreateSequential');
??? if Assigned(Func) then
??? begin??????
????? if (Func(@GUID1) = 0) and??????
??????? (Func(@GUID2) = 0) and??????
??????? (GUID1.D4[2] = GUID2.D4[2]) and??????
??????? (GUID1.D4[3] = GUID2.D4[3]) and??????
??????? (GUID1.D4[4] = GUID2.D4[4]) and??????
??????? (GUID1.D4[5] = GUID2.D4[5]) and??????
??????? (GUID1.D4[6] = GUID2.D4[6]) and??????
??????? (GUID1.D4[7] = GUID2.D4[7]) then??????
????? begin??????
??????? Result :=???????
???????? IntToHex(GUID1.D4[2], 2) + '-' +
???????? IntToHex(GUID1.D4[3], 2) + '-' +
???????? IntToHex(GUID1.D4[4], 2) + '-' +???????
???????? IntToHex(GUID1.D4[5], 2) + '-' +???????
???????? IntToHex(GUID1.D4[6], 2) + '-' +
???????? IntToHex(GUID1.D4[7], 2);???????
????? end;???????
??? end;???????
??? FreeLibrary(Lib);???????
? end;???????
end;

總結(jié)

以上是生活随笔為你收集整理的Delphi自定义获取网卡MAC地址过程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。