热情软件屋

 

调用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等类型"

此问题由李海回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio