首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何传递BarTender.Messages类型的参数

如何传递BarTender.Messages类型的参数
EN

Stack Overflow用户
提问于 2019-10-21 07:55:05
回答 1查看 219关注 0票数 1

我尝试使用Jacob1.19库将Java应用程序与Bartender接口集成。我对打印方法有问题,因为我不知道如何从雅各布那里调用这个方法。我尝试了以下代码:

代码语言:javascript
复制
public void print( String printJobName, Boolean waitForSpoolJobToComplete, Integer timeoutMs )
    {    
     Variant args[] = new Variant[ 4 ];
     args[ 0 ] = new Variant( printJobName );
     args[ 1 ] = new Variant( waitForSpoolJobToComplete );
     args[ 2 ] = new Variant( timeoutMs );
     args[ 3 ] = new Variant();
     args[ 3 ].putNoParam();
     Variant ret = format.invoke( "Print", args );
}

其中,格式是一个.com.jacob.activeX.ActiveXComponent实例,我得到了异常:

遇到COM异常:在调用:打印描述: 80020005 /类型不匹配。

我认为Messages参数会导致此异常。如何传递这一论点?

EN

回答 1

Stack Overflow用户

发布于 2019-10-24 04:09:22

不是100%确定代码,因为我没有尝试下面的代码。如果发生任何Java错误,请纠正我。

帮助海鸥上读了几遍

1.声明BarTender变量

代码语言:javascript
复制
ActiveXComponent btApp = new ActiveXComponent( "BarTender.Application" );

2.编写Format.Print函数

代码语言:javascript
复制
//Format.Print: Returns an object of btPrnRslt
public boolean print( String printJobName, Boolean waitForSpoolJobToComplete, Integer timeoutMs, Variant btMsgCol )
{    
    Variant args[] = new Variant[ 4 ];
    args[ 0 ] = new Variant( printJobName );
    args[ 1 ] = new Variant( waitForSpoolJobToComplete );
    args[ 2 ] = new Variant( timeoutMs );
    args[ 3 ] = new Variant( btMsgCol ); 

    Variant result = format.invoke( "Print", args );

    //if (btPrnRslt <> btPrnRsltSuccess)
    //    return false;
    //else
    //    return true;
}

3.测试运行

代码语言:javascript
复制
if (myFormat.print(firstJob, true, timeOutMS, btMsgCol))
    //Do something if success
else
    //Do something not success
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58482026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档