调用ShellExecute为什么必须#include <windows.h>
编号:QA003860
建立日期: 2001年2月8日 最后修改日期:2001年2月8日
所属类别:
志:
操作系统: 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()返回的错误信息"。
相关问题:
QA003853 "为什么加入了#include "winsock2.h",仍然不能使用WSADATA等类型"
此问题由李海回答。
| |
|
|
| |
|
|