下記の処理を実行するとA4で出力されるのですが
用紙サイズをA3に指定して出力することは可能でしょうか?
現在はtxtファイルはメモ帳に関連付けられていますが
可能であれば別の色々なアプリケーションに関連付けられたファイルにも
応用していきたいと思っています。
uses ShellApi
procedure TForm1.Button1Click(Sender: TObject);
var
SXInfo: TShellExecuteInfo;
begin
with SXInfo do
begin
cbSize := SizeOf(SXInfo);
fMask := SEE_MASK_NOCLOSEPROCESS;
Wnd := Application.Handle;
lpVerb := 'Print';
lpFile := PChar('C:\TEST.TXT');
lpParameters := Nil;
lpDirectory := Nil;
nShow := SW_SHOW;
end;
ShellExecuteEx(@SXInfo);
end;
予めプリンタ設定変更しないと出来ない気がします。
DEVMODE構造体で変更はできます。
http://www2.big.or.jp/~osamu/Delphi/delphi-browse.cgi?index=037541
探せばまだサンプルはあると思います。
プリンタの変更は色々複雑みたいですが・・・
どのような目的というか意図なのかはわかりませんが,
ShellExecuteEx(lpVerb := 'Print')で印刷する場合,対象となるアプリの文書などが
プリンタ関係の設定(用紙サイズや印刷の方向)を保存するようなものである場合,
その設定が使われます.
そうでないと(変更可能にしていまうと),ワード等で作成した文書をShell....で印刷
した時にエンドユーザの予期せぬ印刷結果となってしまいます.
(ワードの文書で用紙設定をする意味が少しなくなります)
また,そのようなアプリの文書類でない時は,通常使用するプリンタ(でその設定)が使用
されます.
Delphiのコードで印刷のプログラムを書く場合は,単にプリンタを指定して,そのプリ
ンタのDEVMODE構造体(TPritnerオブジェクトにないものは) を設定すればいいのですが,
ShellExecuteEXで印刷の際,どうしても変更したい場合は,一時的にシステムのプリンタ
の設定を変更する必要があります.
システムのプリンタの変更方法は,以下を参考にしてみてください.
これは「通常使用するプリンタに設定する」となっていますが,実行すべき内容は,この
記事そのものです.
このコードは WindowsXP(SP2) + Delphi5 で動作することを確認しています.
http://delfusa.main.jp/delfusafloor/archive/www.nifty.ne.jp_forum_fdelphi/samples/00614.html
返事が遅くなり申し訳ありません。
Mr.XRAYさんに提示していただいたリンクを元にコーディングしたところ
こちらの意図していた動作を実現することが出来ました。
ありがとうございました。
ツイート | ![]() |