在 控制面板-- 网络连接 中新建一个拨号,怎样建立这个拨号的快捷方式呢? 网络连接 的文件是 ncpa.cpl ,但新建的拨号应该是没有文件的。
所以我使用 IShellLink 就提供不了文件名的。
所以我使用 IShellLink 就提供不了文件名的。
解决方案 »
- 这样的控件如何实现
- 加载自定义鼠标的问题~
- 不显示删除回复显示所有回复显示星级回复显示得分回复 设计一个虚拟打印机程序,急…… 我没头绪 希望高手指点……
- smtp服务器返回错误530怎么解决
- 一个困惑的TCP问题,可能很简!单求答案。谢谢!!!!!
- 在对话框中贴上属性页后程序不响应,用SPY检查好像消息WM_GETDLGCODE出现死循环,如何解决,求助!
- 请问如何去掉htmlview的滚动条?
- 请大家讨论一下:如何让vc程序效率最高。进者有分!
- 这么简单的问题,我搞不懂
- CString.Format(??????????????????)
- 请大家指点指点小弟啊~~~
- 程序启动窗口客户区不显示的问题
功能: 显示“建立快捷方式”的对话框,所建立的快捷方式的位置由%1参数决定。
Monday, March 3 2003 12:29 PM
关于如何创建快捷方式,很多资料都已经说明了。可是快捷方式不仅仅只有文件快捷方式这一种,还有很多其他种类。如果我们在网络和拨号连接中创建了一个拨号连接,按下右键,选择创建快捷方式,如果在桌面的这个快捷方式上按下右键,此时出现的菜单明显和普通的不一样,并且它的属性也是不一样的。如果在程序中创建这种快捷方式呢?网上的资料很少,经过搜索,在微软的站点http://support.microsoft.com/default.aspx?scid=KB;en-us;q153750上找到了一个例子DialUp.exe,大家可以下载看看。以下我说说我在实现中的一些经验体会。(WIN2000下调试)1. MSDN中的Shell Links有说明:关于如何创建非文件对象的快捷方式,例如打印机等。
mk:@MSITStore:H:\msdn\MSDN\Shellcc.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下调试这个示例程序一些经验体会,请大家参考。
RasSetEntryProperties用来设置拨号连接的属性DWORD RasSetEntryProperties(
LPCTSTR lpszPhonebook, // pointer to full path and filename of
// phone-book file
LPCTSTR lpszEntry, // pointer to an entry name
LPRASENTRY lpRasEntry, // buffer that contains entry information
DWORD dwEntryInfoSize, // size, in bytes, of the lpRasEntry
// buffer
LPBYTE lpbDeviceInfo, // buffer that contains device-specific
// configuration information
DWORD dwDeviceInfoSize // size, in bytes, of the lpbDeviceInfo
// buffer
);