2023年11月27日发(作者:)

使用易语言快速开发IP修改工具

冯立彬

阳光学院教务处,福州350100

IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配

一个逻辑地址,以此来屏蔽物理地址的差异。随着科技的发展、人类的进步、电脑的普及率日益提高,

电脑彻底改变了人们的工作与思考形态,无论现在的个人家庭还是用人单位,电脑几乎是人手一台,

但随之而来的问题也会出现,比如,有时由于设置不当会出现IP地址冲突情况,直接导致被提示IP

址冲突的计算。

关键词易语言;IP修改;API接口

易语言是一门以中文作为程序代码编程语言

著称创始人为吴涛作为中国人自己的语

易语言方便中国人用自己的思维去编写程序

大大降低了中国人对编程门槛利用易语言来开

IP修改小工具达到生活中电脑用户因为IP冲突而

不能联网的烦恼以及方便电脑初学者能快速修改本

IP遥

RegQueryValueExA整数型取注册表项

库文件名

DLl命令名返回值类型公开备注

2取注册表项命令

在库中对应命令名

RegQueryValueExA

参数名类型传地数组备注

lpValueName文本型

lpReserved整数型

lpType整数型

lpData字节集

hKey整数型

整数型lpcbData

1原理分析

注册表在Windows操作系统中有着至关重要的作

先通过API遍历注册表内读取网卡的信息再通过

API对注册表进行修改从而达到修改的目的

2编写过程

通过DLLAPI接口对注册表项进行操作

打开注册表项DLL命令如表1所示

1打开注册表项命令

公开备注DLl命令名返回值类型

打开注册表项RegOpenKeyExA整数型

写注册表DLL命令如表3所示

3写注册表项命令

RegSetValueExA整数型写注册表项

库文件名

DLl命令名返回值类型公开备注

库文件名

在库中对应命令名

在库中对应命令名

RegOpenKeyExA

参数名类型传地数组备注

hKey整数型

文本型lpSubKey

整数型ulOptions

整数型samDesired

整数型phkResult

RegSetValueExA

参数名类型传地数组备注

lpValueName文本型

Reserved整数型

dwType整数型

cbData整数型

lpData字节集

hKey整数型

作者简介:冯立彬渊1990-冤袁初级职称研究方

计算机网络

2021.3

取注册表DLL命令如表2所示

3

关闭注册表项DLL命令如表4所示

4关闭注册表项命令

RegCloseKey整数型关闭注册项

DLl命令名返回值类型公开备注

库文件名

在库中对应命令名

RegCloseKey

参数名类型传地数组备注

hKey整数型

运用RegOpenKeyExA袁RegQueryValueExA袁RegCl-

oseKey3DLL建立子程序对注册表项进行读取代码

-关闭注册表将该信息用于程序调用如表5所示

API_读注册表打开注册表-读取注册表

5API_读注册表定义

子程序名返回值类型公开易包备注

API_读注册表文本型

参数名类型参数可空数组备注

读取位置文本型

读取项目文本型

变量名类型静态数组备注

句柄

类型

数据字节集

长度

文本文本型

RegOpenKeyExA(-2147483646,读取位置,0,1,

句柄)'打开注册表

.如果真(句柄0)'判断时候打开

数据到字节集(取空白文本(255))

RegQueryValueExA(句柄,读取项目,0,类型,数据,

长度)'读注册表信息

RegQueryValueExA(句柄,读取项目,0,类型,数据,

长度)

数据子字节集替换(数据,{0},{13,10},,)

文本取文本左边(到文本(数据),长度)

RegCloseKey(句柄)'关闭注册表

.如果真结束

返回(文本)

运用RegOpenKeyExA袁RegSetValueExA袁RegClose

Key3DLL建立子程序对注册表项进行写入代码

API_写注册表打开注册表-写入注册表

4

2021.3

-关闭注册表将该信息用于程序调用如表6所示

6API_写注册表定义

子程序名返回值类型公开易包备注

API_写注册表文本型

参数名类型参数可空数组备注

写入位置文本型

写入项目文本型

写入内容文本型

变量名类型静态数组备注

临时字节集

句柄

数据文本型

RegOpenKeyExA(-2147483646,写入位置,0,2,

句柄)'打开注册表

.如果真(句柄0)

临时子字节集替换(到字节集(写入内容),{13,10

},{0},,)'写入内容转换为字节集并替换

RegSetValueExA(句柄,写入项目,0,7,临时{0,

0},取文本长度(写入内容))'写入注册表

RegCloseKey(句柄)'关闭注册表

通过注册表内网卡的固定位址获取到网卡所有信

如表7所示

7取网卡信息定义

子程序名返回值类型公开易包备注

取网卡信息

变量名类型静态数组备注

ID整数型

注册地址文本型3

网卡信息详细参数

注册地址[1]野SYSTEMCurrentControlSetCon鄄

trolClass{4D36E972-E325-11CE-BFC

1-08002bE10318}冶

[2]野SYSTEMCurrentControlSetCon鄄

trolNetwork{4D36E972-E325-11CE-BFC

1-08002BE10318}冶

[3]野SYSTEMCurrentControlSetSer鄄

vicesTcpipParametersInterfaces冶

清除数组(网卡参数)

网卡选择框.清空()

ID0

.判断循环首(注册项是否存在(4,注册地址[1]Server冶,)

取重复文本(4取文本长度(到文本(ID)),野0冶)到文网卡信息.跃点数值API_读注册表(注册

(ID)野LinkageUpperBind冶))地址[3]网卡信息.适配器名,野DefaultGatewayMet鄄

.如果真(取文本注册项(4,注册地址[1]取重复文ric冶)

(4取文本长度(到文本(ID)),野0冶)到文本(ID)网卡信息.网卡状态通过DHCP指派

野NdiInterfacesLowerRange冶,)野ethernet冶).如果真结束

网卡信息.网卡名称取文本注册项(4,注册地址处理事件()

[1]取重复文本(4取文本长度(到文本(ID)),野0冶)

到文本(ID)野DriverDesc冶,)加入成员(网卡参数,网卡信息)

网卡信息.适配器名取文本注册项(4,注册地址

[1]取重复文本(4取文本长度(到文本(ID)),野0冶).如果真结束

到文本(ID)野NetCfgInstanceId冶,)

网卡信息.适配器ID取文本注册项(4,注册地

[1]取重复文本(4取文本长度(到文本(ID)),

野0冶)到文本(ID)野MatchingDeviceId冶,)

.如果真(网卡是否存在(网卡信息.适配器名)).如果真结束

网卡信息.本地连接取文本注册项(4,注册地址网卡选择框.现行选中项0

[2]网卡信息.适配器名野ConnectionName冶,)

网卡信息.物理地址取物理地址(网卡信息.网卡名称)

.如果真(取数值注册项(4,注册地址[3]

卡信息.适配器名野EnableDHCP冶,)0)

网卡信息.网卡地址API_读注册表(注册

地址[3]网卡信息.适配器名,野IPAddress冶)

网卡信息.子网掩码API_读注册表(注册

地址[3]网卡信息.适配器名,野SubnetMask冶)

网卡信息.默认网关API_读注册表(注册

地址[3]网卡信息.适配器名,野DefaultGateway冶)

网卡信息.DNS地址API_读注册表(4,

注册地址[3]网卡信息.适配器名野NameServer冶,)

网卡信息.跃点数值API_读注册表(注册

地址[3]网卡信息.适配器名,野DefaultGatewayMet鄄

ric冶)

网卡信息.网卡状态手动配置

.如果真结束

.如果真(取数值注册项(4,注册地址[3]

卡信息.适配器名野EnableDHCP冶,)1)

网卡信息.网卡地址取文本注册项(4,注册地

[3]网卡信息.适配器名野DhcpIPAddress冶,)

网卡信息.子网掩码取文本注册项(4,

册地址[3]网卡信息.适配器名野DhcpSubnet鄄

Mask冶,)

网卡信息.默认网关API_读注册表(注册

地址[3]网卡信息.适配器名,野DhcpDefaultGate鄄

way冶)

网卡信息.DNS地址API_读注册表(4,

注册地址[3]网卡信息.适配器名野DhcpName鄄

网卡选择框.加入项目(网卡信息.网卡名称,)

.如果真结束

IDID1

.判断循环尾()

.如果真(网卡选择框.取项目数()0)

网卡选择框.加入项目(野未发现网卡信息冶,)

处理事件()

将要修改的网卡参数信息写入到注册表项内如表

8所示

8写入参数信息定义

子程序名返回值类型公开易包备注

写入参数信息

变量名类型静态数组备注

临时地址文本型

临时掩码文本型

临时网关文本型

临时DNS文本型

I整数型

连续赋值(野冶,临时地址,临时掩码,临时网关,临时

跃点,临时DNS)

全局变量参数()

处理事件()

.计次循环首(取数组成员数(网卡地址),i)

临时地址临时地址网卡地址[i].参数一#

行符

临时掩码临时掩码网卡地址[i].参数二#

行符

.计次循环尾()

处理事件()

.计次循环首(取数组成员数(默认网关),i)

临时网关临时网关默认网关[i].参数一#

行符

(下转第10)

2021.3

5

的指令和数据的存储器管理单元32位或36位地址并对处理器选型给予论证可以对高性能处理系统的设

线64位数据线整型数据类型有8尧1632计提供一定的帮助

浮点数据类型有64128功耗和热管理单元

能监视可以帮助调试系统设计提高软件效率测试

接口盘软件与应用,2013,渊12冤院73-74.

该系列处理器有在线系统测试和调试特性JTAG

能力JTAG接口可以通过相应的硬件工具来测试

参考文献

[1]沈华.PowerPC处理器的发展历程[J].计算机光

[2]FreescaleSemiconductorInc.P2020QorIQIntegrated

ProcessorReferenceManual[EB/OL].USA院www.

,2011.

4结语

从机载计算机的高可靠性高实时性以及高性能的

特点出发分析先进的计算机的体系结构应该是一种实

时的容错的并行的体系结构同时分别对机载计算

机的实时系统容错系统和并行系统作了详细的论述

(上接第5)

临时跃点临时跃点默认网关[i].参数二#

行符

.计次循环尾()

处理事件()

.计次循环首(取数组成员数(DNS地址),i)

临时DNS临时DNSDNS地址[i]野,冶

.计次循环尾()

处理事件()

临时DNS取文本左边(临时DNS,取文本长度(临时

DNS)1)

处理事件()

.如果(临时地址野冶)

API_写注册表(4,注册地址[3]网卡参数[网卡索

].适配器名野EnableDHCP冶,1)

API_写注册表(4,注册地址[3]网卡参数[网卡索

].适配器名野NameServer冶,野冶)

.否则

API_写注册表(4,注册地址[3]网卡参数[网卡索

].适配器名野EnableDHCP冶,0)

API_写注册表(注册地址[3]网卡参数[网卡索引].

适配器名,野IPAddress冶,临时地址)

API_写注册表(注册地址[3]网卡参数[网卡索引].

适配器名,野SubnetMask冶,临时掩码)

.如果结束

.如果(临时网关野冶)

删除注册项(4,注册地址[3]网卡参数[网卡索引].

适配器名野DefaultGateway冶)

[3]FreescaleSemiconductorInc.MPC8641DIntegrated

USA院,2008.

HostProcessorFamilyReferenceManual[EB/OL].

删除注册项(4,注册地址[3]网卡参数[网卡索引].

适配器名野DefaultGatewayMetric冶)

.否则

API_写注册表(注册地址[3]网卡参数[网卡索引].

适配器名,野DefaultGateway冶,临时网关)

API_写注册表(注册地址[3]网卡参数[网卡索引].

适配器名,野DefaultGatewayMetric冶,临时跃点)

.如果结束

API_写注册表(4,注册地址[3]网卡参数[网卡索引].

适配器名野NameServer冶,临时DNS)

3结语

借助互联网的高速发展越来越多像IP修改这样

的小工具出现在大家视野中各种各样的小工具将复杂

的电脑操作化为简单的操作表现得淋漓尽致潜移默

化地影响着人们的生产和生活

参考文献

[1]易语言教材编委会.易语言编程系统[M].西安

西安地图出版社,2005.

[2]王军,何烈胜.汉语编程工具易语言即学即用教程

,2003.

[M].北京中国宇航出版社,北京希望电子出版

[3]冉林仓.WindowsAPI编程[M].北京清华大学

出版社,北京希望电子出版社,2005.

10

2021.3