« WScript.ShellのPopup(,秒)の秒が効かない。(障害) | トップページ | VBAからAdobe Reader 6.0でPDFファイルを印刷する。 »

2007年1月15日 (月)

WScript.NetworkのSetDefaultPrinter()を使うべからず。(障害)

WScript.NetworkのSetDefaultPrinter()でも、一応、デフォルトプリンタは、
変更はされるようですが、レジストリに設定する情報がちょっとおかしいです。
これはきっと「障害」です。

他にも、環境や条件によって、変更されなかったり、変更されたように見えても、
Excelなどから変更が見えなかったり、などと、トラブルが多いようです。
別コンポーネントの担当者間で仕様情報が遮断されている典型的な例です。

なので、SetDefaultPrinter()は、使わないほうがよいでしょう。

代わりに、
rundll32.exe printui.dll,PrintUIEntry /y /n "プリンタ名"

CreateObject("Shell.Application").NameSpace(4).Items().Item("プリンタ名").InvokeVerb "通常使うプリンタに設定(&F)"
が安全確実で、お勧めです。

あと、XP以降ならWMIでも出来るようです。Win32_PrinterクラスのSetDefaultPrinterメソッド。

« WScript.ShellのPopup(,秒)の秒が効かない。(障害) | トップページ | VBAからAdobe Reader 6.0でPDFファイルを印刷する。 »