ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 129707|回复: 244

[分享]细说shell函数——不得不看!

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2007-2-5 10:52 | 显示全部楼层 |阅读模式
本帖已被收录到知识树中,索引项:VBA函数

这篇帖子也许有点长,但是绝对值得一看。

shell 是啥?它既不是工作表函数,也不是api函数,更不是壳牌石油。它是vba自带的函数。
但是它却神通广大,能抵n个api函数,api是应用程序接口,shell就是应用程序和系统之间的桥梁。
它的用法很简单,就是执行一个可执行文件。与开始菜单的运行功能一样。
Shell(pathname[,windowstyle])
pathname 是要执行的程序名,可能还包括目录或文件夹
Windowstyle 表示在程序运行时窗口的样式
具体的说明,请查看vba的帮助。

#基本用法
Shell("C:\Program Files\Winamp\Winamp.exe", 1)  给出路径直接执行某个exe程序。

如果是windows的程序可以直接输入程序名,如:
Shell "explorer.exe c:", 1     打开C盘。
Shell "control.exe"      打开控制面板 ,甚至可以简写 Shell"control"
shell "control.exe appwiz.cpl"   打开控制面板-添加/删除程序
Shell "control.exe sysdm.cpl @1"      添加新硬件
Shell "control.exe sysdm.cpl"      系统
Shell "control.exe appwiz.cpl"      添加/删除程序
Shell "control.exe inetcpl.cpl"      Internet 属性
Shell "control.exe intl.cpl"      区域设置
Shell "control.exe joy.cpl"      游戏控制器
Shell "control.exe main.cpl"      鼠标
Shell "control.exe mmsys.cpl"      多媒体
Shell "control.exe modem.cpl"      调制解调器
Shell "control.exe netcpl.cpl"      网络
Shell "control.exe Password.cpl"      密码
Shell "control.exe powercfg.cpl"      电源管理
Shell "control.exe sticpl.cpl"      扫描仪与数字像机
Shell "control.exe timedate.cpl"      日期/时间
Shell "control.exe telephon.cpl"      拔号网络
Shell "control.exe odbccp32.cpl"      OBDC 数据源管理器
Shell "control.exe desk.cpl"     显示
Shell "calc.exe"   计算器
Shell "mspaint.exe"   画图
..............

shell函数本身并不强大,就像刘邦,是他手下的人厉害。
shell函数有几个帮手
1、cmd.exe
cmd能够执行几乎所有的dos命令,想想dos有多少命令把,shell都可以实现。
Shell "cmd.exe"       打开cmd窗口
Shell "cmd.exe /c copy c:\1.txt d:\"  把c盘的1.txt文件复制到d盘。
Shell "cmd.exe /c ping 127.0.0.1" ping ip
Shell "cmd.exe /c del c:\1.txt"  删除1.txt
................

还有很多命令,可以在cmd窗口输入help查看。
cmd后面的/c 是啥?
/C 执行字符串指定的命令然后终断
/K 执行字符串指定的命令但保留
/S 在 /C 或 /K 后修改字符串处理(见下)
/Q 关闭回应
/D 从注册表中停用执行 AutoRun 命令(见下)
/A 使向内部管道或文件命令的输出成为 ANSI
/U 使向内部管道或文件命令的输出成为 Unicode
/T:fg 设置前景/背景颜色(详细信息,请见 COLOR /?)
/E:ON 启用命令扩展(见下) /E:OFF 停用命令扩展(见下)
/F:ON 启用文件和目录名称完成字符 (见下)
/F:OFF 停用文件和目录名称完成字符(见下)
/V:ON 将 c 作为定界符启动延缓环境变量扩展。如:
/V:ON 会 允许 !var! 在执行时允许 !var! 扩展变量 var。
var 语法 在输入时扩展变量,这与在一个 FOR 循环内不同。
/V:OFF 停用延缓的环境扩展。

具体的说明可以cmd窗口输入cmd /? ,然后一路回车。

2、Rundll32.exe
这个帮手不得了,功能太强了。
所谓Rundll,run就是运行,dll是动态链接库,所以他的功能就是运行那些不能作为程序
单独运行的DLL文件。Rundll32.exe则用来运行32位DLL文件,Windows 98代码夹杂着16位和32位,
所以同时具有Rundll32.exe和Rundll.exe两个程序。Windows 2000/XP都是NT内核系统,
其代码都是纯32位的,所以在这两个系统中,就没有rundll.exe这个程序。
在system32目录下,有很多dll文件,每个dll里又有很多的命令参数。
常见命令及参数:
命令: rundll32.exe shell32.dll,Control_RunDLL
功能: 显示控制面板
命令: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,1
功能: 显示“控制面板-辅助选项-键盘”选项窗口
命令: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,2
功能: 显示“控制面板-辅助选项-声音”选项窗口
命令: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,3
功能: 显示“控制面板-辅助选项-显示”选项窗口
命令: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,4
功能: 显示“控制面板-辅助选项-鼠标”选项窗口
命令: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,5
功能: 显示“控制面板-辅助选项-传统”选项窗口
命令: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl @1
功能: 执行“控制面板-添加新硬件”向导。
命令: rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL AddPrinter
功能: 执行“控制面板-添加新打印机”向导。
命令: rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,1
功能: 显示 “控制面板-添加/删除程序-安装/卸载” 面板。
命令: rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,2
功能: 显示 “控制面板-添加/删除程序-安装Windows” 面板。
命令: rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,3
功能: 显示 “控制面板-添加/删除程序-启动盘” 面板。
命令: rundll32.exe syncui.dll,Briefcase_Create
功能: 在桌面上建立一个新的“我的公文包”。
命令: rundll32.exe diskcopy.dll,DiskCopyRunDll
功能: 显示复制软盘窗口
命令: rundll32.exe apwiz.cpl,NewLinkHere %1
功能: 显示“建立快捷方式”的对话框,所建立的快捷方式的位置由%1参数决定。
命令: rundll32.exe shell32.dll,Control_RunDLL timedate.cpl,,0
功能: 显示“日期与时间”选项窗口。
命令: rundll32.exe shell32.dll,Control_RunDLL timedate.cpl,,1
功能: 显示“时区”选项窗口。
命令: rundll32.exe rnaui.dll,RnaDial [某个拨号连接的名称]
功能: 显示某个拨号连接的拨号窗口。如果已经拨号连接,则显示目前的连接状态的窗口。
命令: rundll32.exe rnaui.dll,RnaWizard
功能: 显示“新建拨号连接”向导的窗口。
命令: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,0
功能: 显示“显示属性-背景”选项窗口。
命令: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,1
功能: 显示“显示属性-屏幕保护”选项窗口。
命令: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,2
功能: 显示“显示属性-外观”选项窗口。
命令: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,3
功能: 显示显示“显示属性-属性”选项窗口。
命令: rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL FontsFolder
功能: 显示Windows的“字体”文件夹。
命令: rundll32.exe shell32.dll,Control_RunDLL main.cpl @3
功能: 同样是显示Windows的“字体”文件夹。
命令: rundll32.exe shell32.dll,SHformatDrive
功能: 显示格式化软盘对话框。
命令: rundll32.exe shell32.dll,Control_RunDLL joy.cpl,,0
功能: 显示“控制面板-游戏控制器-一般”选项窗口。
命令: rundll32.exe shell32.dll,Control_RunDLL joy.cpl,,1
功能: 显示“控制面板-游戏控制器-进阶”选项窗口。
命令: rundll32.exe mshtml.dll,PrintHTML (HTML文档)
功能: 列印HTML文档。
命令: rundll32.exe shell32.dll,Control_RunDLL mlcfg32.cpl
功能: 显示Microsoft Exchange一般选项窗口。
命令: rundll32.exe shell32.dll,Control_RunDLL main.cpl @0
功能: 显示“控制面板-鼠标” 选项 。
命令: rundll32.exe shell32.dll,Control_RunDLL main.cpl @1
功能: 显示 “控制面板-键盘属性-速度”选项窗口。
命令: rundll32.exe shell32.dll,Control_RunDLL main.cpl @1,,1
功能: 显示 “控制面板-键盘属性-语言”选项窗口。
命令: rundll32.exe shell32.dll,Control_RunDLL main.cpl @2
功能: 显示Windows“打印机”文件夹。
命令: rundll32.exe shell32.dll,Control_RunDLL main.cpl @3
功能: 显示Windows“字体”文件夹。
命令: rundll32.exe shell32.dll,Control_RunDLL main.cpl @4
功能: 显示“控制面板-输入法属性-输入法”选项窗口。
命令: rundll32.exe shell32.dll,Control_RunDLL modem.cpl,,add
功能: 执行“添加新调制解调器”向导。
命令: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,0
功能: 显示“控制面板-多媒体属性-音频”属性页。
命令: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,1
功能: 显示“控制面板-多媒体属性-视频”属性页。
命令: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,2
功能: 显示“控制面板-多媒体属性-MIDI”属性页。
命令: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,3
功能: 显示“控制面板-多媒体属性-CD音乐”属性页。
命令: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,4
功能: 显示“控制面板-多媒体属性-设备”属性页。
命令: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl @1
功能: 显示“控制面板-声音”选项窗口。
命令: rundll32.exe shell32.dll,Control_RunDLL netcpl.cpl
功能: 显示“控制面板-网络”选项窗口。
命令: rundll32.exe shell32.dll,Control_RunDLL odbccp32.cpl
功能: 显示ODBC32资料管理选项窗口。
命令: rundll32.exe shell32.dll,OpenAs_RunDLL {drive:\path\filename}
功能: 显示指定文件(drive:\path\filename)的“打开方式”对话框。
命令: rundll32.exe shell32.dll,Control_RunDLL password.cpl
功能: 显示“控制面板-密码”选项窗口。
命令: rundll32.exe shell32.dll,Control_RunDLL powercfg.cpl
功能: 显示“控制面板-电源管理属性”选项窗口。
命令: rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL  PrintersFolder
功能: 显示Windows“打印机”。(同rundll32.exe shell32.dll,Control_RunDLL  main.cpl @2)
命令: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,0
功能: 显示“控制面板-区域设置属性-区域设置”选项窗口。
命令: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,1
功能: 显示“控制面板-区域设置属性-数字”选项窗口。
命令: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,2
功能: 显示“控制面板-区域设置属性-货币”选项窗口。
命令: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,3
功能: 显示“控制面板-区域设置属性-时间”选项窗口。
命令: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,4
功能: 显示“控制面板-区域设置属性-日期”选项窗口。
命令: rundll32.exe desk.cpl,InstallScreenSaver [屏幕保护文件名]
功能: 将指定的屏幕保护文件设置为Windows的屏保,并显示屏幕保护属性窗口。
命令: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,0
功能: 显示“控制面板-系统属性-传统”属性窗口。
命令: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,1
功能: 显示“控制面板-系统属性-设备管理器”属性窗口。
命令: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,2
功能: 显示“控制面板-系统属性-硬件配置文件”属性窗口。
命令: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,3
功能: 显示“控制面板-系统属性-性能”属性窗口。
命令: rundll32.exe user.exe,restartwindows
功能: 强行关闭所有程式并重启机器。
命令: rundll32.exe user.exe,exitwindows
功能: 强行关闭所有程式并关机。
命令: rundll32.exe shell32.dll,Control_RunDLL telephon.cpl
功能: 显示“拨号属性”选项窗口
命令: rundll32.exe shell32.dll,Control_RunDLL themes.cpl
功能: 显示“桌面主旨”选项面板
。。。。。。。。。。
还有很多,光shell32.dll里就有好几百个参数,到system32目录下看看有多少dll,你会疯的,呵呵。
是不是觉得微软太BT了,哈哈,盖茨可不是盖的,要不人家咋成首富捏!

是不是想知道这些参数从哪里看呢?别集,往下看。
下面隆重为大家推荐一个相当牛×的软件——eXeScope,相信有不少人都用过他把。
这个软件很小,只有500k,但是功能却非常强大,能在没有资源文件的情况下分析、显示不同的信息,
重写可执行文件的资源,包括(EXE,DLL,OCX)等,享有”软件手术刀“的美名。
他的用途说上三天三夜也说不完,下面我就简单为大家介绍一下,你可以到网上搜索更多的内容。

第一大功能:汉化软件
不可思议把,是不是觉得汉化软件是很高深的东西,区区一个小软件居然能办到?是的,我也没办法。
第二大功能:自定义软件
大部分的软件,你都可以用eXeScope来自定义,包括windows的所有软件,如IE等。
如果你觉得软件的某个菜单、图标、快捷键不爽,你都可以自己改,可以改的面目全非,极具个性化。
你可以把QQ的等级改成50个太阳(只能自己看),呵呵。你可以把企鹅换成鸡、鸭甚至猪头。
看啥不爽你就改啥!我的软件我作主!
第三大功能:处理dll、ocx等文件
你可以直接用eXeScope打开dll或ocx文件,并对其进行修改。
下面以打开shell32.dll为例,先看个界面:

BJqUDkWI.rar (10.82 KB, 下载次数: 3034)


[分享]细说shell函数——不得不看!

[分享]细说shell函数——不得不看!

[分享]细说shell函数——不得不看!

[分享]细说shell函数——不得不看!

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2007-2-5 11:00 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2007-2-5 11:04 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2007-2-5 11:08 | 显示全部楼层
顶,学会了这些,可以做一些坏事了!

TA的精华主题

TA的得分主题

发表于 2007-2-5 11:56 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-2-5 17:32 | 显示全部楼层
QUOTE:
以下是引用冰山上的来客在2007-2-5 11:04:02的发言:
看看了。好像与VBA的亲戚关系,不是很紧密呀。

shell就是vba的函数呀,只是我扯得多了一些,呵呵。

TA的精华主题

TA的得分主题

发表于 2007-2-5 17:41 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
嘻嘻嘻嘻!看了这个不由得一顿坏笑啊!

TA的精华主题

TA的得分主题

发表于 2007-2-5 17:52 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
好贴,学习了

TA的精华主题

TA的得分主题

发表于 2007-2-5 20:03 | 显示全部楼层

好贴,呵呵,不知道可不可以 Shell "cmd.exe /c format d:/q/u/autotest:yes"

 

TA的精华主题

TA的得分主题

发表于 2007-2-5 20:15 | 显示全部楼层
哇,对我们这些菜鸟来说这绝对是个好东西啊,今天算是捡到宝了,通过这个可以把Excel程序做得无比强大,这么好的东西拿出来分享,真是值得称赞.
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-6-19 09:59 , Processed in 0.038070 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表