加密狗装置的读取与应用

来源:互联网 发布:淘宝客服主管都做什么 编辑:程序博客网 时间:2024/05/01 05:02

unit untMain;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, OleCtrls, SHDocVw, StdCtrls,DAMPlusAppApis,NB30,WinSock,
  AppEvnts,ActiveX;
type
  PASTAT = ^TASTAT;
  TASTAT = record
    adapter : TAdapterStatus;
    name_buf : TNameBuffer;
  end;
type
  Tmain = class(TForm)
    WebMain: TWebBrowser;
    ApplicationEvents1: TApplicationEvents;
    procedure FormShow(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCreate(Sender: TObject);
    procedure ApplicationEvents1Message(var Msg: tagMSG;
      var Handled: Boolean);
  private
    { Private declarations }
    FOleInPlaceActiveObject: IOleInPlaceActiveObject;
    Function GetMac :String;
    Function GetIP  :String;
  public
    { Public declarations }
  end;

const
  MCW_EM = DWord($133f);
var
  main: Tmain;

implementation

{$R *.dfm}

procedure Tmain.FormShow(Sender: TObject);
var
  AppID,cmd1,cmd2,cmd3,cmd4 :Integer;
  liRtn :Integer;//返回结果值
  lwID  :array [0..15] of Char;
  lsMac :String;//网卡Mac地址
  lsIP  :String;//IP地址
begin

//设置加密狗参数
  AppID := 4294967295;//应用程序ID号
  cmd1 := 6082; //代理号,十进制数,16进制为17C2
  cmd2 := 54719;//客户号,十进制数,16进制为D5BF
  cmd3 := 65535;//分组号,十进制数,16进制为FFFF
  cmd4 := 65535;//序列号,十进制数,16进制为FFFF
  //查找狗
  {liRtn :=  DAMPlusAppApis.DOGFIND(AppID);
  if liRtn = 0 then
  begin
    Application.MessageBox('请连接加密狗!','系统提示',mb_ok or mb_iconinformation);
    Application.Terminate;
    Exit;
  end;
  //打开狗
  liRtn := DAMPlusAppApis.DOGOPEN(cmd1,cmd2,cmd3,cmd4);
  if liRtn <> 0 then
  begin
    Application.MessageBox('请连接加密狗!','系统提示',mb_ok or mb_iconinformation);
    Application.Terminate;
    Exit;
  end;
  //读出狗的唯一ID
  liRtn := DAMPlusAppApis.DOGUID(lwID);
  if liRtn <> 0 then
  begin
    Application.MessageBox('读取狗标识失败!','系统提示',mb_ok or mb_iconinformation);
    Application.Terminate;
    Exit;
  end;   }
  //屏蔽delphi外壳与IE之间的错误发生
  Set8087CW(MCW_EM);
  //取出上网网卡的Mac和IP
  //lsMac := GetMac;
  //lsIP  := GetIP;
  //WebMain.Navigate('http://zhumadian.hacjr.cn:8081/weihu/hahaha.jsp?jiamigou=' +lwID+'&mac=' +lsMac+'&ip=' +lsIP);
  //WebMain.Navigate('http://192.168.0.1:7001/weihu/hahaha.jsp?jiamigou=' +lwID);
  //WebMain.Navigate('http://172.17.1.12:7001/weihu/hahaha.jsp?jiamigou=1');
  //WebMain.Navigate('http://zhumadianyz.hacjr.cn/weihu/hahaha.jsp?jiamigou=' +lwID+'&mac=' +lsMac+'&ip=' +lsIP);
  //WebMain.Navigate('http://zhumadianyz.hacjr.cn/weihu/hahaha.jsp?jiamigou=9890649DCF504148');
  //WebMain.Navigate('http://pingdingshan.hacjr.cn');
  //WebMain.Navigate('http://testzmd.hacjr.cn/weihu/hahaha.jsp?jiamigou=' +lwID+'&mac=' +lsMac+'&ip=' +lsIP);
  //D705D29AC94546CF
  //WebMain.Navigate('http://testzmd.hacjr.cn/weihu/hahaha.jsp?jiamigou=D705D29AC94546CF&mac=' +lsMac+'&ip=' +lsIP);
  //WebMain.Navigate('http://testzmd.hacjr.cn/weihu/hahaha.jsp?jiamigou=D705D29AC94546CF');
  //WebMain.Navigate('http://211.161.130.150:7001/weihu/hahaha.jsp?jiamigou=' +lwID+'&mac=' +lsMac+'&ip=' +lsIP);
  //WebMain.Navigate('http://zhengzhou.hacjr.cn:7001/weihu/pxhahaha.jsp?jiamigou=' +lwID+'&mac=' +lsMac+'&ip=' +lsIP);
  //WebMain.Navigate('http://hebi.hacjr.cn/weihu/hahaha.jsp?jiamigou=' +lwID+'&mac=' +lsMac+'&ip=' +lsIP);
  //WebMain.Navigate('http://kaifeng.hacjr.cn/weihu/hahaha.jsp?jiamigou=1&mac=' +lsMac+'&ip=' +lsIP);
  //WebMain.Navigate('http://shangqiu.hacjr.cn:8081/weihu/hahaha.jsp?jiamigou=' +lwID+'&mac=' +lsMac+'&ip=' +lsIP);
  //WebMain.Navigate('http://luoyang1.hacjr.cn/weihu/hahaha.jsp?jiamigou=1');
  //WebMain.Navigate('http://zhumadian.hacjr.cn/weihu/hahaha.jsp?jiamigou=' +lwID+'&mac=' +lsMac+'&ip=' +lsIP);
  //WebMain.Navigate('http://luohe.hacjr.cn/weihu/hahaha.jsp?jiamigou=1');
  //WebMain.Navigate('http://anyangpx.hacjr.cn/weihu/pxhahaha.jsp?jiamigou=1');
  //WebMain.Navigate('http://puyang.hacjr.cn/weihu/hahaha.jsp?jiamigou=' +lwID+'&mac=' +lsMac+'&ip=' +lsIP);
  //WebMain.Navigate('http://jiyuan.hacjr.cn/weihu/hahaha.jsp?jiamigou=1');
  //WebMain.Navigate('http://218.29.85.226:8081');
  //WebMain.Navigate('http://zhengzhou.hacjr.cn:7001/weihu/pxclienthahaha.jsp?jiamigou=1');
  //WebMain.Navigate('http://anyang.hacjr.cn:8081');
  //WebMain.Navigate('http://luoyang.hacjr.cn:8081');
  //WebMain.Navigate('http://a');
  //WebMain.Navigate('http://puyang.hacjr.cn:8081');
  //WebMain.Navigate('http://nanyang.hacjr.cn:8081/weihu/pxhahaha.jsp?jiamigou=1');
  //WebMain.Navigate('http://nanyang.hacjr.cn:8081/weihu/pxhahaha.jsp?jiamigou=1');
  //WebMain.Navigate('http://nanyang.hacjr.cn:8083');
  WebMain.Navigate('http://zhengzhou.hacjr.cn:7001/weihu/hahaha.jsp?jiamigou=1');
end;


procedure Tmain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  DAMPlusAppApis.DOGCLOSE;
  Action := caFree;
end;

function Tmain.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 Tmain.GetIP: String;
type
    TaPInAddr = array [0..10] of PInAddr;//定义内存地址类地数据对象
    PaPInAddr = ^TaPInAddr; //分配内存
var
  phe  : PHostEnt;//声明对象
  pptr : PaPInAddr; //声明对象
  Buffer : array [0..63] of char; //定义数组,为缓冲区
  I    : Integer; //临时整型变量
  GInitData      : TWSADATA; //声明对象
begin
  WSAStartup($101, GInitData);
  Result := '';
  GetHostName(Buffer, SizeOf(Buffer));
  phe :=GetHostByName(buffer);
  if phe = nil then Exit;
  pptr := PaPInAddr(Phe^.h_addr_list);
  I := 0;
  while pptr^[I] <> nil do begin
    if i=0
    then result:=StrPas(inet_ntoa(pptr^[I]^))
    else result:=result+':'+StrPas(inet_ntoa(pptr^[I]^));
    Inc(I);
  end;
  WSACleanup;

end;


procedure Tmain.FormCreate(Sender: TObject);
begin
    Application.OnMessage := ApplicationEvents1Message;
end;

procedure Tmain.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
const
   DialogKeys: set of Byte = [VK_LEFT, VK_RIGHT, VK_BACK, VK_UP, VK_DOWN,
   $30..$39, $41..42, $44..$55, $57, $59..$5A];
var
   iOIPAO : IOleInPlaceActiveObject;
   Dispatch : IDispatch;
begin
   if (webmain = nil) then
   begin
     Handled := System.False;
     Exit;
   end;

   Handled := (IsDialogMessage(webmain.Handle, Msg) = System.True);

   if (Handled) and (not webmain.Busy) then
   begin
     if FOleInPlaceActiveObject = nil then
     begin
       Dispatch := webmain.Application;
       if Dispatch <> nil then
       begin
         Dispatch.QueryInterface(IOleInPlaceActiveObject, iOIPAO);
         if iOIPAO <> nil then
           FOleInPlaceActiveObject := iOIPAO;
       end;
     end;

     if FOleInPlaceActiveObject <> nil then
     begin
       if ((Msg.message = WM_KEYDOWN) or (Msg.message = WM_KEYUP)) and
       (Msg.wParam in DialogKeys) then
         // nothing - do not pass on the DialogKeys
       else
         FOleInPlaceActiveObject.TranslateAccelerator(Msg);
     end;
   end;

 

end;


initialization
OleInitialize(nil);

finalization
OleUninitialize;

 

end.

原创粉丝点击