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