拨号连接的快捷方式

ZDNet软件频道 时间:2003-03-03 作者:盛放 |  我要评论()
本文关键词:shengfang
关于如何创建快捷方式,很多资料都已经说明了。可是快捷方式不仅仅只有文件快捷方式这一种,还有很多其他种类。

关于如何创建快捷方式,很多资料都已经说明了。可是快捷方式不仅仅只有文件快捷方式这一种,还有很多其他种类。

如果我们在网络和拨号连接中创建了一个拨号连接,按下右键,选择创建快捷方式,如果在桌面的这个快捷方式上按下右键,此时出现的菜单明显和普通的不一样,并且它的属性也是不一样的。

如果在程序中创建这种快捷方式呢?网上的资料很少,经过搜索,在微软的站点

http://support.microsoft.com/default.aspx?scid=KB;en-us;q153750上找到了一个例子DialUp.exe,大家可以下载看看。

以下我说说我在实现中的一些经验体会。(WIN2000下调试)

1. MSDN中的Shell Links有说明:关于如何创建非文件对象的快捷方式,例如打印机等。
mk:@MSITStore:H:msdnMSDNShellcc.chm::/inet401/help/itt/Shell/Shortcut.htm

必须获得该对象的IDL,然后调用IShellLink::SetIDList后完成。

2.自己创建的拨号连接,我们没有办法直接获得它的IDL,必须先打开拨号和网络连接,然后枚举里面的连接,当比较连接的名称一致的时候,我们再获得该连接的IDL。代码中的GetDialUpItem 函数就是实现这个功能。然后再SetIDList正常的创建快捷方式就可以了。

3.GetDialUpItem 函数中调用了一个GetDialUpNetworkingPidl函数,该函数用来获得“网络和拨号连接”的IDL,在这里“网络和拨号连接”是通过一串GUID数字表示的的,代码里面是WIN98的GUID,WIN2000下大家可以通过点击开始按钮-附件-通讯-网络和拨号连接,然后按下右键查看属性就可以看到目标对应的一串数字了,用这串数字替代原有的才能正常访问WIN2000下的拨号连接。

4.作为COM编程,应该调用CoInitialize(NULL);函数进行初始化,而代码中放在了调用GetDialUpItem 函数之后,结果会导致程序失败,应该将其放在GetDialUpItem函数之前。

5.调用代码中的函数完成创建快捷方式后,会发生程序无法正常退出的情况,这时对话框已经关闭了,但是在任务管理器中仍然可以看到该进程。需要在程序最后调用CoUninitialize函数关闭COM接口以及释放加载的DLL。

以上是本人在WIN2000下调试这个示例程序一些经验体会,请大家参考。



责任编辑:炒饭

欢迎评论或投稿


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134