只今、VB6のDataReportを使って帳票を作成しています。1つの雛型を使って、
複数のレポートを連続印刷しようとしていますが、DataReportとFormが非同期で
あるため、DataReportがまだ帳票をプリンタに吐き出し終わっていないうちに、次の帳票を作ろうとしてしまい、エラーが出てしまいます。
色々調べて、MoveMemoryなるAPIを使ってプリンタの状態(印刷中、とかスプール中とか)を取得しようとしていますが、それもエラーがでてしまいます。
どうしたら、上手にプリンタの状態を知ることが出来るでしょうか?
もしくは、非同期で動いているもの同士の同期を取るような方法がありましたら
ぜひ教えてください。
よろしくお願いします。
No.3ベストアンサー
- 回答日時:
こんにちは
VBが実行させたモジュールと自分を同期させる方法がWin32APIでありますので
参考にして下さい。
.bas
'起動プロセスのオープン(状態の取得準備)
Public Declare Function OpenProcess Lib "KERNEL32" _
(ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, _
ByVal dwProcessId As Long) As Long
'起動プロセスとのシンクロ(待機する)
Public Declare Function WaitForSingleObject Lib "KERNEL32" _
(ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
'起動プロセスのクローズ(終了)
Public Declare Function CloseHandle Lib "KERNEL32" _
(ByVal hObject As Long) As Long
'起動プロセスが実行中か調べる(状態の取得)
Public Declare Function GetExitCodeProcess Lib "KERNEL32" _
(ByVal hProcess As Long, lpExitCode As Long) As Long
Public Const SYNCHRONIZE = &H100000
Public Const INFINITE = &HFFFF
.frm
Dim IDProcess As Long
Dim hProcess As Long
Dim ret As Long
IDProcess = 起動プロセス
hProcess = OpenProcess(SYNCHRONIZE, 1, IDProcess)
ret = WaitForSingleObject(hProcess, INFINITE)
ret = CloseHandle(hProcess)
起動プロセスをControl.PrintReportで試してください。
この回答への補足
アドバイス、どうもありがとうございます!
起動プロセスについてなのですが、DataReportでも起動プロセスは得られるのでしょうか?
No.4
- 回答日時:
No.3の補足についての回答です。
MSDNのヘルプでPrintReportメソッドを調べたら
最後の行に
"PrintReport メソッドは、非同期の操作を実行します。PrintReport メソッドは、非同期の操作を示す "クッキー" の識別子を返します。"
とあります。
私はやったことが無いので一度試してください。
よろしく。
No.1
- 回答日時:
こんにちは。
maruru01です。どういうエラーが出るのかわからないので、何とも言えませんが、とりあえずプリンタの印刷ジョブを列挙するサンプルのURLを紹介します。
このvbvbvb.comにはたくさんサンプルがあるので探してみてはどうでしょうか。
では。
参考URL:http://www.vbvbvb.com/jp/gtips/0351/gEnumJobs.html
この回答への補足
早速のお返事、ありがとうございます。
vbvbvb.comを拝見させて頂いたのですが、同じような処理をしても、どうもエラーが出てきてしまいます。
エラーの内容は「メモリが"read"になることはありませんでした」というものです。
どうやらMOVEMEMORYの箇所でエラーが発生するようです。
どうしたら出来るんでしょうか…。
どうかアドバイスよろしくお願いします。
ちなみにOSはWin2000です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- プリンタ・スキャナー インクカートリッジからインクを取り出せるか 3 2022/11/17 10:32
- プリンタ・スキャナー 佐川急便のプリンターで印刷用の送り状が印刷時に詰まる 2 2022/11/23 18:25
- プリンタ・スキャナー もともとWi-Fi仕様ではないプリンタを、Wi-Fi経由で印刷できるようにできますか。 6 2022/06/24 21:32
- プリンタ・スキャナー エプソンのプリンタEP-879AWを使っていますが印刷文字がぼやけます。 家電量販店で写真印刷がメイ 4 2022/03/26 23:20
- プリンタ・スキャナー プリンタを無線化したい 7 2023/04/08 06:25
- プリンタ・スキャナー 複合機プリンタではないプリンタの場合、スキャナーは単体で買わないといけないのですか。 複合機だと、何 6 2023/05/24 20:08
- Word(ワード) Word文書のドラッグ操作による配置調整。 1 2022/10/16 19:24
- プリンタ・スキャナー 家庭用でたまに使うプリンタの故障で 4 2022/06/08 17:19
- プリンタ・スキャナー 印刷 キャンセル&印刷できない 2 2022/11/29 16:45
- プリンタ・スキャナー もともとWi-Fi仕様ではないプリンタの背面USB端子に挿すとWi-Fi経由で印刷できるドングル 6 2022/07/01 21:51
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッチスクリプト処理でエラー...
-
バッチファイルで多重起動を防ぐ
-
_access関数が EACCES エラーと...
-
RTOS(TOPPERS)プログラムで、動...
-
コンソールアプリの起動結果待...
-
ソフトのインストール場所って...
-
大塚商会で新しくシステム、ス...
-
Basp21を使用してメール送信が...
-
aptでインストールしたプログラ...
-
scriptコマンドで出力したログ...
-
/usr/local
-
Postfixでmailコマンドを使用し...
-
OpenLDAPでのユーザ一覧表示
-
rshについて
-
Macの手書き漢字入力ツールにつ...
-
メーリングリスト宛てのメール...
-
VB.NET と クリスタルレポート
-
パソコン初心者です。 職場のパ...
-
ubuntuに外部侵入できるか
-
デバッグ停止中 一つ戻る
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチスクリプト処理でエラー...
-
VBでExcelが起動されているか知...
-
バッチファイルで多重起動を防ぐ
-
Linux環境変数設定(putenv?se...
-
デーモンプロセスの起動について
-
コンソールアプリの起動結果待...
-
「応答なし」の状態を監視する方法
-
起動したIEのウインドウタイ...
-
MySQLへのDB::connectで、faile...
-
コンソールアプリケーションの...
-
system関数について
-
メッセージボックスの回避につ...
-
CreateProcessでコンソールアプ...
-
VB6 二重起動確実防止について
-
ASP.NET 2.0(VB)からEXCELオブ...
-
CreateProcessでうまくexeファ...
-
外部プロセス起動時に発生する...
-
_access関数が EACCES エラーと...
-
shell関数について
-
Httpステータス500 InternalSer...
おすすめ情報