DOBON.NETお気楽掲示板

[ 最新記事及び返信フォームをトピックトップへ ]

■1611 / inTopicNo.1)  VB6で書かれたハードコピー処理を行うコードが一部の端末で効かない
  
□投稿者/ 炎の妖精さん -(2023/05/30(Tue) 11:41:58)
  • アイコンはじめまして、お世話になります。

    VB6で作ったプログラムがあり、ハードコピーが設けられていたのですが、
    私が使用しているパソコンではハードコピーできませんでした。
    一部の別の端末ではハードコピーできるようでして…
    何が原因だと考えられるのでしょうか?

    ========================================
    ●端末情報(ハードコピー出来ない)
    Windows 10 Pro 22H2(19045.2788)
    ========================================

    ========================================
    ●ソースコード抜粋
    HardCopy True, Printer
    →上記の処理を実行し、以下の関数へ移動し処理を実行。


    Public Sub HardCopy(blnTargetWin As Boolean, objPrinter As Object)
    On Error Resume Next

    ' OSイベント
    DoEvents

    ' クリップボードクリア
    Clipboard.Clear

    If blnTargetWin Then
    ' ActiveWindowのPrintScreen
    Call keybd_event(VK_LMENU, 0, KEYEVENTF_EXTENDEDKEY Or 0, 0)
    Call keybd_event(VK_SNAPSHOT, 0, KEYEVENTF_EXTENDEDKEY Or 0, 0)
    '******2012/06/05
    ' Windows7の場合はスリープが必要---
    DoEvents
    Sleep 500
    DoEvents
    '*************
    Call keybd_event(VK_SNAPSHOT, 0, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0)
    Call keybd_event(VK_LMENU, 0, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0)
    Else
    ' FullScreenのPrintScreen
    Call keybd_event(VK_SNAPSHOT, 0, KEYEVENTF_EXTENDEDKEY, 0)
    Call keybd_event(VK_SNAPSHOT, 0, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0)
    End If

    ' OSイベント
    DoEvents

    ' ピクチャーを印刷する
    If Clipboard.GetFormat(vbCFBitmap) Then
    Dim lngHZoom As Single
    Dim lngWZoom As Single
    Dim lngHeight As Long
    Dim lngWidth As Long

    Dim objPicture As Picture
    Set objPicture = Clipboard.GetData

    ' デフォルトプリンタ設定
    If objPrinter Is Nothing Then
    Set objPrinter = Printer
    End If

    ' 座標スケールの単位
    ' objPicture.ScaleMode = vbTwips
    objPrinter.ScaleMode = vbTwips

    ' ピクチャーのサイズ
    lngHeight = objPicture.Height
    lngWidth = objPicture.Width

    ' 拡大/縮小率を元に印字サイズの計算
    If lngHeight > objPrinter.Height - (lngYTop + lngYBottom) Or _
    lngWidth > objPrinter.Width - (lngYLeft + lngYRight) Then
    ' 用紙サイズ < ピクチャーサイズ
    ' 拡大/縮小率を計算(余白考慮)
    ' lngHZoom = (objPrinter.Height - (lngYTop + lngYBottom)) / lngHeight
    ' lngWZoom = (objPrinter.Width - (lngYLeft + lngYRight)) / lngWidth
    '*****2012/06/05
    ' lngHZoom = 0.87
    ' lngWZoom = 0.53

    lngHZoom = 0.8
    lngWZoom = 0.505
    '**************
    ' 印字サイズの計算
    If lngHZoom < lngWZoom Then
    lngHeight = lngHeight * lngHZoom
    lngWidth = lngWidth * lngHZoom
    Else
    lngHeight = lngHeight * lngWZoom
    lngWidth = lngWidth * lngWZoom
    End If
    End If
    ' 用紙方向を横向きに設定
    objPrinter.Orientation = vbPRORLandscape

    ' 用紙サイズをA4に設定
    objPrinter.PaperSize = vbPRPSA4

    ' ピクチャー印刷
    objPrinter.PaintPicture _
    objPicture, lngYLeft, lngYTop, lngWidth, lngHeight
    objPrinter.EndDoc
    End If
    End Sub
    ========================================
引用返信 削除キー/



トピック内ページ移動 / << 0 >>

このトピックに書きこむ

Pass/


- Child Tree -