- このトピックは空です。
-
投稿者投稿
-
2021年7月1日 9:23 AM #2040
若本
ゲストVB6(SP5)を利用してWR30を使用しているDLLを作成し、そのDLLのインスタンスを内部でServer.CreateObjectで作成し利用するASPファイルを他のPCのブラウザ(IE6.1)から呼び出すとエラーが出るという現象で困っています。問題のDLL(コードは後述します)は、ローカルで実行されるプログラム(これもVB6で作成しました)から呼び出される場合は問題無く作動します。また、NT4.0とIIS4上でも問題無く作動しますが、Windows2000とIIS5.0の場合にエラーが出ます。
DLLのコードは以下のようなものです。
Public Function Test_CreatePrinter() As String
Dim h_Printer As Long
Dim strAns As String
Dim lngErrCode As Long
Dim blnOK As Boolean
Dim strPname As StringblnOK = CBool(WRInit(lngErrCode))
If blnOK Then
strPname = “”
‘blnOK = CBool(WRGetPrinterDevices(h_PRinter))
h_Printer = WRPCreatePrinter(strPname)
If h_Printer > 0 Then
strAns = “OK” & h_Printer
Else
blnOK = WRGetLastErrorCode(lngErrCode)
strAns = “Error WRPCreatePrinter ” & CStr(lngErrCode)
End If
Else
blnOK = WRGetLastErrorCode(lngErrCode)
blnOK = WRExit(lngErrCode)
strAns = “Error WRInit ” & CStr(lngErrCode)
End If
Test_CreatePrinter = strAns
End Function
上記コードをクラスモジュールに貼り付け、標準モジュールには製品に添付されていたWR30VBAPI.basを加え、コンパイルします。
このDLLを下記のASPファイルから呼び出します。
<%
dim Obj
dim ansset obj = server.CreateObject(“WR_TEST.Class1”)
ans = obj.Test_CreatePrinter()
Response.contentType = “text/xml”
Response.write ans
%>
このASPファイルはxmlを返しませんのでブラウザ側でエラーになりますが、変数ansの内容はわかります。
ブラウザからhttp://www.MyServer/MyDir/MyASP.aspのかたちで呼び出すとWRPCreatePrinter()が、エラー番号10103を返します。コメントにしたWRGetPrinterDevices()も合わせて実行するとエラー番号50000を返してきます。
いまわかっているのはここまでで、問題の所在はプログラムか、IISの設定か、PC個別の環境か、WRCIF30.DLLか判然としない状況ですので、ご検討をお願いします。2021年7月1日 9:23 AM #2041松嶋@ソフトウィング
ゲストお世話になります。
>Windows2000とIIS5.0の場合にエラーが出ます。
上記内容についてですが、ご連絡頂きましたソースをWin2k
上で通常のアプリ(EXE)として実行した場合も含まれます
か?また、Win2kのIIS5にて実行した場合のみ発生するのでし
ょうか?
私の理解不足で申し訳ありませんが、お知らせ下さい。※IISは通常システムのサービスとして動作しております。ま
た、サービスの実行ユーザーは初期値として”System”が
使用されます。当ユーザーにはプリンターの通常使用す
るプリンターは設定されませんので、印刷処理を行う場
合に問題が発生します。
対応方法としてはユーザー”System”に通常使用するプリン
ターを追加するか、IISのサービスを動作させるユーザー
を別のユーザーにする。又は、WingReportのプリンターオ
ブジェクトを作成する場合にプリンター名を指定する方法
があります。以上です。宜しくお願い致します。
2021年7月1日 9:23 AM #2042若本
ゲストお送りしたコードのフォーマットがプアーでお手数をおかけしました。また、ASPのコードを貼り付けたつもりでしたが、忘れていたようで、失礼しました。
さて、お尋ねの件ですが、Win2K上では、通常のexeとして実行した場合は問題なくプリンタは作成されます。また、dllのままでも他のexeから呼び出した場合は問題ありません。IIS5.0の管理下に入ったときだけエラーが発生します。また、正しいプリンタ名を指定してWRPCreatePrinter関数を呼び出すとエラー番号10101が返ってきます。
以上です。ご検討をよろしくお願いします。
2021年7月1日 9:24 AM #2043松嶋@ソフトウィング
ゲストご連絡有難うございます。
ASPで動作させた場合に不具合が発生する現象から、サービス
(IIS)のユーザーに問題があるようです。「Administrator」
に設定して動作確認を行って下さい。もし、正常に動作する
のであればサービスのユーザーを変更するか、Systemユーザ
ーにプリンター情報を設定する必要があります。※「System」ユーザーについて、前回の説明が不足しており
ました。「デフォルトプリンターが存在しない」だけでは
なく、プリンターが存在(セットアップ)されておりませ
ん。インストール方法につきましては、マイクロソフト社
のHPから検索する事が出来ます。
support.microsoft.com/default.aspx?scid=kb;ja;419321以上です。宜しくお願い致します。
2021年7月1日 9:25 AM #2044若本
ゲスト本件に関して非常に長い間何らご連絡を差し上げずに失礼しました。
その後、いろいろ調べましたところ、マイクロソフトのサポート時術情報のQ184291 “COM Object Fail to Print When Called From ASP”がこの問題の正しい解決策だと思います。 -
投稿者投稿
- フォーラム「旧サポート掲示板」には新規投稿および返信を追加できません。