分享
 
 
 

用程序实现自动拨号

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

无标题文档

用程序实现自动拨号

屠恩海(SunHai)

开发工具:Microsoft Visual Studio .NET 2003

操作系统:Windows XP

在编写网络程序时很可能用到自动拨号。比如,邮件群发软件用自动断线和拨号实现本机IP地址的更换。

要实现自动拨号,分两步:

从注册表读取本机拨号链接名称;

自动拨号。

调用API函数从注册表读取本机拨号链接名

以前,我调用API函数从注册表中读取本机拨号链接名称。

在Module中用如下代码:

Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Integer, ByVal lpSubKey As String, ByRef phkResult As Integer) As Integer

Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Integer) As Integer

Private Declare Function RegEnumKey Lib "advapi32.dll" Alias "RegEnumKeyA" (ByVal hKey As Integer, ByVal dwIndex As Integer, ByVal lpName As String, ByVal cbName As Integer) As Integer

Const HKEY_CURRENT_USER As Integer = &H80000001

Const ERROR_NO_MORE_ITEMS As Short = 259

Const ERROR_SUCCESS As Short = 0

Dim hKey As Integer

Dim i As Integer

Dim astr As String = New String("", 256)

If RegOpenKey(HKEY_CURRENT_USER, "RemoteAccess\Profile", hKey) = ERROR_SUCCESS Then

While RegEnumKey(hKey, i, astr, 256) = ERROR_SUCCESS

MsgBox(astr)'链接名称

i += 1

End While

RegCloseKey(hKey)

End If

用RegistryKey 类读取链接名

RegistryKey 类表示 Windows 注册表中的项级节点。此类是注册表封装。

本文主要用到:

RegistryKey.OpenSubKey 方法:用指定的写访问权限检索指定的子项。

以只读方式检索子项。

[Visual Basic] Overloads Public Function OpenSubKey(String) As RegistryKey

RegistryKey.GetSubKeyNames 方法: 检索包含所有子项名称的字符串数组。

Public Function GetSubKeyNames() As String ()

用RegistryKey读取链接名可以说是非常简单:

Dim rk As RegistryKey = _

Registry.CurrentUser.OpenSubKey("RemoteAccess\Profile", True)

' Get the data from a specified item in the key.

Dim s As String() = rk.GetSubKeyNames()

For num As Integer = 0 To s.Length - 1

MsgBox(s.GetValue(num))'这就是链接名

Next

用Shell实现自动拨号

读取链接名后,自动拨号就非常简单了。

打开“控制面板”,“网络连接”,连接“属性”,“选项”,去掉“提示名称、密码和证书等(P)”前面的对勾。

shell("rasphone.exe -d" & linksName, AppWinStyle.Hide, True, -1)

启动“命令提示符”,键入 rasphone,回车,就弹出“拨号网络对话框”。

如果键入rasphone -h,回车,弹出“拨号网络命令行”,列出rasphone的用法,比如,

rasphone -d表示弹出弹号项目对话框。

rasphone -lx 在拨号快捷方式上执行命令'x'

Shell函数说明:

AppWinStyle.Hide是sheell的参数,表示隐藏窗口并将焦点传到该窗口。

True表示等待拨号完成。

-1表示Shell直到程序完成才返回。

也可以这样:

shell("rasdial.exe " & linksName, AppWinStyle.Hide, True, -1)

关于各种命令参数,在OS的“帮助和支持”搜索“命令行”即可查到有关说明。命令行结合Shell函数可实现极多功能,你可试一试。

Shell 函数使用说明:

Public Function Shell ( _ ByVal Pathname As String, _

Optional ByVal Style As AppWinStyle = AppWinStyle.MinimizedFocus, _

Optional ByVal Wait As Boolean = False, _

Optional ByVal Timeout As Integer = -1 _

) As Integer

Shell 函数的返回值取决于 Pathname 中指定的程序在 Shell 返回时是否仍在执行。如果将 Wait 设置为 True 并且程序在超时过期前结束, Shell 返回零。如果超时过期或者省略 Wait 或将它设置为 False ,则 Shell 返回程序的进程 ID。进程 ID 是标识正在运行的程序的唯一数字。

如果 Shell 函数无法启动指定的程序,则出现 System.IO.FileNotFoundException 错误。例如,当试图从使用 System.Windows.Forms 的应用程序运行 16 位程序(如 command.com )时,可能会发生这种情况。解决办法是运行将调用所需的 16 位程序的 32 位程序。如果是 command.com ,则可以将运行 cmd.exe 作为另一种选择。

默认情况下, Shell 函数异步运行程序。这意味着用 Shell 函数启动的程序在 Shell 函数后面的语句执行前可能没有结束执行。如果想等待程序结束后再继续,请将 Wait 设置为 True 。

整个路径和文件规范应该始终用引号引起来,如以下示例所示:

ID = Shell ("""C:\Program Files\MyFile.exe"" -a -q", , True, 100000)

字符串内每对相邻的双引号 ( "" ) 被解释为字符串中的一个双引号字符。因此,前面的示例表示 Shell 函数的下列字符串:

"C:\Program Files\MyFile.exe" -a -q

如果路径没有用引号引起来,Windows 就会在 C:\ 目录中查找名为 Program.exe 的文件,而不是在 C:\Program Files 目录中查找 MyFile.exe 文件。

安全说明 如果路径和文件规范没有用引号引起来,那么当文件名或路径节点包含空格时,就会出现安全风险。在上面的示例中,路径节点 \Program Files 包含一个空格。如果规范不在引号中,并且名为 Program.exe 的程序(例如通过非法的破坏)安装在 C:\ 中,Windows 就会执行 Program.exe 程序而不是 MyFile.exe 。

2004年5月7日

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有