投稿者 るきお  (社会人) 投稿日時 2022/2/19 22:51:40
どうしてもプリンターの設定を変更しようと思うと、DEVMODE構造体まわりの話になってくると思うのですよね。

https://docs.microsoft.com/ja-jp/dotnet/api/system.drawing.printing.printersettings.gethdevmode?view=dotnet-plat-ext-6.0

この構造体は本当に意地悪で多くのプログラマーを苦しめているんです。
そして、引用したサイトに書いてある
>DEVMODE 構造体はデバイス固有です。
の部分が、私が最初に書いた
>この設定はプリンターごとに違う部分になるかもしれないので、使用されているプリンターのデバイスドライバーの仕様を確認する必要があるかもしれません。
の部分です。

過去にチャレンジした人の名残がネット上に見つかりました。
http://bbs.wankuma.com/index.cgi?mode=al2&namber=2377&KLOG=2
https://atmarkit.itmedia.co.jp/bbs/phpBB/viewtopic.php?topic=42909&forum=7
https://dobon.net/vb/bbs/log3-47/28144.html

デバイスごとに仕様が違うとすると、あるプリンターで成功しても別のプリンターでは通用しないということがありえます。
だから、既定の用紙サイズを変更する方法はこれだという決定的な情報が古していないのだと思います。

VB6版ですがサンプルを公開している人はいました。
この方はカスタムサイズを設定する方法を公開しているようです。
https://binaryworld.net/main/CodeDetail.aspx?CodeId=3093
プログラムが複雑なので中身は見ていないのですが、どのプリンターでも通用するものなのかどうかは疑問です。