MyException - 我的异常网
当前位置:我的异常网» VC/MFC » vbs 调用 ALT生成的com组件不成功,该如何处理

vbs 调用 ALT生成的com组件不成功,该如何处理

www.MyException.Cn  网友分享于:2013-03-26  浏览:101次
vbs 调用 ALT生成的com组件不成功
1用vc6.0下的ATL COM AppWizard向导生成了一个dll的工程
2然后添加了一个ATL Object对象在工程里, 类名CPostFile, 接口名IPostFile
3在接口IPostFile中添加了一个方法Post, 编译成功, 手动注册
4用OLE能查找到注册信息
5使用C++代码调试, 成功调用. 代码如下:

// testcom.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"

#include "objbase.h"
#include "..\UpLoadFile.h"
#include "..\UpLoadFile_i.c"

int main(int argc, char* argv[])
{

CoInitialize(NULL);

IPostFile * pPostFile = NULL;
CoCreateInstance( CLSID_PostFile, NULL, CLSCTX_INPROC, IID_IPostFile, (void**)&pPostFile);

pPostFile->Post( "www.ohno.com", "c:\\a.txt");

printf("Hello World!\n");


return 0;
}


问题是: 为什么VBS中调用不成功, 出错行数为第3行cPost.Post. vbs调用代码如下:

'创建一个COM组件类
Set cPost = CreateObject("UpLoadFile.PostFile")
cPost.Post "",""
'释放对象
Set cPost = Nothing



idl文件信息:
// UpLoadFile.idl : IDL source for UpLoadFile.dll
//

// This file will be processed by the MIDL tool to
// produce the type library (UpLoadFile.tlb) and marshalling code.

import "oaidl.idl";
import "ocidl.idl";
[
object,
uuid(1B852AA0-6B4A-4481-92EE-7576BDDE88EB),
helpstring("IPostFile Interface"),
pointer_default(unique)
]
interface IPostFile : IUnknown
{
HRESULT Post( [in] LPCSTR pHttp, [in] LPCSTR pFile);
};

[
uuid(603E46E3-4EE5-4BC2-82D4-3ACFF88E3C7A),
version(1.0),
helpstring("UpLoadFile 1.0 Type Library")
]
library UPLOADFILELib
{
importlib("stdole32.tlb");
importlib("stdole2.tlb");

[
uuid(038763CB-253B-41E7-A04E-92F283E7C740),
helpstring("PostFile Class")
]
coclass PostFile
{
[default] interface IPostFile;
};
};


PostFile.h信息
// PostFile.h : Declaration of the CPostFile

#ifndef __POSTFILE_H_
#define __POSTFILE_H_

#include "resource.h"       // main symbols

/////////////////////////////////////////////////////////////////////////////
// CPostFile
class ATL_NO_VTABLE CPostFile : 
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CPostFile, &CLSID_PostFile>,
public IPostFile
{
public:
CPostFile()
{
}

DECLARE_REGISTRY_RESOURCEID(IDR_POSTFILE)

DECLARE_PROTECT_FINAL_CONSTRUCT()

BEGIN_COM_MAP(CPostFile)
COM_INTERFACE_ENTRY(IPostFile)
END_COM_MAP()

// IPostFile
public:
STDMETHOD(Post)(LPCSTR pHttp, LPCSTR pFile);
};

#endif //__POSTFILE_H_


PostFile.rgs信息

HKCR
{
UpLoadFile.PostFile.1 = s 'PostFile Class'
{
CLSID = s '{038763CB-253B-41E7-A04E-92F283E7C740}'
}
UpLoadFile.PostFile = s 'PostFile Class'
{
CLSID = s '{038763CB-253B-41E7-A04E-92F283E7C740}'

文章评论

软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有