VB2005での印刷ジョブ削除
- 題名: VB2005での印刷ジョブ削除
- 著者: sskip
- 日時: 2008/02/26 20:35:56
- ID: 21508
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: VB2005での印刷ジョブ削除
- 著者: やじゅ
- 日時: 2008/02/27 0:19:49
- ID: 21510
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: VB2005での印刷ジョブ削除
- 著者: sskip
- 日時: 2008/02/27 11:04:37
- ID: 21520
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[3]: VB2005での印刷ジョブ削除
- 著者: やじゅ
- 日時: 2008/02/27 12:58:42
- ID: 21524
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[4]: VB2005での印刷ジョブ削除
- 著者: sskip
- 日時: 2008/02/28 19:25:49
- ID: 21533
- この記事の返信元:
- この記事への返信:
- ツリーを表示
分類:[.NET]
現在、VB2005で印刷ジョブを削除するプログラムを作成しようとしています。
色々と調べた結果、
WinAPIのOpenPrinter関数を使用してプリンタのハンドルを取得し、
SetPrinterにて、プリンタのジョブを削除する事が可能と思い、
プログラムを作成して実行したのですが、SetPrinter関数実行時に
PInvokeStackImbalanceという警告が出力されてしまい、
ジョブが削除されません。
エラーメッセージを読んだところ、SetPrinterへ渡すパラメータが
誤っているのではないかと思っているのですが、調べても問題点が
皆目検討がつかない状況です。
以下にソースコードを記します。
申し訳ございませんが、ご教示の程よろしくお願い申し上げます。
************ソースコード**************
Declare Function SetPrinter Lib "winspool.drv" Alias "SetPrinterA" ( _
ByVal hPrinter As Long, _
ByVal Level As Long, _
ByVal pPrinter As Byte, _
ByVal Command As Long) As Long
'プリンタのハンドルを取得する
Dim hPrinter As Long
Dim PrinterName As String
'PrintDocumentオブジェクトを生成
Dim PD As New PrintDocument
PrinterName = PD.PrinterSettings.PrinterName
If Not OpenPrinter(PrinterName, hPrinter, STANDARD_RIGHTS_REQUIRED) Then
Throw New Win32Exception(Marshal.GetLastWin32Error())
End If
Dim result = SetPrinter( _
CLng(hPrinter), _
CLng(0), _
Nothing, _
CLng(PRINTER_CONTROL_RESUME))