1

win32 apiを介して、特定のプリンターで使用可能なサポートされているプリンタードキュメント機能を取得する必要があります。

私が参照しているオプションは、下の画像のサンプルプリンター用に表示されています。このダイアログを表示するには、プリンタアイコンとクリック設定を右クリックし、ダイアログの[詳細設定]タブをクリックします。

画像内

誰かが私が呼び出す必要のあるAPIの必要性を教えてもらえますか?

私はWindowsWindowsXP +をターゲットにしており、vb6を使用しています。

4

2 に答える 2

2

DeviceCapabilities関数は読み取り専用です。探しているのはDocumentProperties関数です。DeviceCapabilitiesは実際にはかなり古いものであり、単一のユーザーと単一のアプリケーションのみがプリンターを使用していることを前提としているため、かなり前に廃止されているはずです。すべての印刷ジョブにプリンタのプロパティを設定する必要はありません。現在の印刷ジョブのドキュメントプロパティを設定します。DocumentProperties関数がそれを行いますが、変更を加える方法については、上記のリンクの指示に細心の注意を払ってください。それは不必要に複雑な関数です。

于 2012-07-06T00:14:20.187 に答える
1

あなたが探しているのはDeviceCapabilitieswinspool.drvからだと思います。Microsoftのサンプルコード。現在オンラインになっているドキュメントのほとんどは.Netに関するものなので、DanApplemanのVisualBasicプログラマーズガイドからWin32APIへのVB6定義を入力しました。

VB6の宣言は次のとおりです。

Declare Function DeviceCapabilities& Lib "winspool.drv" Alias "DeviceCapabilitiesA" (ByVal lpDeviceName as String, ByVal lpPort as String, ByVal iIndex as Long, ByVal lpOutput as String, ByVal lpDeviceMode as Long)

コメントに基づいて、構造DocumentPropertiesを取得または変更するため に使用する必要があります。DevModeそれはあなたが探しているものを持っているかもしれないし、持っていないかもしれません。あなたの最善の策は上記の本を手に入れることです、第12章は豊富な情報を持っています。また、ある種のPOS印刷を使用しているように見える画像を見ると、プリンターがサポートする可能性のある特定のAPIについてメーカーのドキュメントを参照する必要があります。

Declare Function DocumentProperties& Lib "winspool.drv" Alias "DocumentPropertiesA" (ByVal  hwnd as Long, ByVal hPrinter as Long, ByVal pDeviceName as String, ByVal pDeviceModeOutput as Long, ByVal pDeviceModelInput as Long, ByVal fMode as Long)

DevMode構造

Public Const CCHDEVICENAME = 32
Public Const CCHFORMNAME = 32

Type DEVMODE
    dmDeviceName as String * CCHDEVICENAME
    dmSpecVersion as Integer
    dmDriverVersion as Integer
    dmSize as Integer
    dmDriverExtra as Integer
    dmFields as Long
    dmOrientation as Integer
    dmPaperSize as Integer
    dmPaperLength as Integer
    dmPaperWidth as Integer
    dmScale as Integer
    dmCopies as Integer
    dmDefaultSource as Integer
    dmPrintQuality as Integer
    dmColor as Integer
    dmDuplex as Integer
    dmYResolution as Integer
    dmTTOption as Integer
    dmCollate as Integer
    dmFormName as String * CCHFORMNAME
    dpBitsPerPixel as Integer
    dmBitsPerPel as Long
    dmPelWidth as Long
    dmPelHeight as Long
    dmDisplayFlags as Long
    dmDisplayFrequency as Long
    dmICMMethod as Long
    dmICMIntent as Long
    dmMediaType as Long
    dmDitherType as Long
    dmReserved1 as Long
    dmReserved2 as Long
End Type
于 2012-07-05T21:04:31.573 に答える