能不能确定具体是那个参数错了? 调用 CoCreateInstanceEx ( )访问服务器上的com+组件 时返回 E_INVALIDARG?

john1980 2001-07-20 02:17:31
CoInitialize(NULL);

// Initialize the server information.
pSInfo.pwszName = L"\\192.168.1.56";
pSInfo.pAuthInfo = NULL;

// Initialize the result structure.
mqi.pIID = &IID_IOrderModify;
mqi.pItf = NULL;
mqi.hr = 0;

// Create an instance of the object.
hr = CoCreateInstanceEx(CLSID_OrderModify,
NULL,
CLSCTX_ALL,
&pSInfo,
1,
&mqi);
// If the creation failed, exit.
if (FAILED(hr))
{

if (hr == E_INVALIDARG)
AfxMessageBox("One or more of the arguments were invalid.");

}
我想知道是那个变量错了
我是在一台电脑上运行该程序的,192.168.1.56 是我的局域网的 IP
随便问一下,服务器名怎样查阿,我得电脑在局域网上看是叫 john 那么
服务器名也是叫 JOHN 吗
去不区分大小写呀? 我在msdn上没有查到这方面的资料


...全文
515 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ozzman 2002-01-17
  • 打赏
  • 举报
回复
PWCHAR pwszName=new WCHAR[strlen(m_strComputerName)+1];
memset(pwszName,0,strlen(m_strComputerName)+1);
MultiByteToWideChar( CP_ACP, 0,m_strComputerName, -1, pwszName, strlen(m_strComputerName)+1) ;
COSERVERINFO serverinfo = {0,pwszName,NULL,0};
delete pwszName;

MULTI_QI mqi = {&IID_IShellLink, NULL, 0};

hres = CoCreateInstanceEx(CLSID_ShellLink, NULL, CLSCTX_ALL, &serverinfo, 1, &mqi);
if( FAILED( hres))
{
psl = NULL;
return FALSE;
}

COSERVERINFO 与MULTI_QI 这两个结构体中的参数必须赋值!!!
Ozzman 2002-01-17
  • 打赏
  • 举报
回复
CoInitialize(NULL);

PWCHAR pwszName=new WCHAR[strlen(m_strComputerName)+1];
memset(pwszName,0,strlen(m_strComputerName)+1);
MultiByteToWideChar( CP_ACP, 0,m_strComputerName, -1, pwszName, strlen(m_strComputerName)+1) ;
COSERVERINFO serverinfo = {0,pwszName,NULL,0};
delete pwszName;

MULTI_QI mqi = {&IID_IShellLink, NULL, 0};

hres = CoCreateInstanceEx(CLSID_ShellLink, NULL, CLSCTX_ALL, &serverinfo, 1, &mqi);

COSERVERINFO 与MULTI_QI中的值必须填写完整!
john1980 2001-07-23
  • 打赏
  • 举报
回复
我试一试吧
paw_001 2001-07-23
  • 打赏
  • 举报
回复
pSInfo.pwszName = L"192.168.1.56";
pSInfo.pAuthInfo = NULL;
pSInfo.dwReserved1 = 0;
pSInfo.dwReserved2 = 0;

// Initialize the result structure.
mqi.pIID = &IID_IOrderModify;
mqi.pItf = NULL;
mqi.hr = 0;

// Create an instance of the object.
hr = CoCreateInstanceEx(CLSID_OrderModify,
NULL,
CLSCTX_ALL,
&pSInfo,
1,
&mqi);

可能是你没有设置下面的参数吧。
pSInfo.dwReserved1 = 0;
pSInfo.dwReserved2 = 0;

john1980 2001-07-22
  • 打赏
  • 举报
回复
怎么没人呀
john1980 2001-07-22
  • 打赏
  • 举报
回复
真是怪事
加了 vazuo_lee 的两句后,没有说变量不对了
但还是不能创建组件,Failed(hr) 为真,
请问这时到底跟 com+ 组件联系上没有
我访问的是同一台电脑上的东东
只需在Adimniatrator Tools 中的 Component Services 中配置 com dll 就行了吧
azuo_lee 2001-07-22
  • 打赏
  • 举报
回复
加上这两句话试试:
pSInfo.dwReserved1 = 0;
pSInfo.dwReserved2 = 0;
john1980 2001-07-22
  • 打赏
  • 举报
回复
我试了一下,还是不行
我把参数 &pSInfo 设置成 NULL ,换成本地调用,
这回什么错误信息都没有就是不能创建组件。
Failed(hr) 为真,但我捕捉不到错误,MSDN 给出的hr 字符串 错误我捕捉不到。
怎样获得 hr 中的信息呢


我都快烦死了
xiaomin235 2001-07-22
  • 打赏
  • 举报
回复
gethostname()
xiaomin235 2001-07-22
  • 打赏
  • 举报
回复
pSInfo.pwszName = L"\\192.168.1.56";
请把上面这行改为
pSInfo.pwszName = L"192.168.1.56";

john1980 2001-07-21
  • 打赏
  • 举报
回复
???????????????
什么意思呀
能不能说的清楚一点
wyzegg 2001-07-21
  • 打赏
  • 举报
回复
你的客户的机器的用户没有启动组件的权限,在服务器上用DCOMCNFG来配置,安全行
john1980 2001-07-20
  • 打赏
  • 举报
回复
有没有人 指导一项阿
因文件超过20M不能上传,所以拆分为两个文件分次上传 第1章 COM背景知识 1.1 COM的起源 1.1.1 软件业面临的挑战 1.1.2 传统解决方案 1.1.3 面向对象程序设计方法 1.1.4 最终解决方案:组件软件 1.1.5 面向对象的组件模型——COM 1.2 COM的发展历程 1.2.1 COM以前的对象技术:DDE、OLE 1、VBX控件 1.2.2 COM首次亮相:OLE2 1.2.3 Microsoft拥抱Internet:ActiveX 1.2.4 更多的新名词:Windows DNA和COM+ 1.2.5 远程对象:ORBs和DCOM 1.2.6 COM的最新版本:COM+ 1.3 COM技术现状 1.3.1 COM与CORBA 1.3.2 COM与Enterprise Java Beans 1.3.3 Windows之外的COM 小结 第2章 从C++到COM 2.1 C++客户重用C++对象——例程DB 2.1.1 C++对象 2.1.2 客户程序 2.2 将C++对象移进DLL中——例程DB_cppdll 2.2.1 成员函数的引出 2.2.2 内存分配 2.2.3 Unicode/ASCII兼容 2.2.4 例程实现 2.2.4.1 修改接口文件 2.2.4.2 修改对象程序 2.2.4.3 修改客户程序 2.3 C++对象使用抽象基类——例程DB_vtbl 2.3.1 问题:私有数据成员被暴露 2.3.2 解决方案:抽象基类 2.3.2.1 什么是抽象基类(Abstract Base Class) 2.3.2.2 实现秘诀:虚函数(Virtual Functions) 2.3.3 使用抽象基类 2.3.4 例程实现 2.3.4.1 修改接口文件 2.3.4.2 修改对象程序 2.3.4.3 修改客户程序 2.4 改由COM库装载C++对象——例程dbalmostcom 2.4.1 COM库 2.4.2 对象创建的标准入口点 2.4.3 标准对象创建API 2.4.4 标准对象注册 2.4.5 例程实现 2.4.5.1 修改接口文件 2.4.5.2 修改对象程序 2.4.5.3 修改客户程序 2.5 将C++对象变成COM对象 2.5.1 引用计数 2.5.2 多接口 2.5.3 IUnknown接口 2.5.4 标准类厂接口:IClassFactory 2.5.5 对象代码的动态卸载 2.5.6 自动注册 2.5.7 例程实现 2.5.7.1 修改接口文件 2.5.7.2 修改对象程序 2.5.7.3 修改客户程序 2.6 为COM对象添加多接口支持 2.6.1 多接口 2.6.2 DEFINE_GUID 2.6.3 例程实现 2.6.3.1 修改接口文件 2.6.3.2 修改对象程序 2.6.3.3 修改客户程序 小结 第3章 COM基础知识 3.1 对象与接口 3.1.1 COM对象 3.1.2 COM接口 3.1.3 IUnknown接口 3.1.3.1 生存期控制:AddRef和Release 3.1.3.2 接口查询:QueryInterface 3.1.4 全球唯一标识符GUID 3.1.5 COM接口定义 3.1.6 接口描述语言IDL 3.2 COM应用模型 3.2.1 客户/服务器模型 3.2.2 进程内组件 3.2.3 进程外组件 3.2.4 COM库 3.2.5 HRESULT返回值 3.2.6 COM与注册表 3.3 COM组件 3.3.1 实现类厂对象 3.3.2 类厂对象的创建 3.3.3 实现自动注册 3.3.4 实现自动卸载 3.4 COM客户 3.4.1 COM对象创建函数 3.4.1.1 CoGetClassObject 3.4.1.2 CoCreateInstance 3.4.1.3 CoCreateInstanceEx 3.4.2 如何调用进程内组件 3.4.3 COM客户调用进程外组件 3.5 进一步认识COM 3.5.1 可重用机制:包容和聚合 3.5.2 进程透明性 3.5.3 安全性机制 小结 第4章 COM扩展技术 4.1 可连接对象机制 4.1.1 客户、接收器与可连接对象 4.1.1.1 接收器 4.1.1.2 可连接对象 4.1.1.3 客户 4.1.2 实现可连接对象 4.1.3 实现接收器 4.1.4 建立接收器与连接点的连接 4.1.5 获得出接口的类型信息 4.2 结构化存储 4.2.1 什么叫结构化存储和复合文件 4.2.2 存储对象和IStorage接口 4.2.2.1 IStorage接口 4.2.2.2 获得IStorage指针 4.2.2.3 释放STATSTG内存 4.2.2.4 枚举存储对象中的元

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧