打印

楼主一定要**,“不跑气,不放气”

[复制链接]
7305|23
手机看帖
扫描二维码
随时随地手机跟帖
沙发
hotpower|  楼主 | 2008-5-28 00:09 | 只看该作者

RTDXINT.h

// Created by Microsoft (R) C/C++ Compiler Version 12.00.8168.0 (60595da8).
//
// e:workccsook tdxintdebug tdxint.tlh
//
// C++ source equivalent of Win32 type library e: iccin tdxint.dll
// compiler-generated file created 06/15/04 at 11:39:01 - DO NOT EDIT!

#pragma once
#pragma pack(push, 8)

#include <comdef.h>

namespace RTDXINTLib {

//
// Forward references and typedefs
//

struct /* coclass */ RtdxExp;
struct __declspec(uuid("2fe5666f-3e4e-11d2-a964-006097a6a260"))
/* dual interface */ IRtdxExp;

//
// Smart pointer typedef declarations
//

_COM_SMARTPTR_TYPEDEF(IRtdxExp, __uuidof(IRtdxExp));

//
// Type library items
//

struct __declspec(uuid("2fe56670-3e4e-11d2-a964-006097a6a260"))
RtdxExp;
    // [ default ] interface IRtdxExp

struct __declspec(uuid("2fe5666f-3e4e-11d2-a964-006097a6a260"))
IRtdxExp : IDispatch
{
    //
    // Wrapper methods for error-handling
    //

    long Open (
        _bstr_t Channel_String,
        _bstr_t Read_Write );
    long Close ( );
    long Read (
        VARIANT * pArr,
        long dataType,
        long numBytes );
    long ReadI1 (
        unsigned char * pData );
    long ReadI2 (
        short * pData );
    long ReadI4 (
        long * pData );
    long ReadF4 (
        float * pData );
    long ReadF8 (
        double * pData );
    long ReadSAI1 (
        VARIANT * pArr );
    long ReadSAI2 (
        VARIANT * pArr );
    long ReadSAI4 (
        VARIANT * pArr );
    long ReadSAF4 (
        VARIANT * pArr );
    long ReadSAF8 (
        VARIANT * pArr );
    _variant_t ReadSAI2V (
        long * pStatus );
    _variant_t ReadSAI4V (
        long * pStatus );
    long WriteI1 (
        unsigned char Data,
        long * numBytes );
    long WriteI2 (
        short Data,
        long * numBytes );
    long WriteI4 (
        long Data,
        long * numBytes );
    long WriteF4 (
        float Data,
        long * numBytes );
    long WriteF8 (
        double Data,
        long * numBytes );
    long Write (
        const _variant_t & Arr,
        long * numBytes );
    long Rewind ( );
    long Flush ( );
    long Seek (
        long MsgNum );
    long SeekData (
        long numBytes );
    long StatusOfWrite (
        long * numBytes );
    long GetNumMsgs (
        long * pNum );
    long GetChannelID (
        _bstr_t Channel_String,
        long * chanId );
    long GotoNextMsg ( );
    long GetMsgID (
        long * pMsgId );
    long GetMsgNumber (
        long * pMsgNum );
    long GetMsgLength (
        long * pLength );
    long EnableRtdx ( );
    long DisableRtdx ( );
    long EnableChannel (
        _bstr_t ChannelName );
    long DisableChannel (
        _bstr_t ChannelName );
    long GetChannelStatus (
        _bstr_t ChannelName,
        long * pChannelStatus );
    long ConfigureRtdx (
        short Mode,
        long MainBufferSize,
        long NumOfMainBuffers );
    long ConfigureLogFile (
        _bstr_t FileName,
        long FileSize,
        short FileFullMode,
        short FileOpenMode );
    long GetRTDXRev (
        long * RevNum );
    long GetStatusString (
        BSTR * StatusString );
    long GetCapability (
        long * Capability );
    long RunDiagnostics (
        short TestType,
        long TestMode,
        long TestInfo );
    _bstr_t GetDiagFilePath (
        short TestType );
    long SetProcessor (
        _bstr_t Board,
        _bstr_t Cpu );

    //
    // Raw methods provided by interface
    //

    virtual HRESULT __stdcall raw_Open (
        BSTR Channel_String,
        BSTR Read_Write,
        long * pStatus ) = 0;
    virtual HRESULT __stdcall raw_Close (
        long * pStatus ) = 0;
    virtual HRESULT __stdcall raw_Read (
        VARIANT * pArr,
        long dataType,
        long numBytes,
        long * pStatus ) = 0;
    virtual HRESULT __stdcall raw_ReadI1 (
        unsigned char * pData,
        long * pStatus ) = 0;
    virtual HRESULT __stdcall raw_ReadI2 (
        short * pData,
        long * pStatus ) = 0;
    virtual HRESULT __stdcall raw_ReadI4 (
        long * pData,
        long * pStatus ) = 0;
    virtual HRESULT __stdcall raw_ReadF4 (
        float * pData,
        long * pStatus ) = 0;
    virtual HRESULT __stdcall raw_ReadF8 (
        double * pData,
        long * pStatus ) = 0;
    virtual HRESULT __stdcall raw_ReadSAI1 (
        VARIANT * pArr,
        long * pStatus ) = 0;
    virtual HRESULT __stdcall raw_ReadSAI2 (
        VARIANT * pArr,
        long * pStatus ) = 0;
    virtual HRESULT __stdcall raw_ReadSAI4 (
        VARIANT * pArr,
        long * pStatus ) = 0;
    virtual HRESULT __stdcall raw_ReadSAF4 (
        VARIANT * pArr,
        long * pStatus ) = 0;
    virtual HRESULT __stdcall raw_ReadSAF8 (
        VARIANT * pArr,
        long * pStatus ) = 0;
    virtual HRESULT __stdcall raw_ReadSAI2V (
        long * pStatus,
        VARIANT * pArr ) = 0;
    virtual HRESULT __stdcall raw_ReadSAI4V (
        long * pStatus,
        VARIANT * pArr ) = 0;
    virtual HRESULT __stdcall raw_WriteI1 (
        unsigned char Data,
        long * numBytes,
        long * pStatus ) = 0;
    virtual HRESULT __stdcall raw_WriteI2 (
        short Data,
        long * numBytes,
        long * pStatus ) = 0;
    virtual HRESULT __stdcall raw_WriteI4 (
        long Data,
        long * numBytes,
        long * pStatus ) = 0;
    virtual HRESULT __stdcall raw_WriteF4 (
        float Data,
        long * numBytes,
        long * pStatus ) = 0;
    virtual HRESULT __stdcall raw_WriteF8 (
        double Data,
        long * numBytes,
        long * pStatus ) = 0;
    virtual HRESULT __stdcall raw_Write (
        VARIANT Arr,
        long * numBytes,
        long * pStatus ) = 0;
    virtual HRESULT __stdcall raw_Rewind (
        long * pStatus ) = 0;
    virtual HRESULT __stdcall raw_Flush (
        long * pStatus ) = 0;
    virtual HRESULT __stdcall raw_Seek (
        long MsgNum,
        long * pStatus ) = 0;
    virtual HRESULT __stdcall raw_SeekData (
        long numBytes,
        long * pStatus ) = 0;
    virtual HRESULT __stdcall raw_StatusOfWrite (
        long * numBytes,
        long * pStatus ) = 0;
    virtual HRESULT __stdcall raw_GetNumMsgs (
        long * pNum,
        long * pStatus ) = 0;
    virtual HRESULT __stdcall raw_GetChannelID (
        BSTR Channel_String,
        long * chanId,
        long * pStatus ) = 0;
    virtual HRESULT __stdcall raw_GotoNextMsg (
        long * pStatus ) = 0;
    virtual HRESULT __stdcall raw_GetMsgID (
        long * pMsgId,
        long * pStatus ) = 0;
    virtual HRESULT __stdcall raw_GetMsgNumber (
        long * pMsgNum,
        long * pStatus ) = 0;
    virtual HRESULT __stdcall raw_GetMsgLength (
        long * pLength,
        long * pStatus ) = 0;
    virtual HRESULT __stdcall raw_EnableRtdx (
        long * pStatus ) = 0;
    virtual HRESULT __stdcall raw_DisableRtdx (
        long * pStatus ) = 0;
    virtual HRESULT __stdcall raw_EnableChannel (
        BSTR ChannelName,
        long * pStatus ) = 0;
    virtual HRESULT __stdcall raw_DisableChannel (
        BSTR ChannelName,
        long * pStatus ) = 0;
    virtual HRESULT __stdcall raw_GetChannelStatus (
        BSTR ChannelName,
        long * pChannelStatus,
        long * pStatus ) = 0;
    virtual HRESULT __stdcall raw_ConfigureRtdx (
        short Mode,
        long MainBufferSize,
        long NumOfMainBuffers,
        long * pStatus ) = 0;
    virtual HRESULT __stdcall raw_ConfigureLogFile (
        BSTR FileName,
        long FileSize,
        short FileFullMode,
        short FileOpenMode,
        long * pStatus ) = 0;
    virtual HRESULT __stdcall raw_GetRTDXRev (
        long * RevNum,
        long * pStatus ) = 0;
    virtual HRESULT __stdcall raw_GetStatusString (
        BSTR * StatusString,
        long * pStatus ) = 0;
    virtual HRESULT __stdcall raw_GetCapability (
        long * Capability,
        long * pStatus ) = 0;
    virtual HRESULT __stdcall raw_RunDiagnostics (
        short TestType,
        long TestMode,
        long TestInfo,
        long * pStatus ) = 0;
    virtual HRESULT __stdcall raw_GetDiagFilePath (
        short TestType,
        BSTR * pPath ) = 0;
    virtual HRESULT __stdcall raw_SetProcessor (
        BSTR Board,
        BSTR Cpu,
        long * pStatus ) = 0;
};

//
// Wrapper method implementations
//

#include "G:ccs_exampleRTDXINT tdxint.tli"

#define Success 0x0L
#define Failure 0x80004005L
#define ENoDataAvailable 0x8003001EL
#define EEndOfLogFile 0x80030002L

} // namespace RTDXINTLib

#pragma pack(pop)

使用特权

评论回复
板凳
hotpower|  楼主 | 2008-5-28 00:11 | 只看该作者

rtdxint_imp.h

// Created by Microsoft (R) C/C++ Compiler Version 12.00.8168.0 (60595da8).
//
// e:workccsook tdxintdebug tdxint.tli
//
// Wrapper implementations for Win32 type library e: iccin tdxint.dll
// compiler-generated file created 06/15/04 at 11:39:01 - DO NOT EDIT!

#pragma once

//
// interface IRtdxExp wrapper method implementations
//

inline long IRtdxExp::Open ( _bstr_t Channel_String, _bstr_t Read_Write ) {
    long _result;
    HRESULT _hr = raw_Open(Channel_String, Read_Write, &_result);
    if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
    return _result;
}

inline long IRtdxExp::Close ( ) {
    long _result;
    HRESULT _hr = raw_Close(&_result);
    if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
    return _result;
}

inline long IRtdxExp::Read ( VARIANT * pArr, long dataType, long numBytes ) {
    long _result;
    HRESULT _hr = raw_Read(pArr, dataType, numBytes, &_result);
    if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
    return _result;
}

inline long IRtdxExp::ReadI1 ( unsigned char * pData ) {
    long _result;
    HRESULT _hr = raw_ReadI1(pData, &_result);
    if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
    return _result;
}

inline long IRtdxExp::ReadI2 ( short * pData ) {
    long _result;
    HRESULT _hr = raw_ReadI2(pData, &_result);
    if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
    return _result;
}

inline long IRtdxExp::ReadI4 ( long * pData ) {
    long _result;
    HRESULT _hr = raw_ReadI4(pData, &_result);
    if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
    return _result;
}

inline long IRtdxExp::ReadF4 ( float * pData ) {
    long _result;
    HRESULT _hr = raw_ReadF4(pData, &_result);
    if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
    return _result;
}

inline long IRtdxExp::ReadF8 ( double * pData ) {
    long _result;
    HRESULT _hr = raw_ReadF8(pData, &_result);
    if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
    return _result;
}

inline long IRtdxExp::ReadSAI1 ( VARIANT * pArr ) {
    long _result;
    HRESULT _hr = raw_ReadSAI1(pArr, &_result);
    if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
    return _result;
}

inline long IRtdxExp::ReadSAI2 ( VARIANT * pArr ) {
    long _result;
    HRESULT _hr = raw_ReadSAI2(pArr, &_result);
    if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
    return _result;
}

inline long IRtdxExp::ReadSAI4 ( VARIANT * pArr ) {
    long _result;
    HRESULT _hr = raw_ReadSAI4(pArr, &_result);
    if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
    return _result;
}

inline long IRtdxExp::ReadSAF4 ( VARIANT * pArr ) {
    long _result;
    HRESULT _hr = raw_ReadSAF4(pArr, &_result);
    if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
    return _result;
}

inline long IRtdxExp::ReadSAF8 ( VARIANT * pArr ) {
    long _result;
    HRESULT _hr = raw_ReadSAF8(pArr, &_result);
    if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
    return _result;
}

inline _variant_t IRtdxExp::ReadSAI2V ( long * pStatus ) {
    VARIANT _result;
    VariantInit(&_result);
    HRESULT _hr = raw_ReadSAI2V(pStatus, &_result);
    if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
    return _variant_t(_result, false);
}

inline _variant_t IRtdxExp::ReadSAI4V ( long * pStatus ) {
    VARIANT _result;
    VariantInit(&_result);
    HRESULT _hr = raw_ReadSAI4V(pStatus, &_result);
    if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
    return _variant_t(_result, false);
}

inline long IRtdxExp::WriteI1 ( unsigned char Data, long * numBytes ) {
    long _result;
    HRESULT _hr = raw_WriteI1(Data, numBytes, &_result);
    if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
    return _result;
}

inline long IRtdxExp::WriteI2 ( short Data, long * numBytes ) {
    long _result;
    HRESULT _hr = raw_WriteI2(Data, numBytes, &_result);
    if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
    return _result;
}

inline long IRtdxExp::WriteI4 ( long Data, long * numBytes ) {
    long _result;
    HRESULT _hr = raw_WriteI4(Data, numBytes, &_result);
    if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
    return _result;
}

inline long IRtdxExp::WriteF4 ( float Data, long * numBytes ) {
    long _result;
    HRESULT _hr = raw_WriteF4(Data, numBytes, &_result);
    if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
    return _result;
}

inline long IRtdxExp::WriteF8 ( double Data, long * numBytes ) {
    long _result;
    HRESULT _hr = raw_WriteF8(Data, numBytes, &_result);
    if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
    return _result;
}

inline long IRtdxExp::Write ( const _variant_t & Arr, long * numBytes ) {
    long _result;
    HRESULT _hr = raw_Write(Arr, numBytes, &_result);
    if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
    return _result;
}

inline long IRtdxExp::Rewind ( ) {
    long _result;
    HRESULT _hr = raw_Rewind(&_result);
    if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
    return _result;
}

inline long IRtdxExp::Flush ( ) {
    long _result;
    HRESULT _hr = raw_Flush(&_result);
    if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
    return _result;
}

inline long IRtdxExp::Seek ( long MsgNum ) {
    long _result;
    HRESULT _hr = raw_Seek(MsgNum, &_result);
    if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
    return _result;
}

inline long IRtdxExp::SeekData ( long numBytes ) {
    long _result;
    HRESULT _hr = raw_SeekData(numBytes, &_result);
    if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
    return _result;
}

inline long IRtdxExp::StatusOfWrite ( long * numBytes ) {
    long _result;
    HRESULT _hr = raw_StatusOfWrite(numBytes, &_result);
    if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
    return _result;
}

inline long IRtdxExp::GetNumMsgs ( long * pNum ) {
    long _result;
    HRESULT _hr = raw_GetNumMsgs(pNum, &_result);
    if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
    return _result;
}

inline long IRtdxExp::GetChannelID ( _bstr_t Channel_String, long * chanId ) {
    long _result;
    HRESULT _hr = raw_GetChannelID(Channel_String, chanId, &_result);
    if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
    return _result;
}

inline long IRtdxExp::GotoNextMsg ( ) {
    long _result;
    HRESULT _hr = raw_GotoNextMsg(&_result);
    if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
    return _result;
}

inline long IRtdxExp::GetMsgID ( long * pMsgId ) {
    long _result;
    HRESULT _hr = raw_GetMsgID(pMsgId, &_result);
    if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
    return _result;
}

inline long IRtdxExp::GetMsgNumber ( long * pMsgNum ) {
    long _result;
    HRESULT _hr = raw_GetMsgNumber(pMsgNum, &_result);
    if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
    return _result;
}

inline long IRtdxExp::GetMsgLength ( long * pLength ) {
    long _result;
    HRESULT _hr = raw_GetMsgLength(pLength, &_result);
    if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
    return _result;
}

inline long IRtdxExp::EnableRtdx ( ) {
    long _result;
    HRESULT _hr = raw_EnableRtdx(&_result);
    if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
    return _result;
}

inline long IRtdxExp::DisableRtdx ( ) {
    long _result;
    HRESULT _hr = raw_DisableRtdx(&_result);
    if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
    return _result;
}

inline long IRtdxExp::EnableChannel ( _bstr_t ChannelName ) {
    long _result;
    HRESULT _hr = raw_EnableChannel(ChannelName, &_result);
    if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
    return _result;
}

inline long IRtdxExp::DisableChannel ( _bstr_t ChannelName ) {
    long _result;
    HRESULT _hr = raw_DisableChannel(ChannelName, &_result);
    if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
    return _result;
}

inline long IRtdxExp::GetChannelStatus ( _bstr_t ChannelName, long * pChannelStatus ) {
    long _result;
    HRESULT _hr = raw_GetChannelStatus(ChannelName, pChannelStatus, &_result);
    if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
    return _result;
}

inline long IRtdxExp::ConfigureRtdx ( short Mode, long MainBufferSize, long NumOfMainBuffers ) {
    long _result;
    HRESULT _hr = raw_ConfigureRtdx(Mode, MainBufferSize, NumOfMainBuffers, &_result);
    if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
    return _result;
}

inline long IRtdxExp::ConfigureLogFile ( _bstr_t FileName, long FileSize, short FileFullMode, short FileOpenMode ) {
    long _result;
    HRESULT _hr = raw_ConfigureLogFile(FileName, FileSize, FileFullMode, FileOpenMode, &_result);
    if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
    return _result;
}

inline long IRtdxExp::GetRTDXRev ( long * RevNum ) {
    long _result;
    HRESULT _hr = raw_GetRTDXRev(RevNum, &_result);
    if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
    return _result;
}

inline long IRtdxExp::GetStatusString ( BSTR * StatusString ) {
    long _result;
    HRESULT _hr = raw_GetStatusString(StatusString, &_result);
    if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
    return _result;
}

inline long IRtdxExp::GetCapability ( long * Capability ) {
    long _result;
    HRESULT _hr = raw_GetCapability(Capability, &_result);
    if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
    return _result;
}

inline long IRtdxExp::RunDiagnostics ( short TestType, long TestMode, long TestInfo ) {
    long _result;
    HRESULT _hr = raw_RunDiagnostics(TestType, TestMode, TestInfo, &_result);
    if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
    return _result;
}

inline _bstr_t IRtdxExp::GetDiagFilePath ( short TestType ) {
    BSTR _result;
    HRESULT _hr = raw_GetDiagFilePath(TestType, &_result);
    if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
    return _bstr_t(_result, false);
}

inline long IRtdxExp::SetProcessor ( _bstr_t Board, _bstr_t Cpu ) {
    long _result;
    HRESULT _hr = raw_SetProcessor(Board, Cpu, &_result);
    if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
    return _result;
}

使用特权

评论回复
地板
hotpower|  楼主 | 2008-5-28 00:20 | 只看该作者

但愿俺不会又一次求助无望.....................

先谢谢了!!!!!!!

使用特权

评论回复
5
hotpower|  楼主 | 2008-5-28 12:48 | 只看该作者

可怜地无奈~~~

使用特权

评论回复
6
testcode| | 2008-5-28 13:08 | 只看该作者

Google到以下一则或许有用~~~

http://forums.ni.com/ni/board/message?board.id=180&message.id=30025

使用特权

评论回复
7
hotpower|  楼主 | 2008-5-28 22:49 | 只看该作者

真晕~~~CVI的in-process COM服务器几乎没有...

TestCode帮忙搜~~~

谢谢~~~

使用特权

评论回复
8
hotpower|  楼主 | 2008-5-29 04:02 | 只看该作者

继续求助~~~劳作搜索到天明...

使用特权

评论回复
9
hotpower|  楼主 | 2008-5-30 12:32 | 只看该作者

举白旗后10秒继续不放弃不抛弃

菜农要举白旗了,确实是很少的几次...有次事隔三年后终成正果~~~

这个俺又举起了白旗...准备用VC继续...

不过phoenixmy在10秒后帮俺解决了最弱智的问题~~~终于又能继续~~~

俺不想用TI给的VC例程~~~因为它几乎不涉及COM编程技术...所以俺不想应用...

累~~~2天了...睡了4个小时...查遍了"地球"...只找到些皮毛...

很是郁闷!!!

不过俺的第6感告诉俺肯定能"立地成佛"~~~

TI的RTDX之COM的秘密基本明白了250/1000~~~

不放弃不抛弃---想着"三多"

使用特权

评论回复
10
hotpower|  楼主 | 2008-5-30 12:40 | 只看该作者

哈哈~~~phoenixmy比老外厉害~~~

Hi phoenixmy,

You need to include the ole32.lib import library in your project. You can find this library in the <CVI>sdklib directory if you have the Windows SDK installed for CVI.  

I would like to add that you should really be calling CA_InitActiveXThreadStyleForCurrentThread instead of CoInitialize. CVI provides routines for using ActiveX, and this function initializes COM (by calling CoInitialize) and takes care of any other initialization CVI might need (ActiveX callbacks in multiple threads etc.)

Best Regards,

 

Jonathan N.
National Instruments 

使用特权

评论回复
11
xzhenggen| | 2008-5-30 13:12 | 只看该作者

你就不能用LABVIEW调用成功后,转DLL。

再用你的CVI调用,不就行了吗?OK!

使用特权

评论回复
12
McuPlayer| | 2008-5-30 18:51 | 只看该作者

楼主一定要**,“不跑气,不放气”

只知道函数名是不够的,参数的类型和个数也需要

使用特权

评论回复
13
hotpower|  楼主 | 2008-6-1 02:12 | 只看该作者

准备用COM接口调用,不接触DLL

现在遇到问题:
pIDispatch->lpVtbl->Invoke()后出错为"找不到成员"

例如:想调用Close()方法
status = pIDispatch->lpVtbl->GetIDsOfNames(pIDispatch,  
                                           (REFIID)NULL,
                                           (LPOLESTR*)L"Close",
                                           (UINT)0,
                                           (LCID)GetUserDefaultLCID(),
                                           &dispid);
status = pIDispatch->lpVtbl->Invoke(pIDispatch, 
                                    dispid,
                                    NULL, 
                                    GetUserDefaultLCID(), 
                                    DISPATCH_METHOD, 
                                    &dispparams, 
                                    NULL, 
                                    NULL, 
                                    NULL);

使用特权

评论回复
14
hotpower|  楼主 | 2008-6-1 09:16 | 只看该作者

终于看见"山顶"了,还差最后一个函数~~~

有事要出去...真不想停止探索~~~

晕!!!ni真没COM接口的实例,只能参考别的几种语言...实在是倒塌!!!
func = L"Close";//正确函数名称  
status = pIDispatch->lpVtbl->GetIDsOfNames(pIDispatch,  
                                           (REFIID)&IID_NULL,
                                           (LPOLESTR *)&func,//不能直接用L"Close"
                                           (UINT)1,//不用func只能写0,肯定不对
                                           (LCID)GetUserDefaultLCID(),
                                           (DISPID *)&dispid);//不用func不能返回函数的序号

使用特权

评论回复
15
phoenixmy| | 2008-6-1 09:32 | 只看该作者

哈哈哈


你的“穷举法”式编程终于要告一段落了~~~~~~~~~~~~~

穷举式编程太暴力,哈哈哈

使用特权

评论回复
16
hotpower|  楼主 | 2008-6-1 20:23 | 只看该作者

晕~~~只是亲身用COM编程的太少

下午去书店竟然没一本COM的专著...

还好,网上有各种语言的例子,不过能点透的真难找...

痛苦呀

使用特权

评论回复
17
hotpower|  楼主 | 2008-6-6 02:35 | 只看该作者

哈哈~~~21ic设这种坛子没必要~~~

使用特权

评论回复
18
hotpower|  楼主 | 2008-6-13 00:04 | 只看该作者

晕~~~不知这里的3位斑竹是吃什么干饭的~~~哈哈~~~退位吧

使用特权

评论回复
19
computer00| | 2008-6-13 01:26 | 只看该作者

俺没用过什么CVI,只会一点WDM驱动开发,哈哈~~~

使用特权

评论回复
20
hotpower|  楼主 | 2008-6-13 02:05 | 只看该作者

哈哈~~~足球教练常下课~~~

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1460

主题

21619

帖子

506

粉丝