ID卡的读取方式其实是模拟一个键盘的录入而已,很简单,现在这个ID卡读取方法是为了在任何情况下把它正确读取出来的方法,例如你在tedit控件里面,当读取了ID卡时,会和其它数据混在一起,而我这种方法,能正确地读取出ID卡的正确数据,如果你同时快速按键盘又同时读取ID卡时,它是不会读出数据的,这样是为了防止读出来的数据不正确。不多说,下面是代码,还有测试用的代码一起的,我就不改了,大家可参考一下: 

 

ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)unit Unit1;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)interface
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)uses
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  Windows
, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  Dialogs
, StdCtrls, ExtCtrls;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)type
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  TIDCheck
=class( TObject)
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  protected
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)    m_INTCheck
:array of integer;//结果的检测用
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)    m_TimeCheck
:array of integer;//时间的检测用
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)    m_INT
:array of integer;     //真实保存的结果(没用)
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)    m_Time
:array of integer;   //真实保存的时间间隔(没用)
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)    m_Begin
:integer;//检测录入的字符第一个开始时间。
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)    m_MaxTime
:Smallint;//超出该时间证明不是ID的录入时间范围
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)    m_Length
:integer;//读取长度
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)    m_LastResult
:string;//上一次读取的结果
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)    procedure DoClear;
//当检测到符合清空条件的,则还原所有变量
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)    function CheckID
:Boolean;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)    function GetIDResult
:string;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)    procedure DoAddKey(var key
:word);//符合条件的进行处理。
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  public
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)    aForm
:TForm;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)    function KeyDownCheck(var key
:word):string;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)    property IDResult
:string read GetIDResult;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)    property LastResult
:string read m_LastResult;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)    constructor Create(MaxTime
:integer=30;Length:integer=10);
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)    destructor Destroy; override;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  end;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  TForm1 
= class(TForm)
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)    Timer1
: TTimer;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)    Memo1
: TMemo;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)    Edit1
: TEdit;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)    procedure FormKeyDown(Sender
: TObject; var Key: Word;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)      
Shift: TShiftState);
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)    procedure FormShow(Sender
: TObject);
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  private
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)    { Private declarations }
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)    m_End
,m_first:integer;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)    IDTest
:TIDCheck;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  public
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)    { Public declarations }
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  end;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)var
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  Form1
: TForm1;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)implementation
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据){
$R *.dfm}
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)function TIDCheck
.CheckID: Boolean;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)begin
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  
if m_INTCheck[m_Length-1]<0 then
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)    result
:=false
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  
else
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)    result
:=true;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)end;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)constructor TIDCheck
.Create(MaxTime: integer;Length:integer);
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)begin
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  m_MaxTime
:=MaxTime;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  m_Length
:=Length;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  SetLength(m_INTCheck
,m_Length);
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  SetLength(m_TimeCheck
,m_Length);
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  SetLength(m_INT
,m_Length);
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  SetLength(m_Time
,m_Length);
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  DoClear;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)end;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)destructor TIDCheck
.Destroy;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)begin
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  Finalize(m_INTCheck);
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  Finalize(m_TimeCheck);
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  Finalize(m_INT);
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  Finalize(m_Time);
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  inherited;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)end;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)procedure TIDCheck
.DoAddKey(var key: word);
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)var
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  i
:Smallint;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)begin
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  
for i:=0 to m_Length-1 do
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)    
if m_INTCheck[i]<0 then
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)    begin
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)      m_INTCheck[i]
:=key;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)      m_TimeCheck[i]
:=GetTickCount-m_Begin;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)      m_Begin
:=GetTickCount;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)      break;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)    end;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  
if i=m_Length then//没有空间记录,把所有数据前移并把新的放在最后一位。
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  begin
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)    
for i:=1 to m_Length-1 do
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)    begin
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)      m_INTCheck[i
-1]:=m_INTCheck[i];
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)      m_TimeCheck[i
-1]:=m_TimeCheck[i];
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)    end;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)    m_INTCheck[m_Length]
:=key;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)    m_TimeCheck[m_Length]
:=GetTickCount-m_Begin;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)    m_Begin
:=GetTickCount;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  end;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  
if (m_TimeCheck[i]>=m_MaxTime) and (i>0) then //超出ID卡读取范围则清空
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)    DoClear;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)end;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)procedure TIDCheck
.DoClear;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)var
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  i
:integer;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)begin
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  
for i:=0 to m_Length-1 do
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  begin
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)    m_INTCheck[i]
:=-1;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)    m_INT[i]
:=-1;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)    m_TimeCheck[i]
:=-1;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)    m_Time[i]
:=-1;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  end;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  m_Begin
:=0;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  aForm
.Caption:=aForm.Caption+'clear';
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)end;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)function TIDCheck
.GetIDResult: string;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)var
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  i
:Shortint;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)begin
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  
if CheckID then
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  begin
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)    
for i:=0 to m_Length-1 do
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)      result
:=result+char(m_INTCheck[i]);
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  end;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)end;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)function TIDCheck
.KeyDownCheck(var key:word):string;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)begin
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  result
:='';
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  case key of
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  
48..57:DoAddKey(key);
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)      
13:begin
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)           
if checkid then //检测到结果则把结果返回
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)           begin
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)             result
:=GetIDResult;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)             m_LastResult
:=result;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)             DoClear;
//清空重新处理。
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)           end
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)           
else
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)             DoClear;
//清空重新处理。
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)         end;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  
else//非数字的要清空并重新处理
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)    DoClear;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  end;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)end;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)procedure TForm1
.FormKeyDown(Sender: TObject; var Key: Word;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  
Shift: TShiftState);
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)var
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  aStr
:string;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)begin
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据){
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  
if key=13 then
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  begin
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)    m_end
:=GetTickCount;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)    memo1
.Lines.Add('结束:'+inttostr(m_end-m_first));
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)    m_first
:=0;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  end
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  
else
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  begin
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)    
if m_first=0 then
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)    begin
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)      m_first
:=GetTickCount;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)      memo1
.Lines.Add('开始');
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)    end;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  end;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  
if key=13 then
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  begin
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)    m_first
:=0;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)    
exit;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  end;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  
if m_first=0 then
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  begin
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)    m_first
:=GetTickCount;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  end
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  
else
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  begin
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)    memo1
.Lines.Add('Key:'+char(key)+'keyCode'+inttostr(key)+'时间:'+inttostr(GetTickCount-m_first));
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)    m_first
:=GetTickCount;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  end;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)}
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  aStr
:=IDTest.KeyDownCheck(key);
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  
if length(aStr)>0 then
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  begin
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)
//    memo1.Lines.Add(aStr);
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)    key
:=0;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  end;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据){
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  
if self.ActiveControl is TEdit then
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)    TEdit(self
.ActiveControl).Text:=;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)}
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)end;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)procedure TForm1
.FormShow(Sender: TObject);
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)begin
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  memo1
.Clear;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  m_End
:=0;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  m_first
:=0;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  IDTest
:=TIDCheck.Create;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)  IDTest
.aForm:=self;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)end;
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)
ID卡读取方法(用于区分ID卡读取出来的数据和一般人手录入的数据)end
.


原创作品出自努力偷懒,转载请说明文章出处http://blog.csdn.net/kfarvid或 http://www.cnblogs.com/kfarvid/

相关文章:

  • 2022-12-23
  • 2021-09-01
  • 2022-12-23
  • 2021-06-01
  • 2021-11-17
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-08-23
  • 2021-11-30
  • 2021-12-24
  • 2021-08-27
  • 2021-11-15
  • 2021-06-02
  • 2021-12-17
相关资源
相似解决方案