zoukankan      html  css  js  c++  java
  • SHELLEXECUTEINFO 结构详解

    typedef struct _SHELLEXECUTEINFO {
    DWORD cbSize;
    ULONG fMask;
    HWND hwnd;
    LPCTSTR lpVerb;
    LPCTSTR lpFile;
    LPCTSTR lpParameters;
    LPCTSTR lpDirectory;
    int nShow;
    HINSTANCE hInstApp;
    LPVOID lpIDList;
    LPCTSTR lpClass;
    HKEY hkeyClass;
    DWORD dwHotKey;
    union {
    HANDLE hIcon;
    HANDLE hMonitor;
    } DUMMYUNIONNAME;
    HANDLE hProcess;

    } SHELLEXECUTEINFO, *LPSHELLEXECUTEINFO;

    在C#中其结构为

    public struct SHELLEXECUTEINFO //用于ShellExecuteEx
    {
        public int cbSize;
        public int fMask;
        public int hwnd;
        public string lpVerb; 
        public string lpFile;
        public string lpParameters;
        public string lpDirectory;
        public int nShow;
        public int hInstApp;
        public int lpIDList;
        public string lpClass;
        public int hkeyClass;
        public int dwHotKey;
        public int hIcon;
        public int hProcess;

    }

    参数详解:

    cbSize
    存储该结构的长度,以字节为单位。

    fMask
    一个标志数组,用来设置其他成员的有效性
    SEE_MASK_CLASSKEY          0x3
    SEE_MASK_CLASSNAME          0x1
    SEE_MASK_CONNECTNETDRV      0x80
    SEE_MASK_DOENVSUBST          0x200
    SEE_MASK_FLAG_DDEWAIT      0x100
    SEE_MASK_FLAG_LOG_USAGE      0x4000000
    SEE_MASK_FLAG_NO_UI          0x400
    SEE_MASK_HMONITOR          0x200000
    SEE_MASK_HOTKEY          0x20
    SEE_MASK_ICON              0x10
    SEE_MASK_IDLIST          0x4
    SEE_MASK_INVOKEIDLIST      0xC
    SEE_MASK_NOASYNC          0x100000
    SEE_MASK_NOCLOSEPROCESS      0x40
    SEE_MASK_NOZONECHECKS      0x800000
    SEE_MASK_NO_CONSOLE          0x8000
    SEE_MASK_UNICODE          0x100000
    SEE_MASK_FILEANDURL          0x4000000

    hwnd
    调用这个ShellExecuteEx的窗口句柄

    lpVerb
    设定这个ShellExecuteEx的动作,包括:
    edit
     
    打开编辑器编辑文档,如果 lpFile 不是一个文档,则这个函数会失败
    explore
     
    以 lpFile 为路径打开资源管理器
    find
     
    从指定目录开始搜索
    open
    根据 lpFile 打开对应文件,该文件可以为可执行文件、文档或者文件夹
    print
    根据 lpFile 打印文档,若lpFile不是一个文档则该函数会失败
     
    properties
     
    显示文件或文件夹的属性

    lpFile
    \0 结尾的字符串,指出 lpVerb 的操作对象的路径,被系统支持的操作包括文本的 open  print等,其中print要求必须有一个已经注册的打印机,而其他种类的文档会通过系统关联进行查询执行。若要设置一个空的namespace,则需要设置fMask的值为see_mask_invokeidlist
    注意:see_mask_invokeidlist已设置,则可以藉由lpFile或者lpIDList确定item的系统路径或者PIDL

    lpParameters
    运行/打开程序的参数,如果打开的是一个文档,则该项无效

    lpDirectory
    指明工作目录的名字,成员没有说明,则默认为当前目录

    nShow
    说明ShellExecuteEx打开的程序将以什么形式出现

    hInstApp
    如果函数运行成功,该项的值将大于32,否则会是下列错误对应的值

    SE_ERR_FNF 
    没有找到文件 
    SE_ERR_PNF
    没有找到路径
    SE_ERR_ACCESSDENIED 
    拒绝访问
    SE_ERR_OOM 
    内存不足
    SE_ERR_DLLNOTFOUND 
    没有找到动态链接库
    SE_ERR_SHARE 
    不能操作一个以打开的文件
    SE_ERR_ASSOCINCOMPLETE 
    文件关联信息不完整
    SE_ERR_DDETIMEOUT 
    DDE
    操作超时
    SE_ERR_DDEFAIL 
    DDE
    操作失败
    SE_ERR_DDEBUSY 
    DDE
    繁忙
    SE_ERR_NOASSOC 
    没有找到文件关联

    lpIDList
    一个itemidlist结构的地址,用来存储成员的特别标识符,当fMask不包括see_mask_idlistsee_mask_invokeidlist时该项被忽略

    lpClass
    用以指明文件类别的名字或GUID,当fMask不包括see_mask_classname时该项被忽略

    hkeyClass
    获得已在系统注册的文件类型的Handle,当fMask不包括see_mask_classkey时该项被忽略

    dwHotKey
    程序的热键关联,低位存储虚拟关键码(Key Code),高位存储修改标志位(HOTKEYF_),修改标志为(modifier flags)的详细列表请看wm_sethotkey消息的描述,当fmask不包括see_mask_hotkey时该项被忽略

    DUMMYUNIONNAME 
    hIcon 
    取得对应文件类型的图标的Handle,当fMask不包括SEE_MASK_ICON时该项被忽略

    hMonitor 
    将文档显示在显示器上的Handle,当fMask不包括SEE_MASK_HMONITOR时该项被忽略

    hProcess
    用于进行return操作的成员,若fMask不设为see_mask_nocloseprocess则该项值为null,即使fMask设为see_mask_nocloseprocess,若没有进程启动,该项值仍为null。即没有新的进程启动,则该项值一只为null 。

  • 相关阅读:
    SessionAttributes注解
    数据格式化
    数据类型转换器
    线程的常用方法总结
    线程生命周期
    分析配置DispatcherServlet类时load-on-startup标签作用
    springMVC的执行请求过程
    MyBatis之动态SQL
    MyBatis实现
    Spring框架中的JDK与CGLib动态代理
  • 原文地址:https://www.cnblogs.com/hanyonglu/p/2014224.html
Copyright © 2011-2022 走看看