1

残りのページを特別な印刷ダイアログに表示する必要があります: http://imageshack.us/photo/my-images/837/imagegu.png/

次の行でこのダイアログを起動できます。

private void OpenPrinterPropertiesDialog()
{
    PrinterSettings printerSettings = new PrinterSettings();
    IntPtr hDevMode = printerSettings.GetHdevmode(printerSettings.DefaultPageSettings);
    IntPtr pDevMode = GlobalLock(hDevMode);
    int sizeNeeded = DocumentProperties(IntPtr.Zero, IntPtr.Zero, printerSettings.PrinterName,     IntPtr.Zero, pDevMode, 0);
    IntPtr devModeData = Marshal.AllocHGlobal(sizeNeeded);

    DocumentProperties(IntPtr.Zero, IntPtr.Zero, printerSettings.PrinterName, devModeData, pDevMode, 14);
    // <--- Here the print dialog appears

    GlobalUnlock(hDevMode);
    printerSettings.SetHdevmode(devModeData);
    printerSettings.DefaultPageSettings.SetHdevmode(devModeData);
    GlobalFree(hDevMode);
    Marshal.FreeHGlobal(devModeData);
}

PrintDocument、PrinterSettings などの msdn ドキュメントを検索していましたが、この情報の値を取得する方法が見つかりませんでした。この設定ダイアログを開かずに残りのページの値を取得するにはどうすればよいですか? 出来ますか?プリンターの残りのページを知る必要があります。ありがとう。

編集: ボックスの情報値を取得する必要があります。キャプチャ画像、プリンターの空白ページに残ります。

4

1 に答える 1

1

そのデータを取得するための .NET 固有のものはありません。おそらく、DEVMODE.dwDriverExtra (PInvoke 経由) を介して取得できますが、データの構造 (つまり、三菱商事に連絡する必要があります) と、そのデータのどこに残りのページ数が格納されているかを知る必要があります--もしあれば。プロパティ ダイアログに表示されるすべての情報にプログラムからアクセスできるというわけではありません。

于 2012-08-13T17:28:25.620 に答える