以ActiveX取得Client端使用者的MAC並新增一method傳回MAC值 |
缺席
|
lanlor
一般會員 發表:1 回覆:1 積分:0 註冊:2007-07-31 發送簡訊給我 |
請問各位前輩:
目前在做一功能 想利用ActiveX來取得web上client端使用者的MAC 取得之後在此ActiveX上新增一method 將MAC值傳回到Server 但遇到的問題是,回傳的MAC值為undefined 請問各位前輩是否能指引一個方向 以下為我的code(P.S. code有參考站上前人的文章) <抓取網卡> [code delphi] uses NB30; function GetAdapterInfo(Lana: Char): String; var Adapter: TAdapterStatus; NCB: TNCB; begin FillChar(NCB, SizeOf(NCB), 0); NCB.ncb_command := Char(NCBRESET); NCB.ncb_lana_num := AnsiChar(Lana); if Netbios(@NCB) <> Char(NRC_GOODRET) then begin Result := 'mac not found'; Exit; end; FillChar(NCB, SizeOf(NCB), 0); NCB.ncb_command := Char(NCBASTAT); NCB.ncb_lana_num := AnsiChar(Lana); NCB.ncb_callname := '*'; FillChar(Adapter, SizeOf(Adapter), 0); NCB.ncb_buffer := @Adapter; NCB.ncb_length := SizeOf(Adapter); if Netbios(@NCB) <> Char(NRC_GOODRET) then begin Result := 'mac not found'; Exit; end; Result := IntToHex(Byte(Adapter.adapter_address[0]), 2) '-' IntToHex(Byte(Adapter.adapter_address[1]), 2) '-' IntToHex(Byte(Adapter.adapter_address[2]), 2) '-' IntToHex(Byte(Adapter.adapter_address[3]), 2) '-' IntToHex(Byte(Adapter.adapter_address[4]), 2) '-' IntToHex(Byte(Adapter.adapter_address[5]), 2); end; function GetMACAddressAll: string; var AdapterList: TLanaEnum; NCB: TNCB; MAC: String; lana_num: integer; begin FillChar(NCB, SizeOf(NCB), 0); NCB.ncb_command := Char(NCBENUM); NCB.ncb_buffer := @AdapterList; NCB.ncb_length := SizeOf(AdapterList); Netbios(@NCB); MAC := ''; lana_num :=0; Result :=''; if Byte(AdapterList.length) > 0 then while (MAC<>'mac not found') do begin if Result='' then Result := Result MAC else Result := Result ', ' MAC; MAC := GetAdapterInfo(Char(AdapterList.lana[lana_num])); lana_num := lana_num 1; end else Result := 'mac not found'; end;[/code] <在public新增一method> [code delphi] public { Public declarations } procedure GetMAC; safecall;export; procedure TGetMACX.GetMAC; export; begin GetMACAddressAll; end; [/code] <網頁> [code xml] <OBJECT<br /> id=objOCX classid="clsid:48B64086-53AB-4FEE-89AC-8067A8260041" codebase="PackagesAtx.ocx#version=6,0,0,0" hspace=0 vspace=0 width=0 height=0 > </OBJECT><br /> var str = objOCX.GetMAC(); alert(str); //這裡alert出的值為undefined,還請指點,謝謝!! [/code] 編輯記錄
lanlor 重新編輯於 2009-09-08 09:47:35, 註解 無‧
|
lanlor
一般會員 發表:1 回覆:1 積分:0 註冊:2007-07-31 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |