ShellExecute 的使用

来源:互联网 发布:python 开发框架 编辑:程序博客网 时间:2024/04/30 02:37











功能上: createprocess   >   shellexecute   >   winexec   复杂程度也是!

winexec() 只用于可执行文件,是一个老函数啦,虽然使用方便,但不推荐!(兼容性也不好)

shellexcute()是通过windows外壳打开任意文件,非可执行文件自动通过关联的程序打开对于可执行文件,区别不大,不过shellexcute可以指定运行时的工作路径

winexec() 必须有GetMessage或超时之后才返回!CreateProcess和ShellExecute都是直接返回的!

http://www.china-askpro.com/msg39/qa60.shtml

操作系统: windows 
     编程工具: vc++ 
     问题: 我想问一个关于vc的入门问题 
     我在vc下使用ShellExecute遇到的问题 
     1、我找了一下ShellExecute是在shellapi.h里面定义的,但是如果我写 
     #include <shellapi.h> 
     void main() 
     { 
     ShellExecute(NULL,"open","netstat","-a",NULL,SW_SHOWNORMAL); 
     } 
     编译出现好多错误,说好多变量没有定义 
     现在我只能写 
     #include <windows.h> 
     这样就没有错误了,windows.h里面就是include 了一下shellapi.h阿,而且我看那些使用了ShellExecute的例子里面都是引用的shellapi.h的,不知道为什么。 
     2、如果我这样写 
     ShellExecute(NULL,"open","netstat","-a",NULL,SW_SHOWNORMAL); 
     她是对的 
     但是我要写成 
     ShellExecute(NULL,"open","netstat","-a 〉1.txt",NULL,SW_SHOWNORMAL) 
     就没有任何结果了,根本没有出来结果。这个命令到底应该怎么书写阿? 
     3、shellexecute有错误描述。我在程序里面如何输出错误描述。谢谢 
     水平: 刚入门

回答:

     windows.h不光是包含了shellapi.h,它还定义了许多数据类型,如果没有这些数据类型,shellapi.h本身会出错。所有的Windows程序都需要包含windows.h,我想你看到的例子可能是片段,编写者假设你已经包含了windows.h。 
     ShellExecute不支持输出转向,这个问题你可以参考QA003501 "用CreateProcess()调用dos的程序,如何把输出重定向到一个文件"。 
     我不知道你说的错误描述是否指GetLastError,如果是,参考QA003338 "如何知道GetLastError()返回的错误信息"。 
     
    转自:http://hi.baidu.com/striveforit/item/532be3fe62955f4a922af28f

原创粉丝点击