说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

用Delphi程序获取拨号连接的动态IP地址

HTML文档下载 WORD文档下载 PDF文档下载
用Delphi程序获取拨号连接的动态IP地址

在WIN9X下,如果安装了拨号网络,则在WINDOWS系统的系统目录System下将有两个拨号网络管理程序库RasApi32.DLL和RasApi16.DLL,我们可利用其中的RAS系列函数来获取和设置拨号连接网络的信息。当然是可以获取拨号连接的动态IP地址了。在Delphi帮助文件中,有相关RAS函数的详细说明。

一、先解释一些要用到的数据常量和数据结构。

const

RAS_MaxDeviceType = 16;//设备类型名称长度

RAS_MaxEntryName = 256;//连接名称最大长度

RAS_MaxDeviceName = 128;//设备名称最大长度

RAS_MaxIpAddress = 15;//IP地址的最大长度

RASP_PppIp = $8021;//拨号连接的协议类型,该数值表示PPP连接

type

HRASCONN = DWORD;//拨号连接句柄的类型

RASCONN = record//活动的拨号连接的句柄和设置信息

dwSize : DWORD;//该结构所占内存的大小(Bytes)

一般设置为SizeOf(RASCONN)

hrasconn : HRASCONN;//活动连接的句柄

szEntryName : array[0..RAS_MaxEntryName] of char;

//活动连接的名称

szDeviceType : array[0..RAS_MaxDeviceType] of char;

//活动连接的所用的设备类型

szDeviceName : array[0..RAS_MaxDeviceName] of char;

//活动连接的所用的设备名称

end;

TRASPPPIP = record//活动的拨号连接的动态IP地址信息

dwSize : DWORD;//该结构所占内存的大小(Bytes)

一般设置为SizeOf(TRASPPPIP)

dwError : DWORD;//错误类型标识符

szIpAddress : array[ 0..RAS_MaxIpAddress ] of char;

//活动的拨号连接的IP地址

end;

二、接着要解释要用到的两个RAS函数。

//获取所有活动的拨号连接的信息(连接句柄和设置信息)

function RasEnumConnections( var lprasconn : RASCONN ;

//接收活动连接的缓冲区的指针

var lpcb: DWORD;//缓冲区大小

var lpcConnections : DWORD//实际的活动连接数

) : DWORD; stdcall;

function RasEnumConnections;external 'Rasapi32.dll'

name 'RasEnumConnectionsA';

//获取指定活动的拨号连接的动态IP信息

function RasGetProjectionInfo(

hrasconn : HRasConn;//指定活动连接的句柄

rasprojection : DWORD;//RAS连接类型

var lpprojection : TRASPPPIP;//接收动态IP信息的缓冲区

var lpcb : DWord//接收缓冲区的大小

) : DWORD;stdcall;

function RasGetProjectionInfo;external

'Rasapi32.dll' name 'RasGetProjectionInfoA';

这两个函数的返回值为0时表示执行成功,非0表示错误代码。

三、下面要讨论如何用上面的两个RAS函数获取拨号连接的动态IP地址

首先,要用函数RasEnumConnections列出已建立的活动拨号连接的信息,其中包括连接名称、连接句柄、连接设备类型和设备名称;然后根据连接句柄用函数RasGetProjectionInfo获取连接对应的一个TRASPPPIP结构,其中包括一个成员属性szIpAddress即为动态IP地址。具体请参见以下程序片段和注释信息。

procedure TForm1.Button1Click(Sender: TObject);

const

MaxConnections = 10;//假设最多有10个活动的拨号连接

var

connections : array[0..MaxConnections-1] of RASCONN;

//拨号连接数组

longSize : dword;

intAvailabelConnections : dword;

//活动的拨号连接的实际数目

intIndex : integer;

strTemp : string;

dwResult : DWORD;

dwSize : DWORD;

RASpppIP : TRASPPPIP;

//活动的拨号连接的动态IP地址信息

begin

connections[ 0 ].dwSize := sizeof(RASCONN);

longSize := MaxConnections * connections[ 0 ].dwSize;

//接收活动连接的缓冲区大小

intAvailabelConnections := 0;

//获取所有活动的拨号连接的信息(连接句柄和设置信息)

dwResult := RasEnumConnections( connections[ 0 ]

longSize

intAvailabelConnections );

if 0 < > dwResult then

memo1.lines.add( '错误:' + inttostr( dwResult ) )

else

begin

memo1.lines.add( '现有的活动连接有' +

IntToStr( intAvailabelConnections ) + '个');

//显示所有活动的拨号连接的信息(设置信息和动态IP地址)

for intIndex := 0 to intAvailabelConnections - 1 do

begin

//显示一个活动的拨号连接的设置信息

strTemp := '连接名称:'

+ StrPAS( connections[ intIndex ].szEntryName )

+ ',设备类型:'

+ StrPAS( connections[ intIndex ].szDeviceType )

+ ',设备名称:'

+ StrPAS( connections[ intIndex ].szDeviceName );

memo1.lines.add( strTemp );

//显示一个活动的拨号连接的动态IP地址

dwSize := SizeOf(RASpppIP);

RASpppIP.dwSize := dwSize;

dwResult := RASGetProjectionInfo

( connections[ intIndex ].hRasConn

RASP_PppIp

RasPPPIP

dwSize);//获取动态IP地址

if 0 < > dwResult then

memo1.lines.add(

'错误:' + inttostr( dwResult ))

else

memo1.lines.add(

'动态地址:' + StrPas(RASpppIP.szIPAddress));

end;

end;

end;

以上程序在PWIN98+Delphi3.0下调试通过。

五种工具保护你的在线隐私 从打压到支持 微软与GitHub的爱恨情仇 “夫妻档”初创公司百万美元打造实时Hadoop系统 编程从娃娃抓起:13岁儿童的移动游戏之梦 新浪管理层调整 许良杰任CTO兼联席总裁 Java,你还会让多少人继续“受伤”? 中国或超美国 成全球智能设备市场霸主 告别手写 API文档生成工具推荐 微软Azure超越亚马逊云计算的性能测试 苹果创新已经被三星超越 不靠广告也盈利:移动应用掘金7大案例剖析 谈Clash of Clans货币化的成功 UX设计师应当规避的七大问题 初创公司Citus Data将CitusDB扩展到Hadoop 移动医疗:巢儿孵化器为何笃信是创业金矿? 一个新的雅虎:雅虎主页改版 谷歌发布Google Glass最新视频 公开接受预定 微软Windows Blue结束半程开发 或今年8月推出 JavaFX即将开源,支持iOS与Android开发 趣味编程网Codecademy携手Twitter、Evernote、Box等推出系列API教程 开发者,别让任何人绑架你的工作节奏 REST Style来袭 LinkedIn开源Rest.li框架 [探讨] 是用jQuery框架还是自造车轮呢? 一周消息树:Java 你还会让多少人继续“受伤”? Chromebook Pixel,揭开谷歌云世界的大幕 惠普:第一财季净利12亿 同比仍在下滑 谷歌发布超高清触屏笔记本Chromebook Pixel 传谷歌正开发触屏Chrome OS笔记本 今年或上市 估值25亿 视觉社交网站Pinterest融资2亿美元 跨平台开发框架Xamarin 2.0发布 移动新趋势:扁平化设计 vs. 拟物化设计(上篇) 我加不起分,怎么回事? 求一个位运算的算试 《深入浅出MFC》中一个小问题不明白! 关于键盘消息的问题 谁有《Linux内核源代码分析》.发给我或告诉我连接都给分 在SESSION STARTZ()中是不是不能用ASP脚本程序? 问一个菜鸟级的问题。答者有分。 为何我用CDialogBar生成的停靠栏上Button都是灰色的? Help!!help!!请教如何在vc程序将我的信息发到别人的手机中?? tapi播放语音 关于变量传递问题,请高手帮忙! 有谁在OnDraw()中用过MessageBox()?为什么不是死循环?怎么解释发生的现象? 关于播放flash的问题 把0显示成0.00怎么弄? 简单问题,怎样得到ListView一单元格中的内容,如用GetItemText请问里面的参数怎样添? 全新安装的redhat 7.2为什么启动kde后不能打开Konqueroer浏览器和主目录 研究生在毕业时真的比本科生有优势吗? 请教:谁知道自动控制原理根轨迹乃试图。。,的算法? 我的AOUTOCAD总装不上??? 爱恋是什么东西?是好人就来看!!! 新闻组(NNTP)怎么用? 为何我用 Delphi写的 MDI Child Window关闭后无法打开? 为什么这样画不行呢? 语句char a='\72'则变量a包含几个字符 急,不难的问题(有代码) 问一个幼稚的问题,delphi6.0分为那几个版本,你们都用的哪一个。 呵呵,下网了,今天捞了150多的专家分,太少了~~,明天在我星期5发布的帖子里给大家分,每个人大概都有10分左右吧~~ 请问各位,现在什么版本的LIUX比较好,你们一般用那种? 快毕业了才心动!怎么办? 为什么我的可用分越来越少,参与分加得少,怎么回事啊 快毕业了才心动,怎么办? 有什么办法可以加快ACCESS的速度 快毕业了才心动~怎么办? 请问设a=3,b=4,c=5,则表达式!(a+b)+c-1&&b+c/2的值是多少? 我下载了tinyDB 2.8,需要注册怎么办? 高价寻求软件开发(5000.00元报酬) 网页填写提交表单时经常出现停顿,怎么回事? 111高价寻求软件开发(5000.00元报酬) 各位大虾,深圳那儿买书可以打折? putao请进 双服务器的网络连接问题,请进来看看。 pb7的exe连接sql server2000真难呀,我都弄了两周了!!!!!!!!!!还没解决!!!!??? 怎样响应鼠标在对话框上画图啊? 怎样访问局域网内的机器? asp+sql的查询! 有关MIDAS的问题,请看http://www.csdn.net/expert/topic/374/374719.shtm 紧急!!如何使用ADO创建数据库及表(zwjmouse) 哪位大侠能提供一个c语言写的俄罗斯方块的有注释的源程序(高分) 一段可以冒充QQ上线,下线的源代码,支持最新版0710B 有关于Delphi开发局域网数据库系统的书籍或者资料吗? 请问由mscomm发出的数据是什么格式,单片机怎么识别?》》》 已知函数f(x)=a+1/(2的x次方-1)+是奇函数,求实数a的值和f(x)的值域. 求七年级下册历史期末试卷 2009年全国文综历史的一道选择题答案1787年费城会议制定的《美利坚合众国宪法》规定:合众国不得授予贵族爵位.这反映了美国宪法的主要原则是( )A民主主义B平等主义C自由主义D共和主 已知函数f(x)=2的x次方+1分之a×2的x次方+a-2(x∈R),且函数f(x)为奇函数.(1)求实数a的值 (2)求已知函数f(x)=2的x次方+1分之a×2的x次方+a-2(x∈R),且函数f(x)为奇函数.(1)求实数a的值 将一个扇形的半径扩大为原来的3倍,同时将他的圆心角缩小为原来的一半,这样所得到的新扇形的面积比原来的面积增加了70平方厘米.求原来扇形的面积最好今天 2008年四川卷物理卷选择题21题详解由什么几何关系,麻烦说清楚一点 ,还有为什么光线和玻璃球刚好是轴对称的 已知函数f(x)=(2的x次方+1)(后分之a·2的x次方+a-2)(x∈R)是奇函数,求实数a的值. 将一个扇形的半径扩大为原来的三倍,同时将他的圆心角缩小为原来的一半,这样所得到的新扇形的面积比原来 已知一个扇形的面积是100平方厘米,现将它的圆心角扩大为原来的2倍,而将它的半径缩小为原来的1/2,这样所得的扇形面积是多少呢 取50毫升稀硫酸与一定质量的镁铝合金反应,合金全部溶解,向所得溶液中滴加5mol/L的氢氧化钠溶液至过量,生成沉淀质量与加入氢氧化钠溶液体积关系如图,则原合金中镁的质量为?(沉淀最大值 a的平方的n-1次方= 已知一个扇形的面积是100Cm平方,现将它的圆心角扩大原来2倍,而将它的半径缩小为原来的二分之一,这样所得的扇形面积是多少呢? 将5.1克镁铝合金溶于70毫升4MOL/L硫酸中,当合金完全溶解后,再加入80毫升7MOL/L的氢氧化钠溶液,得到的沉淀质量为13.6克,则加入硫酸时,产生氢气的物质的量为? (-a的 n-1次方)的平方= 扇形的半径扩大为原来的两倍,圆心角缩小为原来的二分之一,那么扇形的面积会怎样 fx为二次函数,满足f(f(x))=x的四次方-2x的平方求f(x) (a的n次方)平方÷a的n-1次方 求“2008-2009初二年上册英语期末试卷(人教版)” 最好是福建省福清市的. 将5.1g镁铝合金投入到500mL2mol/L的盐酸溶液中,金属完全溶解后,再加入4mol/L的NaOH溶液,若要使得到的沉淀量为最大量,应加入NaOH溶液的体积为多少? (a-b)的平方(a-b)的n次方(b-a)的5次方 10ml 0.6mol/L的NaOH ,20ml 0.5mol/L的H2SO4,30ml 0.4mol/L的HCl 的水溶液所含离子总数的大小顺序是 二次函数 求F(X)=X的4次方+2X的平方-1的最小值 25mL的稀H2SO4恰好中和20g10%NaOH溶液,则硫酸的物质的量浓度为写出计算过程! -a的平方*-a*-a的三次方 把5.1g镁铝合金溶于60ml 5mol/L的硫酸溶液中,完全溶解后再加入65ml 10mol/L的氢氧化钠溶液,得沉淀9.7g继续加氢氧化钠沉淀消失(1)当加入-----ml氢氧化钠时,可使镁铝离子全部沉淀(2)计算合金溶 称取m克纯NAOH配成500ml溶液,取出25ml恰好与20ml盐酸完全中和,盐酸的物质的量浓度 一桶水的重量正好等于这桶水的四分之三加上四分之三千克.这通水的重量是多少千克? f(x)为二次函数,且f(x-1)=x的二次方-x(1)求f(0)的值并求f(x)的解析式(2)若x属于【-1,1】,求f(x)的值域 某种待测浓度的NaOH溶液25mL,加入2OmL1mol/L的硫酸溶液后显中性.计算待测浓度的Na0H溶液的物质的量浓度. 已知一个扇形的面积是100平方厘米,现将它的圆心角扩大为原来的两倍,而将它的半径缩小为原来的二分之一这样所得的扇形面积是多少呢?要有这样的格式:解:已知: 求: n= s= 已知二次函数f(x)=(㏒10a)x的二次方+2x+4㏒10a的最大值是3,求a的值 人教版七年级英语08-09期末试卷 七年级下册英语期末试卷难点的 怎样用计算机破一个数的三次方?怎么样才能用计算机破一个数的三次方?需要什么按键,可以的话要截图》》》 一个扇形的半径不变,若圆心角扩大2倍,则面积扩大了3倍;若圆心角缩小为原来的1/2,我要提问,请大家帮忙一下.半径扩大为原来的2倍,则面积扩大了( )倍.快啊,哥们.我好急... 一桶水的质量正好等于这桶水的3/4,加上3/4千克,这桶水重多少 一个数的N次方怎么打出来 将一个扇形的半径扩大为原来的3倍,同时将它的圆心角缩小为原来的一半,这样所得到的新扇形的面积比原来的一个扇形的半径扩大3倍,将它的圆心角缩小为一半,所得到的面积增加了70平方厘 扇形的圆心角扩大为原来的2倍,半径缩小为原来的1/2,则扇形面积()A:不变B:扩大2倍C:扩大为原来的4倍D:缩小为原来的1/2 镁铝锌的混合物20克与足量的稀硫酸完全反应,蒸发水后得到68克固体,则反应过程中放出氢气为多少克? 扇形的圆心角缩小为原来的1/3,半径扩大为原来的3倍,则扇形面积()A:不变B:增加了3倍C:缩小为原来的1/3倍D;扩大为3倍 扇形的半径不变,圆心角缩小到原来的1/2,则它的面积()A:缩小到原来的1/4B:缩小到原来的1/2C:缩小到原来的1/8D:无法确定 40g镁铝锌的混合物与足量的稀硫酸反应,蒸发水后得到136g固体,则反应过程中放出氢气的质量为( )A.4g B.3g C.2g D.1g还要有为什么,我知道答案了 将镁,铝的混合物1.32克溶于100mol/LH2SO4溶液中,然后低价1mol/NaOH溶液,在将镁、铝的混合物1.32克溶于100mol/LH2SO4溶液中,然后低价1mol/NaOH溶液,在滴加NaOH溶液过程中,沉淀的质量随加入NaOH溶液的体积 若一个扇形的圆心角扩大2倍,半径缩小为原来的一半,那么所得的扇形面积与原来扇形面积的比值为?注意!是比值 23.36立方分米等于了多少立方分米(用分数做) ,1mol金属铝与足量氢氧化钠溶液反应,产生的氢气的物质的量是多少? 一个扇形的圆心角扩大2倍,半径缩小为原来的一半,所得的扇形面积与原来扇形的面积的比值为______. 一个扇形,如果半径缩小到原来的三分之一倍,圆心角扩大到原来的9倍,那么面积_________如题 求1\2+2的平方\1+2的立方\1+2的三次方\1+...+2的n次方\1的值. 有一未知浓度的盐酸溶液25mL,在加入0.5mol/LAgNO3溶液25ml后 改加NaOH溶液结果用去1mol/LNaOH溶液25mL,恰好完全中和,则盐酸的物质的量浓度为 七年级下册地理期末试卷七年级册地理期末试卷 嘉兴市七年级下册历史期末试卷(2008)快,我们明天考 将BaCl2•xH2O的晶体244g溶于水配成100mL溶液,取此溶液25mL与50mL0.1mol•L^-1的AgNO3溶液作用,刚好把Cl-离子沉淀完全,试求:(1)2.44gBaCL2•xH2O的物质的量;(2)BaCl•xH2O的摩尔质量;(3 七年级下册地理期末试卷(附答案) 七年级下册历史期末试卷 七年级下册历史期末试卷七年级下册试卷 2008年、2009年历史考研真题给出完整的题目就可以了, 最好两份 急要往年人教版滴 现代人搬新居,朋友们前去祝贺,叫 撩锅底 ,一般送贺礼.那么在宋代开封,流行的方式怎么样?请你猜猜.A送烟酒B送水果C送鲜花D献茶
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn