|
分類:[ASP.NET (VB)]
2019/08/30(Fri) 15:17:34 編集(投稿者) 2019/08/30(Fri) 15:17:26 編集(投稿者)
OSをWindows7 32bit⇒ Windows10 64bitに変更するに伴いアプリのコンバートをしました。 印刷コマンドを実行→ CreateObjectにて InternetExplorer.Application を作成 → htmlをオープン → 印刷設定部でアプリが落ちてしまします。
開発環境は以下の通りです。 Windows10 64bit Visual Studio 2019 Pro ターゲットフレームワーク .NET Framework 4.7.2
しかし、ターゲットフレームワーク .NET Framework 4にしてビルドすると問題なく印刷できます。
4.7.2に変更するに伴い仕様が大きく変わったのでしょうか?
******** 以下ソース (印刷設定部のみ)********** Dim PrinterHandle As Long 'プリンタオブジェクトハンドル Dim Result As Long Dim Needed As Integer 'バッファサイズ Dim pPrinterInfo As IntPtr Dim PrinterInfo As PRINTER_INFO_2 = Nothing Dim pFullDevMode As IntPtr Dim MyDevMode As DEVMODE = Nothing Dim iExecRtn As Integer = 0 'モジュール戻値 Dim pDefault As New PRINTER_DEFAULTS 'プリンタデフォルト情報
Try 'プリンタアクセス権設定 With pDefault .DesiredAccess = PRINTER_ALL_ACCESS '振るアクセス!! End With
'プリンタオープン Result = OpenPrinter(PrinterName, PrinterHandle, pDefault) If Result <> 0 Then 'オープン成功? '次処理へ Else '失敗.. Throw New Exception(String.Format("プリンタオープン処理失敗")) End If
'バッファサイズ取得 GetPrinter(PrinterHandle, 2, 0, 0, Needed) If Needed > 0 Then '取得成功? '次処理へ Else '失敗.. Throw New Exception(String.Format("プリンタバッファ取得処理失敗")) End If
'メモリ割当 pPrinterInfo = Marshal.AllocHGlobal(Needed)
'プリンタ情報読取り Result = GetPrinter(PrinterHandle, 2, pPrinterInfo, Needed, Needed) If Result <> 0 Then '読取り成功? '次処理へ Else '失敗.. Throw New Exception(String.Format("プリンタ情報取得処理失敗")) End If
'構造体メモリデータコピー PrinterInfo = CType(Marshal.PtrToStructure(pPrinterInfo, GetType(PRINTER_INFO_2)), PRINTER_INFO_2) pFullDevMode = PrinterInfo.pDevMode
MyDevMode = CType(Marshal.PtrToStructure(pFullDevMode, GetType(DEVMODE)), DEVMODE)
'プリンタ詳細設定(ココで用紙枚数,サイズ,その他諸々設定) If MyDevMode.dmFields And DM_COPIES Then 'プリンタ情報書込み可能か? MyDevMode.dmCopies = 1 '出力枚数設定
'メモリに枚数設定を行った情報構造体をデータコピー Marshal.StructureToPtr(MyDevMode, pFullDevMode, True) PrinterInfo.pDevMode = pFullDevMode Marshal.StructureToPtr(PrinterInfo, pPrinterInfo, True) ←■■■■ここでアプリが落ちます!!
・・・・・・
|