无法从 C# 中的 COM 对象获取最后的错误
Can't get last errors from COM Object in C#
我的C#
代码:
bvt = Activator.CreateInstance(Type.GetTypeFromProgID("xxx.BVT"));
// calling a function that terminates with an error
bvt.GiveMeAnError();
var msg = "";
long number = 0L;
bvt.GetLastError(number, msg);
result = "Errornumber:"+ number + " Errormessage:"+ msg;
结果是:
"Errornumber:0 Errormessage:"
我的问题是函数 GetLastError()
。 Number
和 msg
应该包含执行此函数后的 errornumber
和 message
。但他们还是empty
.
有人可以帮助我吗?
* 编辑 *
我用 VBScript 执行了以下代码:
Dim StdOut
Set StdOut = WScript.StdOut
Set bvt = CreateObject( "xxx.BVT" )
bvt.GiveMeAnError()
bIsLastErr = bvt.GetLastError( ErrNo, ErrMsg )
StdOut.WriteLine( "Erronumber: " & ErrNo & ", Errormessage: " & ErrMsg )
这个带有 cscript 的 VBScript 工作正常。我也得到了错误信息和号码。所以 GetLastError() 方法有效。
您需要通过引用传递变量,因为它们显然是在方法中设置的:
bvt.GetLastError(ref number, ref msg);
谢谢 CodeCaster!
问题是 "var" 和 "long"。当然,您必须通过引用传递变量。这是我的工作代码:
object number = null;
object msg = null;
// ... do some stuff with Errors ...
bvt.GetLastError(ref number, ref msg);
return "" + number.ToString() +" - " + msg.ToString() + "\n";
我的C#
代码:
bvt = Activator.CreateInstance(Type.GetTypeFromProgID("xxx.BVT"));
// calling a function that terminates with an error
bvt.GiveMeAnError();
var msg = "";
long number = 0L;
bvt.GetLastError(number, msg);
result = "Errornumber:"+ number + " Errormessage:"+ msg;
结果是:
"Errornumber:0 Errormessage:"
我的问题是函数 GetLastError()
。 Number
和 msg
应该包含执行此函数后的 errornumber
和 message
。但他们还是empty
.
有人可以帮助我吗?
* 编辑 *
我用 VBScript 执行了以下代码:
Dim StdOut
Set StdOut = WScript.StdOut
Set bvt = CreateObject( "xxx.BVT" )
bvt.GiveMeAnError()
bIsLastErr = bvt.GetLastError( ErrNo, ErrMsg )
StdOut.WriteLine( "Erronumber: " & ErrNo & ", Errormessage: " & ErrMsg )
这个带有 cscript 的 VBScript 工作正常。我也得到了错误信息和号码。所以 GetLastError() 方法有效。
您需要通过引用传递变量,因为它们显然是在方法中设置的:
bvt.GetLastError(ref number, ref msg);
谢谢 CodeCaster!
问题是 "var" 和 "long"。当然,您必须通过引用传递变量。这是我的工作代码:
object number = null;
object msg = null;
// ... do some stuff with Errors ...
bvt.GetLastError(ref number, ref msg);
return "" + number.ToString() +" - " + msg.ToString() + "\n";