这篇帖子也许有点长,但是绝对值得一看。
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 p