C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

■89586 / 3階層)  C#によるプリンタ制御
□投稿者/ 魔界の仮面弁士 (1973回)-(2018/12/06(Thu) 14:54:22)
2018/12/06(Thu) 15:09:35 編集(投稿者)

No89584 (S.Kos さん) に返信
> こんな手があるとは!
別案として、
 rundll32 printui.dll,PrintUIEntry
を /Sr 指定で呼び出す手もありそうですが、
一部の設定のみを切り替えるような目的には向かないですね。


> ゴリゴリ(笑)のCによるアプリケーションで、DEVMODE構造体を取得して書き戻したことがあります。

DEVMODE 構造体を得る手段としては、
PageSettings.CopyToHdevmode メソッドや
PritereSettings.GetHdevmode メソッドがありますね。
そこから先は API になるかもしれませんけど。

これ自体は SetHDevmode メソッドでの利用を想定したものかも知れませんが、
一応その値を元に、StandardPrintController クラスが内部で
ResetDC API に引き渡しているようです。
https://referencesource.microsoft.com/#System.Drawing/commonui/System/Drawing/Printing/DefaultPrintController.cs%2c90



> C#だと、Win32APIレベル ResetDC() のような書き戻し、はできないのですか?

// using System.Printing;
var setting = Duplexing.TwoSidedLongEdge;

// var sv = new PrintServer(PrintSystemDesiredAccess.AdministrateServer);
var sv = new LocalPrintServer(PrintSystemDesiredAccess.AdministrateServer);
var pq = new PrintQueue(sv, printerName, PrintSystemDesiredAccess.AdministratePrinter);
var pc = pq.GetPrintCapabilities();
var dc = pc.DuplexingCapability;
if (dc.Contains(setting))
{
 pq.DefaultPrintTicket.Duplexing = setting;
 pq.Commit();
}
編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←Re[2]: C#によるプリンタ制御 /S.Kos 返信無し
 
上記関連ツリー

C#によるプリンタ制御 / S.Kos (18/12/06(Thu) 09:37) #89582
Re[1]: C#によるプリンタ制御 / 魔界の仮面弁士 (18/12/06(Thu) 10:21) #89583
│└ Re[2]: C#によるプリンタ制御 / S.Kos (18/12/06(Thu) 12:17) #89584
│  └ C#によるプリンタ制御 / 魔界の仮面弁士 (18/12/06(Thu) 14:54) #89586 ←Now
Re[1]: C#によるプリンタ制御 / Jitta (18/12/06(Thu) 15:54) #89587
  └ Re[2]: C#によるプリンタ制御 / S.Kos (18/12/06(Thu) 16:23) #89588 解決済み

上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信