利用ShellExecute来启动一个程序,需要传递3000字长的参数,系统报错:
传递给系统调用的数据区域太小.
如何才能传递这么长的参数呢?

解决方案 »

  1.   

    ....  这么长的参数 为什么不启动后利用Socket传递? 
      

  2.   

    #define max 1024*1024
    char  lpFile[max];
    zeromemory(lpFile,sizeof(lpFile));
    wsprintf(lpFile,("...."));....
    ShellExecute.....
      

  3.   

    用配置文件也可以传递参数
    首先将参数写入文件
    然后用ShellExecute启动程序A
    在A的InitInstance()中读取这个配置文件当然用注册表也可以
      

  4.   

    哈哈 非也非也  不是因为才 3000 就出错 主要是因为 类型错误
    你 仔细看 ShellExecute()函数的 程序参数
    要用LPCTSTR 宽字符串 你直接 char * 就容易出错
      

  5.   

    LPCSTR lpParameters, //当lpOperation为“explore”时指定要传递的参数,通常设为NULL 
      

  6.   

    传lpParameters 时 要强制转换
    char *lpParameters="fghhhgklhgfgh.....................";
    (LPCSTR)lpParameters
      

  7.   

    传参数所在的地址
    然后在被启动的程序里找回来
    或者
    ShellExecute
    后typedef struct paramdata{
    char param[3000];
    }pparamdata;pparamdata data;
    //填data.param数据sendmessage(WM_XXXX,&data,NULL);
    被启动程序再处理WM_XXXX消息
      

  8.   

    还是用注册表比较方便AfxGetApp()->WriteProfileString()//向注册表中写数据AfxGetApp()->GetProfileString()//从注册表中读取信息
      

  9.   

    AfxGetApp()->WriteProfileString();//向注册表中写数据AfxGetApp()->GetProfileString()//从注册表中读取信息
      

  10.   

    AfxGetApp()->WriteProfileString()//向注册表中写数据AfxGetApp()->GetProfileString();//从注册表中读取信息