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

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

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

《计算机世界》1999年8月16日《电脑与生活》版刊登了一篇文章,讨论了如何用Delphi程序获取拨号连接的动态IP地址。本文则讨论用另一个方法获取拨号连接的动态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下调试通过。

微软发布Windows Phone 7.8 SDK更新 Amazon账号将支持内付费 道具可登畅销榜 裸照门:500px应用被苹果踢出App Store APP的魔法:三个杭州小伙做手游吸金千万 Facebook与Google,巨人们将在移动端决胜负 移动广告量起来了!2013年绩效营销将成主流 Fedora欲以MariaDB取代MySQL 将节能进行到底:Facebook为冷存储寻求廉价闪存 谷歌Q4财报净利润28.86亿美元 超分析师预期 社交媒体的力量:Wood Camera登上iOS付费榜首之谜 屏蔽GitHub是互联网时代的“闭关锁国”吗? 巧妙利用空白设计案例分享(多图) 用友发布2013/新三年业务策略 力推UAP/CSP云平台 AWS集群计算新增内存分析EC2实例 手游:鼓足力气,掰弯传统3D游戏大作 LBA兴起:未来移动广告将基于地理位置 苹果发布2013财年Q1财报:iPhone销量及营收低于预期 不再被墙后 一个全新GitHub到来 与乔布斯并肩作战的日子 Google抛弃Exchange ActiveSync WP用户获DAV支持 Facebook真的要做“Facebook Phone”? 程序员,都去写一写前端代码吧 清除山寨和广告应用,“豌豆洗白白”服务上线 谷歌另类“开源” 程度仍不及Facebook和Twitter 想在云中分一份蛋糕? 不妨试试“山寨” 为何乔布斯脾气怪糟 却能让一群最优秀的人为他卖命? 单页Web设计案例+技巧攻略(多图) IE10里的捕捉模式和响应式设计 在“亚马逊商店”出售自己:产品经理这么找工作 【CTO俱乐部第92期】大规模存储与电商架构演化实战分享 刘黎明:PaaS是非主流业务,要与IaaS融合 好不容易收到第一份海外定单! 问ListCtrl的item上的右键菜单 怎样求出一个点的坐标??????急急!!!! 请大家看一看这个分页程序,为什么在页数大于20时,按下一页时下面的页数还是显示的1~10页!!谢谢!! 我的linux在放mp3時總愛死,為甚麼? 唉,弄了好几天了,如何解决?????????????? 请问哪里有免费的PHP+MYSQL主页空间呀! 大家快来帮忙:数据库的一个小问题 我现在想学一门新技术,不知道是学VC++,JAVA,还是刚刚出来的。NET技术呢?请高手指点呀。 高分征解:一个动态提示窗口的问题,给出答案必定给分!!!求救我啊!! 在这里赚分真不容易呀! 怎样检查FORM中CHECKBOX和RADIO的值呢 那里有在asp中操作word对象的详细教程? 请问:如何得到TForm的窗口句柄? authorware中的按钮。 哪里有发送mail成功的php程序!! 关于上传数据的一个特殊问题,有点难 怎么用OLE实现与手机的通讯?? 汉语分词算法 grid显示问题 成为Delphi高手须看哪方面的书籍,请高高手指教? 关于属性页的小问题? 为水园增加点正气: 大家都是斯文人吗,呵呵||||| 诗经国风2001版----之桃夭 高手高手教教我 +++++++++++++一个很奇怪的问题************* 请问:有没有专门介绍C++函数使用的书籍? 提個有點難度的問題.看問題的有獎. 高手请看:这语句错在哪? 哪儿有dos的原代码? 谁能平息这几天水园的争端^^^^^^^^^^一个详和的水园^^^^^^^^^^^我只能拿分支持 为何显示黑乎乎的一片,chick!!!!!!! 原来女人也好色,欢迎MM。 心芯蕊~来拿分~~~~MM要分能不给吗??砸锅卖铁也要给啊!~~~~55555,可怜我的分啊~~~~~~~~~~~ 着急??一小段代码!!谁来看一下?? 男子汉说到做到,我在此特地向一位女士道歉 高分求救!急急! ! ! ! 奇怪,编译DIRECTX例子正常,新建一工程后改写主文件后运行BltFast函数为何这样? 急求高人!不简单:关于common dialogbox控件的问题? 怎样学可视化编程? 用Jmail收信后,为什么WORD之类的附件打开总是乱码?? 请问如何使用BCB中的PageControl创建Wizard? 别人跟的帖子也应该能回复呀! Rational Rose2000 Enterprise Edition的License Key是什么? 哪位好兄弟肯给我一个Jbuilder4的序列号? 就有两个月了,还没怎么看书,不知道能不能过高程!!! -------我和我MM系列(转)几乎是完全版 有MM和没MM的都来看看吧 当然MM也可以看~~ 建议:在此开设一个程序之家聊天室。 请教一个简单问题!! 请问各位:如何显示GIF图像??? 最近水园很没劲,看样子是要离开的时候了,虽然我来的时间不是很长。唉,为什么会这样? 这几天晚上我都会在263战网 kclo3和mno2受热分解氧化还原反应?请问,kclo3氧化还原后,谁是氧化剂?谁是还原剂? 氯酸钾(KClO3)中氯元素的化合价为() A.-1 B.+3氯酸钾(KClO3)中氯元素的化合价为() A.-1 B.+3 C.+5 D.+7 KClO3受热分解用氧化还原的思路配平它. KClO3不加MnO2加热会怎样分解条件纯加热和不加MnO2催化剂不是吧,KClO3=?,我记得一定不是KClO3=加热=KCl+O2↑ KClO3中各元素的化合价分别是什么啊? 加热氯酸钾和二氧化锰混和物的化学式 把104.6克KCLO3和5克MnO2的混合物加热一段时间,混合中的二氧化锰的质量分数变为5%生成氧气的质量和剩余固体中绿花钾的质量分数 氯酸钾的化合价(每个元素是几价要标出来) 氯化钾的化合价(每个元素是几价也要标出来) 加热氯酸钾和二氧化锰混合物出来的是什么? 把14.5克KCLO3和1克MNO2的混合物加热反应完全后 得残留物10.7克,求剩余固体有哪些,质量各几克?最好能把解题思路写一下 kclo3请写出每个元素的化合价 氯酸钾和二氧化锰混合加热支取氧气的化学式那个加热还有二氧化锰不是要写在等号上面吗? 把干燥的KClO3和MnO2的混合物15.5克装入大试管加热,当反应不再发生时,冷却、称重,得10.7克固体物试计算原混合物中氯酸钾的质量 请标写说明KClO3中各元素的化合价 KCLO3和MnO2的反应化学式 现有KClO3和MnO2混合物共10g,加热至反应结束,剩余固体7.12g,求原有KClO3和MnO2各多少克,还有原混合物中氯酸钾的质量分数 求KClO3中钾元素的化合价 kclO3是什么的化学式 有KCLO3和MnO2的混合物10g,其中MnO2 2g经加热一段时间后冷却,测得剩余固体中MnO2占25%,在把这些固体加热,求还可以制的氧气多少克 答案最后为1. HClO4 KClO3 MgCl2 氯元素的化合价怎么求3个元素在一起的 怎么求呀..郁闷死我了.. KClO3 Kmn2O4是什么的化学式 含二氧化锰的质量分数2%的kclo3、Mno2混合物,加热一段时间测得二氧化锰的质量分数升为3%,求氯酸钾分解率 氯酸钾中氯的化合价是多少 H2O2、O3、SO2、HClO中漂白品红原理与其余三种不同的是 用加热32克的氯酸钾和二氧化锰混合物的方法制取氧气,完全反映后剩余固体总质量为22.4克求制得氧气的质量还有啊,确定原混合物中氯酸钾的质量和二氧化锰的质量(此题追加5分) 求:kclo3,cl2,clo3-,alcl3中cl的化合价, Cl2,ClO2,O3,H2O2中氧化性最强的是咋算的呢?( ⊙o⊙ 245克氯酸钾和3克二氧化锰混合物加热完全反应生成多少克氧气?反应后剩余固体的质量是多少 求化合价:Na2SiO3 Si【】 KMnO4 Mn【】 KclO3 cl【】 HclO4 cl【】 Cl2,O3,H2O2的氧化性比较RT,并且如果要是夹在常见的氧化物里面,如何加进去? 将25克氯酸钾和二氧化锰的混合物加热到不再放出气体时,可得15.4克固体混合物:求:(1)生成多少克氧气 (2)有 氯酸钾分解的化学方程式怎么读? 过氧化钠、过氧化氢、NaClO、HClO、ClO2、SO2、O3、活性炭等物质与漂白粉的漂白原 取氯酸钾(KCLO3)和二氧化锰(MnO2)的混合物31g置于干燥的试管中,加热到质量不再减小为止,冷却后测得剩余固体质量为21.4g.试计算置得氧气多少克? 假设FeSO4按KCLO3的方式分解,反应的化学方程式为假若他分解生成两种氧化物,他的反应方程式为 HCLO氧化性强于HCLO4,怎么讲呢? 在原子团CN-中C显几价 氯酸钾(KCLO3)在二氧化锰催化剂并加热的条件下能较快的分解生成氯化钾和氧气,试写出化学反应方程式要得到8g氧气,需分解氯酸钾多少克? HClO4和HNO3 反应?方程式有不? 原子团的化合价 科学兴趣小组学习了二氧化锰(MnO2)催化分解过氧化氢的实验后,进行如下实验.(一)选择装置并检查气密性.(二)称取0.1克的二氧化锰粉末加入容器中.(三)量取50毫升溶质质量分数 为什么HClO的氧化性比HClO4强 什么叫原子团?什么叫原子团化合价希望大家尽量讲详细一点咯!谢谢拉 只有MnO2才能对过氧化氢的分解起到催化作用吗? 用化学方程式证明KMnO4氧化性比MnO2强 原子团的化合价到底怎么理解.莪不会原子团的化合价那根价是什么啊.. H2O2被FeCl3,CuO,MnO2催化原理并说明哪些物质能做催化剂为什么要化学方程式还有CuSO4 为什么Cr2O7-的氧化性大于SO2能说明 K2Cr2O7能将Na2DO3氧化成Na2SO4? 化合价是什么?怎么计算原子团中某种元素的化合价? MnO2催化H2O2我猜的是MnO2+H2O2=H2MnO4.2H2MnO4=2MnO2↓+2H2O+O2↑纯属猜测...呵呵..我是根据高锰酸不稳定猜的...不对的话请指教下....我想知道的是MnO2催化H2O2分解的机理... 如何证明一个物质的氧化性比另一个的强?如何证明一个物质的氧化性(或还原性)比另一个物质的强?还有在酸性或碱性条件下.(可以举例)还有什么是极性键和非级性键?怎么区分? 加热氯酸钾和二氧化锰的混合物10克,使之完全分解,在一定温度下将残留固体加入20克水中,有3.8克固体未溶.在相同温度下,再加入10克水中,还有2.5克固体未溶,经测定2.5克固体为混合物,则产生 在氧化还原反应中kclo3里面k,cl,的化合价为多少k的化合价为+1,cl的化合价为+5为什么那?cl的化合价不应该是-1么?如(nacl)cl的化合价不固定么?那k的化合价固定么?一般元素化合价固定么?什么样 h2o2用MnO2催化分解是否需要加热? 请帮忙解决一道化学题谢谢啦取mno2和kclo3d固体混合物25克,加热至恒重.在一定温度下,将残留的固体加入12克水中有12克固体未溶解再加入5克水,仍有10克固体未溶解.kcl在不同温度下的溶解度如 KClO3中Cl的化合价是多少,怎么算的, 求得KCLO3的分解率想探究是否只有MnO2能催化KClO3受热分解?CuO、Fe2O3、Cr2O3等对氯酸钾的受热分解有没有催化作用?已知投入氯酸钾为0.6克,投入氧化铜作催化剂,产生气体为67.2ml(已折算为标况) 求 KClO3和MnO2反应KCLO3不用催化剂能不能生成氧气? 求出KClO3中Cl的化合价谢谢了,Cl不是-1价吗 KCLO3的分解百分率是什么意思
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn