Shell外壳编程,执行桌面图标右键菜单

资源介绍:

1、调用SHGetDesktopFolder函数获得桌面文件夹的IShellFolder接口

2、调用所获得的IShellFolder接口的EnumObjects成员函数列举所有桌面文件与快捷方式。

3、调用IShellFolder的BindToObject成员函数获得子文件夹的IShellFolder接口。

4、调用IID_IShellLink接口获取快捷方式指向文件路径。

5、调用FolderItem获取桌面图标右键菜单列表。

资源作者:

三叶资源网

资源界面:

.版本 2 .支持库 iext .支持库 EThread .支持库 spec .程序集 窗口程序集_启动窗口 .程序集变量 hImageList, 整数型 .程序集变量 hMenu, 整数型 .程序集变量 LnkName, 文本型 .程序集变量 许可证, 整数型 .程序集变量 vShell, 对象 .程序集变量 vFolder, 对象 .程序集变量 items, 快捷方式列表, , "0" .程序集变量 hThreadArray, , , "0" .子程序 _按钮1_被单击 ' 1、调用SHGetDesktopFolder函数获得桌面文件夹的IShellFolder接口 ' 2、调用所获得的IShellFolder接口的EnumObjects成员函数列举所有桌面文件与快捷方式。 ' 3、调用IShellFolder的BindToObject成员函数获得子文件夹的IShellFolder接口。 ' 4、调用IID_IShellLink接口获取快捷方式指向文件路径。 ' 5、调用FolderItem获取桌面图标右键菜单列表。 .子程序 _超级列表框1_鼠标右键被按下, 逻辑型 .参数 横向位置, 整数型 .参数 纵向位置, 整数型 .参数 功能键状态, 整数型 .局部变量 title, 文本型 .局部变量 i, 整数型 .局部变量 MenuName, 文本型 .局部变量 pt, POINTAPI .局部变量 MenuId title = 超级列表框1.取标题 (超级列表框1.现行选中项, ) .如果真 (title = “”) 返回 () .如果真结束 ' 枚举快捷方式菜单 (title) hMenu = CreatePopupMenu () GetCursorPos (pt) .计次循环首 (取数组成员数 (items), i) .如果真 (items [i].快捷方式名 = title) MenuName = items [i].菜单名 AppendMenuA (hMenu, #MF_STRING, i, MenuName) .如果真结束 ' 本源码来自三叶资源网(www.sanye.cx) .计次循环尾 () MenuId = TrackPopupMenuEx (hMenu, 位或 (#TPM_LEFTALIGN, #TPM_RETURNCMD, #TPM_RIGHTBUTTON), pt.x, pt.y, 取窗口句柄 (), 0) .如果真 (MenuId > 0) items [MenuId].项目对象.数值方法 (“DoIt”, ) .如果真结束 ' 调试输出 (MenuId, items [MenuId].快捷方式名, items [MenuId].菜单名) .子程序 枚举快捷方式菜单 .参数 lnk名称, 文本型 .局部变量 vFolderItem, 对象 .局部变量 vItemVerbs, 对象 .局部变量 nCount .局部变量 index, 整数型 .局部变量 Item, 对象 .局部变量 name, 文本型 .局部变量 list, 快捷方式列表 CoInitialize (0) vFolderItem = vFolder.对象型方法 (“ParseName”, lnk名称) .如果真 (vFolderItem.是否为空 () = 假) ' vFolderItem.查看 () vItemVerbs = vFolderItem.对象型方法 (“Verbs”, ) ' vItemVerbs.查看 () nCount = vItemVerbs.读数值属性 (“Count”, ) 进入许可区 (许可证) 标签1.标题 = “读取桌面图标菜单中....” .变量循环首 (0, nCount - 1, 1, index) Item = vItemVerbs.对象型方法 (“Item”, index) ' Item.查看 () name = Item.读文本属性 (“Name”, ) list.快捷方式名 = lnk名称 list.菜单名 = name list.项目对象 = Item 加入成员 (items, list) ' 调试输出 (name) .' 如果真 (name = “属性(&R)”) ' Item.数值方法 (“DoIt”, ) .如果真结束 .变量循环尾 () 进度条1.位置 = 进度条1.位置 + 1 CoUninitialize () .如果真结束 退出许可区 (许可证) .子程序 __启动窗口_首次激活 .局部变量 count .局部变量 name, 文本型, , "0" .局部变量 index .局部变量 i .局部变量 path, 文本型 .局部变量 文件信息, SHFILEINFO .局部变量 hThread .局部变量 nCount, 整数型 .局部变量 hresult, 整数型 许可证 = 创建进入许可证 () CoInitialize (0) vShell.创建 (“Shell.Application”, ) vFolder = vShell.对象型方法 (“NameSpace”, 系统_取桌面路径 ()) ImageList_Destroy (hImageList) ' 创建图标句柄 hImageList = ImageList_Create (32, 32, 24, 0, 0) ' 定义每张图片大小为16*16的图片组,色彩为24位真彩色 超级列表框1.发送信息 (4099, 1, hImageList) ' 为超级列表框设置图片组 ImageList_SetBkColor (hImageList, 超级列表框1.背景颜色) ' 图标颜色 count = 系统_枚举桌面快捷方式 (name) 进度条1.最大位置 = count .计次循环首 (count, i) path = 系统_取快捷方式指向 (name [i]) path = 选择 (取文本长度 (path) = 0, 系统_取桌面路径 () + “\” + name [i], path) ' 本源码来自三叶资源网(www.sanye.cx) SHGetFileInfo (path, 128, 文件信息, 348, 258) ' SHGFI_ICON + SHGFI_SMALLICON=257(表示小图标) index = 超级列表框1.插入表项 (, , ImageList_AddIcon (hImageList, 文件信息.hIcon), , , ) DestroyIcon (文件信息.hIcon) 超级列表框1.置标题 (index, 0, name [i]) LnkName = name [i] 启动线程 (&枚举快捷方式菜单, 取变量数据地址 (LnkName), hThread) 加入成员 (hThreadArray, hThread) .计次循环尾 () .子程序 __启动窗口_将被销毁 删除进入许可证 (许可证) .子程序 __启动窗口_创建完毕 .局部变量 nCount, 整数型 .局部变量 hresult, 整数型 nCount = 取数组成员数 (hThreadArray) 调试输出 (nCount, hThreadArray) .判断循环首 (nCount > 0) hresult = WaitForMultipleObjects (nCount, hThreadArray, 假, #INFINITE) .判断开始 (hresult = #WAIT_TIMEOUT) .判断 (hresult = #WAIT_OBJECT_0) 跳出循环 () .默认 .判断结束 .判断循环尾 () 进度条1.位置 = nCount

资源下载:

相关文件下载地址
©下载资源版权归作者所有;本站所有资源均来源于网络,仅供学习使用,请支持正版!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注