我有一个用vb6编写的activeX dll。在该代码中,它使用LoadResPicture()
加载图像,然后将其发送到打印机(使用PaintPicture
)
如果我使用ASPX页面调用此DLL,该页面托管在运行IIS 7.0的Windows 2008盒子上,则不会打印图像。
如果我在同一台服务器上使用VBS脚本调用此DLL,则图像打印正常。
当aspx页面托管在Windows 2000 Server上时用于打印的图像。
以下是VBS代码:
Dim CheckCtl
set CheckCtl = CreateObject("CHECKCONTROL.CHECK")
CheckCtl.FBOAccountID = 2765
CheckCtl.includesignature = True
CheckCtl.Amount = 500.00
CheckCtl.CheckDate = #04/06/2011#
CheckCtl.Payee_L1 = "Donald Trump"
CheckCtl.Payee_L2 = "10 Park Place"
CheckCtl.Payee_L3 = "Atlantic City, NJ 00011"
CheckCtl.Payee_L4 = ""
CheckCtl.Notes = "This is a test check"
CheckCtl.SubmittedBy = "Accountant"
dim lSuccess
lSuccess = CheckCtl.Printcheck()
这是ASPX VB.NET代码:
Dim CheckCtl As checkcontrolNET.Check
CheckCtl = New checkcontrolNET.Check
CheckCtl.FBOAccountId = 2765
CheckCtl.IncludeSignature = True
CheckCtl.Amount = 500.0
CheckCtl.CheckDate = "04/06/2011"
CheckCtl.Payee_L1 = "Donald Trump"
CheckCtl.Payee_L2 = "10 Park Place"
CheckCtl.Payee_L3 = "Atlantic City, NJ 00011"
CheckCtl.Payee_L4 = ""
CheckCtl.notes = "This is a test check"
CheckCtl.SubmittedBy = "Accountant"
Dim lSuccess As Boolean
lSuccess = CheckCtl.printcheck()
Response.Write(lSuccess)
我错过了什么?
答案 0 :(得分:1)
您的服务器是64位吗?根据MSDN,该功能的.Net版本仅支持32位版本,因此对于VB6版本可能也是如此。
答案 1 :(得分:1)
我找到了用于VB ActiveX的COM +方法,IIS很古怪。我希望你能控制VB6 Dlls代码,如果有的话,试着把这段代码放到你试图实例化的VB6类中。
Private moScriptCtx As ScriptingContext
Public Sub OnStartPage(SC As ScriptingContext)
Set moScriptCtx = SC
End Sub
您现在可以访问请求,响应,服务器等作为moScriptCtx对象的属性。在CreateObject执行期间,ASP会自动为您调用OnStartPage()
。
[编辑]
如果您不使用ASP的内在属性,但在COM +管理控制台上尝试启用它,这可能对您的情况没有用。
Fire up the COM+ management consoleo
Find the COM+ Application in questiono
Find the applicable component in the 'Components' folder
Right click on it and choose properties
Select the Advanced tab
Check the 'Allow IIS Intrinsic Properties' checkbox
答案 2 :(得分:0)
这听起来像是权限问题。我怀疑您的Windows 2000服务器在SYSTEM
帐户下运行IIS,并且可能对旧的ASPNET
工作进程帐户执行相同操作。
检查运行该网站的帐户是否具有打印权限。根据您保护网站的方式,这可能是以下任何一个:
IUSR
帐户