IP归属地查询器

在线查询数据,数据来源123cha.com。需要联网使用,不是查询的纯真的数据。猛击此处下载。 laugh

部分代码:

procedure TForm1.Button1Click(Sender: TObject);
var
   xml : OleVariant;
   r:string;
   p1,p2 : Integer;
   I:Integer;
begin
   xml := CreateOleObject('Microsoft.XMLHTTP');
   xml.Open('GET','http://www.123cha.com/ip/?q='+edt1.Text, False);
   xml.Send;
   r := xml.responseText;
   p1:=Pos('数据',r);
   p2:=Pos('
  • [查询提供]',r); mmo1.lines.add(' 您查询的地址可能归属地是:') ; mmo1.lines.add(' ===========================') ; mmo1.Lines.add (Copy(r, p1+16, p2-p1-5)); mmo1.Text:=StringReplace(mmo1.Text,' ','',[rfReplaceAll]); mmo1.Text:=StringReplace(mmo1.Text,'
  • ','',[rfReplaceAll]); mmo1.Text:=StringReplace(mmo1.Text,'
  • ','',[rfReplaceAll]); mmo1.Text:=StringReplace(mmo1.Text,'','',[rfReplaceAll]); mmo1.Text:=StringReplace(mmo1.Text,'','',[rfReplaceAll]); end;

    键盘过滤驱动勘误《寒江独钓》

    Keydata=Irp->AssociatedIrp.SystemBuffer;
    numKeys=Irp->IoStatus.Information / Sizeof(KEYBOARD_INPUT_DATA);
    for ( i=0;i<numKeys;i++)
    {
        DbgPrint(("numKeys : %d ",numKeys));
        DbgPrint(("Scan code : %x ",KeyData->MakeCode));
        DbgPrint(("%s\n",KeyData->Flags? "up":"down"));
        MyPrintKeyStroke((UCHAR)KeyData->MakeCode);
    
        if (KeyData->MakeCode==CAPS_LOCK)
        {
            KeyData->MakeCode=LCONTROL;
        }
    }

    以上是书上的源代码,整个循环体只遍历了第一个结构体,后面的并没有进行操作,虽然有个循环但是并没有什么实质的作用,正确的遍历代码应该是下面的样子。程序代码所在页面Page-73 smile

    Keydata=Irp->AssociatedIrp.SystemBuffer;
    numKeys=Irp->IoStatus.Information / Sizeof(KEYBOARD_INPUT_DATA);
    for ( i=0;i<numKeys;i++,numKeys++)
    {
        DbgPrint(("numKeys : %d ",numKeys));
        DbgPrint(("Scan code : %x ",KeyData->MakeCode));
        DbgPrint(("%s\n",KeyData->Flags? "up":"down"));
        MyPrintKeyStroke((UCHAR)KeyData->MakeCode);
    
        if (KeyData->MakeCode==CAPS_LOCK)
        {
            KeyData->MakeCode=LCONTROL;
        }
    }