Delphi实现随时随刻知道自己的IP

时间:2010-01-27 16:32:03  来源:第二电脑网  作者:第二电脑网

  第二电脑网导读:号器会断开你当前的连接去拨别的号(想一想,拨一个长途国际电话,一小时多少钱?!),所以,我们这些拨号上网的用户需要一个能随时监测自己IP地址的软件,当IP发生改变时,它会自动的报警;同时,它还应该是透明的,这样即使运行时总在最前面,也不会影响别的窗体。   废话不多说了,马上开工。首先打开Delphi新建一个工程,添加一个定时器Timer1、一个标签Label1、一个Po...
  正文:随着网络的普及,越来越多的人开始过起了网络生涯。网站让你目不暇接,可是有的网站却专门钻IE的空子,当你浏览了它的主页之后,注册表就会被禁止,还会修改你的其他设置,真是害人不浅。还有一招更毒的,你浏览它的主页后,它会下载一个拨号器在你的硬盘,拨号器会断开你当前的连接去拨别的号(想一想,拨一个长途国际电话,一小时多少钱?!),所以,我们这些拨号上网的用户需要一个能随时监测自己IP地址的软件,当IP发生改变时,它会自动的报警;同时,它还应该是透明的,这样即使运行时总在最前面,也不会影响别的窗体。

  废话不多说了,马上开工。首先打开Delphi新建一个工程,添加一个定时器Timer1、一个标签Label1、一个PopupMenu1,并且为PopupMenu1添加一个Exit菜单项。下面就是全部的源代码:



unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, StdCtrls, ExtCtrls, Winsock; //首先要添加winsock
type
TForm1 = class(TForm)
Timer1: TTimer;
Label1: TLabel;
PopupMenu1: TPopupMenu;
Exit: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Label1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Label1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure ExitClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
oldx,oldy: integer;//添加变量,用做移动窗体
oldIp: string;
implementation
{$R *.dfm}
//下面就是关键所在了
function LIP : 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
    result:=StrPas(inet_ntoa(pptr^[I]^));
    Inc(I);
  end;
  WSACleanup;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  with Label1 do //定义属性
begin
      Caption:='';
      Font.Charset:=ANSI_CHARSET;
      Font.Name:='Arial';
      Font.Size:=10;
      Font.Color:=clRed;
      Align:=alClient;
      PopupMenu:=popupmenu1;
    end;
    
    Timer1.Interval:=1000;
    Timer1.Enabled:=true;
    Label1.Caption:='IP:'+LIP; //赋值,把Ip赋值给label1
oldIp:=LIP;
    BorderStyle:=bsNone;
    Alphablend:=true; //呵呵,这个就是让窗口变透明的办法了
Alphablendvalue:=100;
    FormStyle:=fsStayOnTop; //让窗体总在最前面
end;
  
  procedure TForm1.Timer1Timer(Sender: TObject);
  begin
    Label1.Caption :='IP:'+LIP;
    if oldip <> LIP then
    Showmessage('IP地址已经改变,请检查!');//提醒用户
end;
  
  procedure TForm1.Label1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
  begin
    if ssleft in shift then //移动窗体Form1
"Delphi实现随时随刻知道自己的IP"由第二电脑网原创提供,转载请注明:http://www.002pc.com/master/College/Language/Delphi/2010-01-27/12515.html


关键字:

关于《Delphi实现随时随刻知道自己的IP》文章的评论

站内搜索: 高级搜索

热门搜索: Windows style 系统 tr IP QQ CPU 安装 function 注册 if td