灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:4126回复:0

Delphi实现图形化批量IP Ping

楼主#
更多 发布于:2012-09-08 13:04

/*Title:Insun的故事
*Author:Insun
*Blog:http://yxmhero1989.blog.163.com
*From:www.4safer.com
*Reference:http://hi.baidu.com/ydbesl/blog/item/a16afa2ad14d8698033bf6a1.html
*/
ics控件下载地址http://www.huasoft.net/download/files/ics_d7.zip
当要检测的IP比较少时,我们一般直接使用DOS命令Ping来实现。但是,如果我们要检测的IP比较多时(比如一个网段),再用Ping命令就比较繁琐了,即使写一个批处理来实现,大把数据看起来也让人恼火。这里,我们用delphi实现对批量IP的检测,检测结果用明了的图形显示,效果如下:


51_3710_62563e7342e0326.jpg[删除]
  delphi treeview添加背景图片
procedure TForm1.FormCreate(Sender: TObject);
begin
form1.TreeView1 .Brush.Bitmap:=image1.Picture.Bitmap;
end;
delphi自带的DEMO    ..demoscustomdraw   不错。
不知bkMode怎么设为transparent,求指导。
//setBkmode(Canvas.Handle,transparent);

      unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ImgList, Ping, ComCtrls, jpeg, ExtCtrls, WinSkinData;
type
  TForm1 = class(TForm)
    TreeView1: TTreeView;
    Ping1: TPing;
    ImageList1: TImageList;
    GroupBox1: TGroupBox;
    Label1: TLabel;
    Edit1: TEdit;
    Label2: TLabel;
    Edit2: TEdit;
    Edit3: TEdit;
    Label3: TLabel;
    Button1: TButton;
    Label4: TLabel;
    SkinData1: TSkinData;
    Image1: TImage;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
   private
  Function Ping(striptring):Boolean;
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
   i:Integer;
implementation
{$R *.dfm}
Function TForm1.Ping(striptring):Boolean;
Begin
ping1.address:=Trim(strip);
Ping1.ping;
if ping1.ErrorCode=0 then
begin
ping:=True;
end
Else
Begin
ping:=False;
i:=i+1;
End;
End;

procedure TForm1.Button1Click(Sender: TObject);
Var
h:Integer;
treenode1,treenode2:TTreeNode;
begin
//清空所有Item;
TreeView1.Items.Clear;

With TreeView1.Items Do
Begin
//增加根接点;
TreeNode1:=Add(nil, 批量IP检测);
//全部展开所有结点
TreeView1.FullExpand;
//刷新TreeView
TreeView1.Refresh;
//根结点图标
TreeNode1.ImageIndex:=0;
TreeNode1.SelectedIndex:=0;
//二级接点
For h:=StrToInt(Trim(Edit2.Text)) To StrToInt(Trim(Edit3.Text)) Do
Begin
if ping(Trim(Edit1.Text)+.+Trim(IntToStr(h)))=True Then
Begin
//如果可以Ping通,图标为0;
TreeNode2:=AddChild(TreeNode1,Trim(Edit1.Text)+.+IntToStr(h));
TreeNode2.ImageIndex:=0;
TreeNode2.SelectedIndex:=0;
//全部展开所有结点
TreeView1.FullExpand;
//刷新TreeView
TreeView1.Refresh;
End
Else
Begin
//如果不能Ping通,图标为1
TreeNode2:=AddChild(TreeNode1,Trim(Edit1.Text)+.+IntToStr(h));
TreeNode2.ImageIndex:=1;
TreeNode2.SelectedIndex:=1;
//全部展开所有结点
TreeView1.FullExpand;
//刷新TreeView
TreeView1.Refresh;
End;
End;
h:=h+1;
End;
Label4.Caption:=检测结果:+IntToStr(i)+ 个IP不能Ping通;
Application.MessageBox(检测结束,提示,0);
End;
procedure TForm1.FormCreate(Sender: TObject);
begin
form1.TreeView1 .Brush.Bitmap:=image1.Picture.Bitmap;
end;
end.




喜欢0 评分0
游客

返回顶部