0

ポートモニター(PDFへの印刷用)を備えたポストスクリプトベースの仮想プリンターをインストールするためのコードがいくつかあります。このコードは、PScript5 ファイル セットが「ルート」ドライバー フォルダーにない限り、WinXP から Win7 までの x86 および x64 プラットフォームで正常に動作します。いくつかのテスト PC ではファイルが既に存在していましたが、新しい Win7 PC ではファイルがまだ存在していませんでした。

たとえば、Windows XP 32 ビットでは、上記の内容が泥のように明らかであることはわかっているため、次のファイルの場合:

ps5ui.dll
pscript5.dll
pscript.hlp
pscript.ntf

c:\windows\system32\spool\drivers\w32x86\ にある場合、私のコードは機能します。そうでない場合、私のコードは失敗します。ファイルは常に c:\windows\system32\spool\drivers\w32x86\3\ にあり、結果は同じです (明らかに、Windows は "3" サブフォルダーを検索しません)。

それらを 3 サブフォルダーからコピーする必要がありますか? これは他の人が行っていることですか? 何らかの理由で「良い習慣」のようには見えません。this on MSDNによると、おそらくファイルを再配布できますが、Microsoft に連絡する必要があると思いますが、その方法がわかりません (リンクは奇妙で典型的です)。

これは、Win7 64 ビット (32 ビットでは "Windows x64" の代わりに "Windows NT x86" を使用するだけ) で実行される私の (クリーンアップされた) コードです。

   DRIVER_INFO_3 di;
   memset(&di,0,sizeof(di));
   di.cVersion = 3;
   di.pName = "My PDF Printer";
   di.pEnvironment = "Windows x64";
   di.pDriverPath = "pscript5.dll";
   di.pDataFile = "mypdf.ppd";
   di.pConfigFile = "ps5ui.dll";
   di.pHelpFile = "pscript.hlp";
   di.pDependentFiles = "pscript.ntf\0\0";
   di.pMonitorName = NULL;
   di.pDefaultDataType = "RAW";
   if(!AddPrinterDriverEx(NULL,3,(BYTE*)&di,APD_COPY_ALL_FILES|APD_INSTALL_WARNED_DRIVER))
      {
      char err[1024];
      sprintf(err,"Error adding printer driver: 0x%08X",GetLastError());
      Prompt(err);
      return;
      }

上記のファイルのいずれかがルート フォルダーにない場合、AddPrinterDriverEx はエラー コード 2、ファイルが見つかりませんで失敗します。「3」サブフォルダーからファイルをコピーして、正確なコードを再度実行すると、機能します。APD_COPY_ALL_FILES フラグも使用せずに試してみました。ファイルが見つからない場合は同じエラー (2)、ファイルが存在する場合はその他のエラーです (ファイルが既に存在することを意味するエラー コードを想定していますが、実際の問題とは関係がないため問題ではありません) )。

4

2 に答える 2

0

pscript5 ファイルを自由に再配布してもよろしいですか?

Xeros のこの記事によると、Microsoft に再配布を依頼する必要があります。

Xerox などの他の製造元は、このファイルの再配布権を取得して、この DLL を自社のソフトウェア アプリケーションおよび Microsoft オペレーティング システム用の印刷ドライバーに組み込むことができます。

于 2016-10-10T16:07:34.160 に答える