启动应用程序
来源:互联网 发布:mac 系统占用空间太大 编辑:程序博客网 时间:2024/05/24 03:01
MSDN 2005 -> Win32 和 COM 开发 -> User Interface -> Windows User Experience -> Windows Shell -> Windows Shell -> Shell Programmer's Guide -> Shell Basics -> Launching Applications
定位某文件对象后,程序下一步要做的通常是对其执行某种操作。比如说,程序可能想启动另外一个程序来修改某数据文件。对于可执行文件,程序可能要求简单地启动它。本文讨论如何使用ShellExecute和ShellExecuteEx来执行这些任务。
使用ShellExecute和ShellExecuteEx
要使用ShellExecute或者ShellExecuteEx,必须指定要对其执行操作的文件或者文件夹对象,以及用以指定操作类型的动词(verb)。对于ShellExecute,需要把这些值赋给合适的参数。对于ShellExecuteEx,则需要填充到SHELLEXECUTEINFO结构体的合适成员中。此外还有其他一些成员或者参数用以精确调节这两个函数的行为。
文件或者文件夹对象可以是文件系统的一部分,也可以是虚拟对象,并且可以由其路径或者PIDL标识。
对象动词
实际上,可用的动词就是对象的快捷菜单中的条目。在注册表条目
HKEY_CLASSES_ROOT/CLSID/{object_clsid}/Shell/verb
中可以找到可用的动词。这里object_clsid是对象的类型标示符(CLSID);verb是可用动词的名称。verb/command子键指示动词被调用时将执行的操作。
在注册表条目
HKEY_CLASSES_ROOT/object_name/shell/verb
中可以找到对于预定义的Shell对象可用的动作。这里object_name是预定义的Shell对象的名字。类似地,verb/command子键指示动词被调用时将执行的操作。
常见的可用动词如下:
每个动词都对应一个从控制台窗口启动应用所需的命令。open通常是被支持的,就以它为例。对于.exe文件,open简单地启动程序。然而,它更常见的用途是启动操作特定文件的应用程序。比如说,.txt文件可以被写字板程序打开。因此,.txt文件的open动作将对应类似下面的命令:
"C:/Program Files/Windows NT/Accessories/Wordpad.exe" "%1"
这样,使用ShellExecute或者ShellExecuteEx打开.txt文件时,Wordpad.exe将被启动,而指定的文件名是其参数。某些命令可能还有额外的参数,比如说标志,以确保正确地启动程序。关于快捷菜单和动词的更深入讨论,见Extending Shortcut Menus。
通常,确定对某特定文件可用的动词列表是很复杂的。然而,在很多情况下,可以简单地为lpVerb参数指定NULL,这样会调用文件类型的默认命令。这通常等价于设定动词为open,然而,某些文件类型可能有不同的默认命令。更详尽的信息,见Extending Shortcut Menus和ShellExecuteEx的参考文档。
使用ShellExecute启动搜索对话框
右键单击资源管理器中某文件夹图标时,快捷菜单中有一项是“搜索”。如果选择这一项,Shell会启动搜索工具。搜索工具显示可用于搜索指定文本串的对话框。通过在lpVerb参数中指定find,在lpFile参数中指定目录路径,ShellExecute也可以启动搜索工具。比如说,下面这行代码为C:/MyPrograms目录启动搜索工具:
ShellExecute(hwnd,"find","c:/MyPrograms",NULL,NULL,0);
使用ShellExecuteEx的简单例子
下面的控制台应用程序代码展示了ShellExecuteEx的使用。为使结构清晰,省略了大部分错误检查代码。
<…… 省略示例代码 ……>
程序首先获取Windows目录的PIDL,然后枚举其内容直到找到第一个.bmp文件。与前面的例子不同的是,IShellFolder::GetDisplayNameOf用于获取文件的解析名,而不是显示名。因为这是个系统文件夹,ShellExecuteEx需要其解析名作为全限定路径。定位到第一个.bmp文件后,为SHELLEXECUTEINFO结构体的成员赋给合适的值。lpFile成员被赋值为文件的解析名,lpVerb成员被设置为NULL,表示启动默认操作。在本例中,默认操作是open。然后把结构体传给ShellExecuteEx,启动位图文件的默认处理程序(通常是MSPaint.exe)来打开文件。ShellExecuteEx返回后,PIDL和IShellFolder接口被释放。
- 启动应用程序
- 启动应用程序
- 启动新的应用程序
- Symbian应用程序启动顺序
- Symbian应用程序启动顺序
- Symbian应用程序启动顺序
- Symbian应用程序启动顺序
- Symbian应用程序启动顺序
- Symbian应用程序启动顺序
- Symbian应用程序启动顺序
- Symbian应用程序启动顺序
- Symbian应用程序启动顺序
- Symbian应用程序启动顺序
- Symbian应用程序启动顺序
- c#启动应用程序
- Symbian应用程序启动顺序
- Flex应用程序启动详解
- Flex应用程序启动详解
- creny
- fedora sohu和163源
- 我很笨
- Shell FAQ
- c#操作XML
- 启动应用程序
- 浏览名字空间
- 文件夹隐藏属性为灰色,无法修改的解决方案
- 求高人指点:基于saas技术软件开发研究
- 管理文件系统(一)
- 3.5寸1.44M软盘结构
- 从数据库抽取随机试卷(单选)怎么做啊?
- B/S C/S 优缺点比较及适用场合
- 管理文件系统(二)