Windows XP VB6でFAXを送信するソフトを作成しています。
FAXをFAXコンソールに追加した後、そのFAXが処理中か待機中か再施行中なのか状態を取得したいのですがうまくいきません。
送信と状態の取得には、faxcomを使用しています。
状態を取得するソースを以下に記します。
Public Sub FaxQueStatusGet()
Dim objFaxServer As FaxServer
Dim strFaxJob As FaxJobs
Dim strFaxStatus As FaxJob
Dim lngCount As Long
On Error Resume Next
Set objFaxServer = CreateObject("FaxServer.FaxServer")
objFaxServer.Connect CreateObject("WScript.Network").ComputerName
Set strFaxJob = objFaxServer.GetJobs()
For lngCount = strFaxJob.Count To 1 Step -1
Set strFaxStatus = strFaxJob.Item(lngCount)
Debug.Print strFaxStatus.QueueStatus
Next lngCount
End Sub
実行すると、FAXモニタでは処理中、待機中、再施行中などの状態であっても
常に[Pending]を返します。
このソースをWindows2000で実行した場合は、[処理中、待機中、再施行中]などが
返ってきました。
参考になる情報があれば教えていただけると助かります。
Windows 2000とWindows XP 以降とに変更があるようです。
そこらへんは大丈夫でしょうか?
XPは標準のFAXコンソールが管理できるFAX台数が1台と制限されています
%Windir%\system32にあるfxscomex.dllを参照設定します。
\ faxcom.dllも同じディレクトリにありましたが旧インターフェイスとなり
\ 優先度の設定ができないなどの違いがあります。
http://ubnok.jugem.jp/?month=200407
Windows 2000
(faxcom 1.0 Type Library を参照)
Windows XP 以降
(Microsoft Fax Service Extended COM Type Library を参照)
情報ありがとうございます。
XPでは、fxscomex.dllを使わないとダメなんですね。
参考のHPを元にFAX送信を行うことはできました。
そのJOBのIDからJOBの状態を取得するところを調べているところです。
実行中のJOB数、処理待ちのJOB数などは解るのですが、個々のJOBの状態を
取得する方法が見つかりません。
よく解っていないのですが、勝手に作成されているログファイルから取得するしかないのかな?
faxcom.dllとfxscomex.dllがかなり別物だったので調べるのに
苦労しましたが、解決しました。
WithEventsを使ってFAXServerのEventを作成することで、
FAXの状態を取得することができました。
WithEventsも初めて使用しましたがいい勉強になりました。
ありがとうございます。
アー、FAX送受信は、解決済みですが
facom.dllの場合だとPDFを送信するファイルとして扱えたのですが、
fxscomex.dllの場合だとエラーになります。(Err = Operation failed.)
何か解る方いましたら連絡ください。
どこかでMicrosoftとAdobe社の相性だとか聞いた気もします。。
FAX送信がVBから作成出来ないか試行錯誤しながら作成していますが、FAX送信状況がつかめなく困っています
やっと参考できる記述にめぐり合ったのですが、
WithEventsを使ってFAXServerのEventを作成とあるのですが設定方法のご教授をお願いします
よろしくお願いいたします
解決済みのスレッドに便乗質問しても返事は来ないと思った方がよい。
編集 削除