打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
VBA中shell函数
细说shell函数——不得不看!
文章来源:点击这里
这篇帖子也许有点长,但是绝对值得一看。
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, 下载次数: 2179)
SHELL语句用法心得
文章来源:点击这里
一. 调用系统“创建快捷方式”向导
是否为VB不支持创建快捷方式而于着急呢?虽然您可以调用vb5stkit.dll中的fCreateShellLink函数但它是为安装程序设计的,快捷方式的默认路径总是从当前用户的“\Start Menu\Programs”开始,也就是说,如果您的Windows系统装在C盘上,您无法通过 fCreateShellLink 函数把快捷方式创建到D盘上去。
现在,给大家介绍一种极为方便、巧妙的方法: 用Shell语句调用系统“创建快捷方式”向导。
新建一个项目,在窗体上放一个按钮,双击此按钮,加入以下代码:
Private Sub Command1_Click()
Open App.Path & "\temp.lnk" ForOutput As #1
Close #1 '以上两句在程序所在目录建立一个临时文件
Shell "Rundll32.exe AppWiz.Cpl,NewLinkHere" & App.Path & "\temp.lnk"
End Sub
(注意:Shell语句中NewLinkHere后面跟着一个空格才是引号,否则将出错。)
运行程序,按一下命令按钮,怎么样?“创建快捷方式”向导出现了,如果创建成功,快捷方式将取 代临时文件temp.lnk的位置,如果选取消,temp.lnk 也会自动消失。当然,您可以在硬盘的任意位置建立temp.lnk。好,现在又可以为您的程序增添一项新功能了。
Enjoy!
二. Rundll32.exe的用途
我们知道,用Shell语句只能调用可执行文件,即 exe、com、bat 和 pif 文件,有时我们想要调用其他一些系统功能该怎么办呢?此时,Windows提供的 Rundll32.exe可大显身手了。下面我们来认识一下这些用法,也许会给您带来一点惊喜。
1.要打开设置系统时间的控制面板文件 (Timedate.cpl),只需运行如下代码:
Shell "Rundll32.exe  Shell32.dll,Control_RunDLLTimedate.cpl"
至于打开其他控制面板文件,相信您一定能够举一反三,尝试一下,换个文件名就成了。
2.要运行某一快捷方式(*.lnk)则可以用以下代码:
She11 "Rundll32.exe url.dll, FileProtocolHandler X"
(X代表要运行的文件,包括路径,下同。)
3. 也可以这样写来打开ActiveMovie控制:
Shell "RUNDLL32.EXE amovie.ocx,Rundll",1
而用Shell "RUNDLL32.EXE amovie.ocx,Rundll /play X",1 将直接播放媒体文件。
4. Shell "rundll32.exe desk.cpl,InstallScreenSaver X”当然是安装屏幕保护啦,如果你写了一个屏幕保护程序,那么可以在安装程序中写上它,而不一定要装到system目录下。顺便提一下,VB不是自捞一个“Application Setup Wizard”么?它的VB源代码都在安装目录下的“\setupkit\setup1”中放着呢,好好把它研究一下。 你完全能做出富有个性的安装程序来。
5.按住shift键,右击某一文件,菜单中会出现 “打开方式”选项,这也许已不是什么秘密。但现在,
用shell "rundll32.exe shell32.dll OpenAs_RunDLL X" 便能直接调用“打开方式”框。
6. 甚至能用这样一句来打印文件(包括HTML所支持的所有文本与图像格式):
Shell "rundll32.exe MSHTML.DLL,PrintHTML X”, 1
怎么样?是不是小有收获呢?这下,您一定会对 Rundll32.exe这个平时不起眼的文件另眼相待了,它可是系统运行必不可少的部件呢!其实 Shell+Rundll32还能调用其他许多系统功能,比如关于NetMeeting和Telnet方面的。如果您有兴趣,可以 到往册表的“我的电脑\HKEY_CLASSES_ROOT\”或“我的电脑\HKEY_LOCAL_MACHINE\Software\CLASSES”下去看看,本文的内容大都是从那里“抄”来的。只要有足够的决心、信心、耐心,您一定能发现更多有价值的东西。
小议shell语句语法中的小门道
文章来源:点击这里
我们都知道shell语句可以执行主程序打开某一文件,比如c:盘符有一excel文件123.xls,我们可以使用以下语句来打开它
shell"excel.exe  c:\123.xls"
如果123.xls是在c:\program files下呢,我们是否仍可采用以下语句结构来打开它
shell"excel.exe   c:\program  files\123.xls"
答案是否定的,即路径名含有空格,你再如此调用将会绊个跟头。为什么?因为Shell的第一个参数(字符串)既要包含文件名又要包含命令行,它怎么分哪?只有用空格来区分。所以,一旦路径中包含空格,它就会就查找空格前的文件,并自作聪明地加上exe(或com等其他可执行类扩展名)后执行,这样当然是失败的(因为C:\program.exe是不存在的)。如何解决?
我们可以采取以下语句来补救
shell "excel.exe  ""c:\program  files\123.xls"""(注意红色字符段中的空格)
如果文件名是一变量,我们又该如何表示呢,比如
filename="c:\program  files\123.xls",我们能否采用以下语句
shell"excel.exe  "&filename
答案是不行滴,因为变量中的空格存在,我们又该作何处理呢,其实也是我这几年对shell语句用法的一些探索和总结,
我们稍作处理就不会害怕空格这只讨厌的苍蝇了,请看下面:
filename=chr(34) & "c:\program  files\123.xls" & chr(34)
shell"excel .exe  " & filename  (注意红色字符段中的空格)
不信,大家可以动手试试看,个人经验就介绍到这里.
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Rundll32.exe文件详解
程序员需要了解的DLL文件中的函数
VB启动控制面板大全
控制面板大全
木马隐藏的几个地址分析
【新提醒】Win 8.1 上帝模式归来 利用全局唯一标识符(GUID)快速打开控制面板设置窗口
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服