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

用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下调试通过。

AMD院士站台 异构计算与OpenCL编程师资培训首站清华开讲 Twitter、Square开创者Jack Dorsey的奇趣人生 利用CSS、JavaScript及Ajax实现图片预加载的三大方法 经典电影里的数学 15亿美元!软银联合GungHo收购手游巨头Supercell Oracle“炮轰”开源:称其永远无法在军事领域取得一席之地 零客户端:下一代计算分布模型 苹果聘奢侈品公司巴宝莉CEO Angela Ahrendts为零售主管 看看你会几个?9大最火的移动开发技能 为了进一步拴住用户:传亚马逊与HTC合作开发智能手机 三年?又三年!今年MDCC2013大不相同! 杨远骋:聚美优品与百度云推送的故事 糗事百科王坚:百度云推送让我们省心 10个最热JavaScript开源框架的社区活跃度对比 2013福布斯中国富豪榜:李彦宏第三、马化腾第五、马云第八 Storm又获东风,Hortonworks计划将其整合到Hadoop企业版 IBM CEO:预测高新技术 五个我最喜欢的方式 我伙呆,硅谷高级工程师年薪16.5万美金起 羡煞旁人的Supercell:Clash of Clans卫冕营收榜冠军 谷歌第三财季利润增36.5% 但摩托罗拉业务继续亏损2.48亿 针对应用开发者的几点建议:注意特征蔓延、加大用户评审…… Ubuntu中文衍生版UbuntuKylin 13.10正式发布 Web设计师和Web开发者之间的区别是什么? 在政府退出后,Google的量子计算机项目面临危机 SQL on Hadoop的最新进展及7项相关技术分享 联想:欲收购黑莓,还能在智能手机领域创造PC神话吗? 谁说Android开发者的收入依然不行? 代码可维护性的神秘面纱 MDCC 2013首批演讲嘉宾名单出炉 议题即将披露 MDCC2013:公开征集讲师和演讲主题 移动周报:IT人必看!9大最火移动开发技能 初学编程!想做个系统来练练手,请高手指点我要怎么做才事半功倍?! 我是新来的,很菜的问题,希望大家帮忙!!!! 请推荐一本COM方面的书。 为什么在VC下有些变量名(类型是自己定义的类或结构)调试时候watch窗口里不能看到他的内容? 关于数据库的问题。 如何从imagelist控件中提出图片显示在image控件上 高分求DOS下串口传送文件的算法! 在vb6中我需要一个这样的按钮,该如何实现? 窗口对象的showModalDialog问题 高分求DOS下串口传送文件的算法! 找asp速查手册 怎样不用MFC能写出用MFC写的属性页的效果啊?(就是用CPropertySheet和CPropertyPage的那种效果) 超超高手请进!万分紧急!100大分奉献! datawindow中column得到焦点后有一个焦点框,设置什么属性把它去掉? brinkster.com的问题:网络自由人 急呀,,为什么windows98,建立了拨号连接,却总是说线路忙。100分!!!!! vc是否适合进行网络编程?烦请指教 网络自由人,谢谢你提醒我要小写,已经给你加20分。。。。 如何设置控件的ImeMode 属性? ?????@@@@@急﹗急! smtp認証的email可執行程序及源碼 老问题没解决 ,新的又来了!!(关于汉字和英文的识别) VC.net中的运行到光标处到那去了???? 关于简单的拨号连接的问题。 我爱你们,热心的朋友!!! 不好!!!win2k密码忘了! 一个关于打印的简单问题?在线等,急? 有对KYLIX熟悉的吗,请发表一些东东撒:) 如何在程序内屏蔽掉Alt+Tab这组系统功能键? 各位节日快乐!!! 请各位搞VxWorks 的高手指导一下菜鸟!一定进来看看!谢谢! C/s结构,从一个c端发一些数据(如报表等)到另一个c端,接收到后最好能返回一个成功消息,有什么好的方案么 我受不了,救命啊 如何使得树形控件中的一个没有子项目的目录前面显示为减号或不显示'+'和'-'? 如何实现将页面的内容导入到word中?在线等,急! 怎么回事?主机名可以CONNECT到SQL服务器,用IP地址不行了 打印的问题!!!! pb8与win2000server 小小问题?如何得到窗体右上角关闭,最大化,最小化的句柄??? 多少分才能有两绿三角?多少分才能有一个红星? 哪位同志知道网站的风格像 win xp? 请问哪里可以下载xml spy的中文帮助文件? 请教如何将.cab包解开 50分﹕HELP!!!為什么我的report分發后﹐項目全錯位了﹐應如何解決﹖ 各位,在工程中怎样用资源文件(*.res) !!请问如何利用ADO做三层设计? 哪位大哥有vfw.pas的啊?60分相赠 ATL在中国的现状怎样,大家进来说说!!! 如何黑一个网吧~~~ 急:问个初级问题,希望能得到解决 这个论坛不错! 能不能让C盘只读不写啊? 化学法与生物法处理污水的哪个效率高 已知道路路宽20米,如何选择LED路灯的高度,间距,功率?采用双侧布灯我之前也从网上看了一些这方面的内容,在计算照度的时候没有涉及到路灯的高度,是不是照度跟路灯的高度没有关系,还有道 张方桌有一个桌面和四条腿组成,1立方米木料可制做桌面50张或桌腿300条,现在有5立方米的木料,问用多少木木料制作桌腿,正好配成方桌多少张 鹤壁天气 2011.2.9---2011.2.15 温度和风的情况 一辆汽车后轮胎直径是0.8米,如果车轮每分钟转动100圈,这辆汽车每分钟行多少千米? 10kv母线桥箱内母线安全距离我在画10kv配电室的平面图,想知道10kv母线桥箱内的母线各相之间的最小安全距离是多少?两侧母线与桥箱外壳之间的最小安全距离是多少?是不是根据这些距离再加 天气预报的新内容中,表示人对气温、湿度和风的综合感受的是() 画圈圈的那题, 一张方桌由1个桌面和四条腿组成,1立方米木料可制做桌面50张或桌腿300条,现在有10立方米的木料,问用多少木木料制作桌面,多少木料制作桌腿,正好配成方桌多少张.(用二元一次式方程解 电压互感器变比:10KV/100V/220V,精度220V/30.级.100V/0.5级 二次输出容量 220V/500VA、100V/80VA 配什么 高负荷生物滤池 每日产生的污泥量怎么计算 10kV母线间隙10KA母线之间的最小距离,人与10KV带电体之间的最小距离 今年什么时候立春 生物滤池¾¾普通生物滤池、高负荷生物滤池、塔式生物滤池等; 生物接触氧化法; 高压开关柜小母线的字母各是什么 今年什么时候打春 曝气生物滤池是什么,需要哪些设备组成? 观察水的沸腾现象时会发现,水沸腾时烧杯的底部产生大量的气泡,气泡往上升时体积_______,到达水面时_____发出响声,同时气泡里的______散发到空气中. 一辆汽车的轮胎直径是0.8,如果车轮每分钟转500圈,四分钟后,汽车前进了多少米? 什么是带半功率LED路灯?原文是这样的:80瓦的LED路灯 24V 直流供电,带半功率的 如何在总配电安装多个一级防雷器在不同的空气开关上在总刀闸开关处分出四路并联线路,每个线路分别有一个空气开关,怎么在各个空气开关后端分别安装防雷器,通流容量需要多少KA? 谈谈你对唐诗的认识? 表示心里非常害怕的重叠成语要4个 初一数学有一道题:一张桌子由桌面和四条腿组成,1立方米木材可以制作桌面50张或制作桌腿300条,现有5立方米木材,问应如何分配木材使桌面和桌腿配套?共能配成多少张桌子? 爱国诗人陆游在示儿中表达自己临终前遗憾的诗句是 有没有搞笑点的篡改过的诗句? 谁知道表示害怕的成语急用 理解词语意思的几种方法 帮我评价一下,那里要改的.诗歌来的!我的童年 我的梦 童年是一个甜蜜而令人好奇的梦,青春是一副散发着神秘色彩的画!青草丛中玩耍的记忆,一次次跌倒而爬起来的记忆,都深深的记在我的脑 什么是半功率LED路灯?原文是这样的:80瓦的LED路灯:24V 直流供电,带半功率的这又怎解呢? 在ArcGIS中,如何确定调查区域内各个点的中心点坐标? 有什么地方帮我改一下,锹甲铭天下兮黑道,洪波兮涌起.拜天兮为父,跪地兮作母.五行兮不攻,阴阳兮不入.世人兮鄙吾,深藏兮不露.不鸣兮则已 ,一鸣兮惊人.别人的词? 怎么确定led路灯功率?确定某个路段该使用的LED路灯的功率有没有什么公式,或是有没有国家道路照明标准来规定路灯该使用的功率?想知道在城市道路的LED路灯功率和乡村支路的LED路灯功率该 什么词语的意思是:用讲道理的方式使别人明白的同步上的, 曝气生物滤池用什么曝气设备? 成都市哪个污水厂采用曝气生物滤池?能否提供一份曝气生物滤池的具体设计计算? arcgis 修改区域边界问题~ 这条河道选中后是一个整体,但是我想在石灰港几个字附近拉一条横线把河道一分为二,上半部分和下半部分颜色弄成不一样的,超级新手求教,最好说详细一点~对你们 曝气生物滤池的曝气问题大家有没有经历过这种问题,就是曝气生物滤池(从上进水,从下出水)不同高度的曝气都积累在下面,导致水排不出去.怎么解决呢?是罐子的BAF,填料填的太高导致的. 吉林省十一月份气温 根据意思写词语:对一种事物的理解方式. 曝气生物滤池为什么会有硝化反应啊? 2010年几点几时立春 arcgis中导入x,y数据后怎么修改原点坐标用三维激光扫描仪扫描完土壤坡面后,在arcgis中导入x,y,Z,数据,想把坐标原点(0,0)修改为被扫描坡面左下角的第一个点,而非由仪器定义的原点,且把其余 关于曝气生物滤池的问题我遇到一个工程只有一组曝气生物滤池,就打不到脱氮的效果...我想请问各位,这个工艺应该如何调整一下达到脱氮的效果呢?比如说在这组曝气生物滤池的前或后 2010年几点结束打春 废水生物处理的基本方法有哪些? 痛觉和触觉有什么不同 2010年2月4号立春 几点打春 解释词语意思的基本方法有:通过什么理解词语;借助近义词或什么理解词语;结合什么 触觉和痛觉有什么区别 计算功率 有功功率 无功功率 计算电流 视在功率 的关系计算负荷 有功功率 无功功率 计算电流 视在功率 额定功率 的关系 主要是计算负荷 和后面这些的关系弄不明白 还有断路器长延时 瞬 生物处理污水技术有哪些?从哪些角度分类可分为哪些技术.最好用在用英文代表技术的同时也用中文注释.谢谢 蟋蟀的鸣叫频率是否与气温和湿度有关 我们缺少牛奶和水用英语怎么说? 根据意思写词语:不需要说明就可以理解 与蟋蟀的鸣叫频率关系最密切的天气要素是什么 填成语 表示远远看着就很害怕 生物法处理废水中 蟋蟀的鸣叫频率与天气变化请列出3个假设:1.___________________________________________________________2.___________________________________________________________3.___________________________________________________________设计观 喝大量牛奶的英文意思
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘