29

.NETアプリケーションにデータを渡す仮想プリンターを作成しようとしています。次に、プリンターと.NETアプリケーションの両方をインストールするインストーラーを作成します。すべてをC#で記述できるのは本当に素晴らしいことですが、これにはプリンタードライバーの記述がアンマネージコードである必要があると感じています。誰かがこれを行う方法のかなりきれいなチュートリアルまたは例を知っていますか?

4

8 に答える 8

17

http://www.printerplusplus.comにアクセスしてください。オープンソースの.NET仮想プリンターです。「プリンター データ」を処理するためのコードを記述するためのインストーラーと .NET クラスが提供されます。

于 2012-10-09T20:34:18.320 に答える
12

Github プロジェクトを使用して、まさにあなたが求めていることを行いました: Microsoft/Windows-driver-samples/print/XPSDrvSmpl

https://github.com/Microsoft/Windows-driver-samples/tree/master/print/XPSDrvSmpl

インストーラー: http://wixtoolset.org/

アプリケーション: 内部ポートをリッスンする

フロー: 1 つのインストーラーからプリンターとアプリケーションをインストールします。アプリケーションが内部ポートをリッスンしている間、ユーザーはドライバーで何かを印刷します。データが送信されると、アプリケーションがそれを受け取ります。これは XPS 用で、PDF に変換できますが、何を印刷する場合でも流れは同じです。他に何か必要な場合は、GitHub の Microsoft/Windows-driver-samples/print/ またはニーズに固有のその他のソースを確認してください。

アップデート:

ドライバーを機能させる方法について多くの質問があるため、簡単な例を次に示します。

まだインストールしていない場合は、まず Windows Driver Kit (WDK) をダウンロードします。インストール時に、最終ステップで Visual Studio の拡張機能も追加することを選択します。Visual Studio 2017 のインストールDesktop development with C++では、適切な SDK が必要です。持っていない場合は、追加方法について以下の anser を参照してください。

Visual Studio 2017 に機能を追加するにはどうすればよいですか?

https://developer.microsoft.com/en-us/windows/hardware/windows-driver-kit

次に.zip、Windows-driver-samples マスターのファイルをダウンロードします。

https://github.com/Microsoft/Windows-driver-samples/archive/master.zip

フォルダーに移動し、Visual Studio<UnzipFolder>\print\XPSDrvSmplで開きます。XPSDrvSmpl.sln

次に、GitHub の Microsoft 独自のガイドに従ってください。ご覧のとおり、Visual Studio 2015 用ですが、2017 でも同じだと思います (まだテストされていません)。

Windows Driver Kit (WDK) 10 と Visual Studio 2015 を使用してドライバー ソリューションをビルドするには、次の手順を実行します。

  1. Visual Studio 2015 でソリューション ファイルを開きます。
  2. すべての非バイナリ ファイル (通常、サンプルの \install ディレクトリにあります) をパッケージ プロジェクトに追加します。a. Solution Explorer で、Driver Files を右クリックします。c. [追加] を選択し、[既存のアイテム] をクリックします。サンプルをダウンロードした場所に移動し、インストール ディレクトリ内のすべてのファイル、または INF、INI、GPD、PPD ファイルなどの同等の非バイナリ ファイル セットを選択します。[追加] をクリックします
  3. これらのファイルをドライバー パッケージに追加するように構成します。ソリューション エクスプローラーでソリューションを右クリックし、[追加] > [新しいプロジェクト] を選択します。Visual C++/Windows Driver/Package の下にある Driver Install Package を選択します。b. ソリューション エクスプローラーで、パッケージ プロジェクトを右クリックし、[プロパティ] を選択します。c. 左側のペインで、[構成プロパティ] > [ドライバーのインストール] > [パッケージ ファイル] をクリックします。d. 右側のウィンドウで、省略記号ボタン (...) を使用して、ドライバー パッケージに追加する必要がある一連のファイルを参照します。手順 2-c で追加したすべてのデータ ファイル (INF ファイルを除く) を追加する必要があります。この構成はアーキテクチャごとであるため、構築するアーキテクチャごとにこの構成を繰り返す必要があります。e. [OK] をクリックします。
  4. INF ファイルを開き、ビルドされた出力と一致するように編集します。a. INF ファイルを開きます。b. [バージョン] セクションで、CatalogFile=XpsDrvSmpl.cat のようなカタログ ファイルへの参照を追加します。c. SourceDisksFiles セクションで、ビルドする DLL ファイルの場所を =1 に変更します。これは、このドライバにアーキテクチャ固有のディレクトリがないことを示しています。複数のアーキテクチャを同時に出荷する場合は、ドライバー INF を手動で照合する必要があります。

この時点で、Visual Studio 2015 はドライバー パッケージをビルドし、ファイルをディスクに出力できるようになります。ドライバーの署名と展開を構成するには、「ドライバーの開発、テスト、および展開」を参照してください。

https://github.com/Microsoft/Windows-driver-samples/tree/master/print/XPSDrvSmpl#build-the-sample

于 2016-11-01T23:16:59.597 に答える
8

WinAPIラッピングをたくさんしなければならないと思います。あなたがしなければならないことを見つけるためにWindowsDriverDevelopmentKitの研究を始めてください。

また、この商用プリンタードライバーリソースツールキットfor.NETを見つけました...

于 2008-11-03T02:28:32.170 に答える
5

LPD タイプのプリンターやモニター ポート 9100 のようにアプリ自体を公開するだけで済みます。その後、任意の印刷ドライバーをインストールして、それをアプリに指定することができます。

于 2008-11-13T17:19:46.870 に答える
2

同様の質問に対する回答を探していたところ、ウィキペディアでこのリンクを見つけました - http://www.colorpilot.com/emfprinterpilot.html (異なる言語で仮想プリンターを作成できます)

于 2009-03-19T13:06:20.447 に答える
0

別のアプローチの使用を検討してみませんか。自由に利用できる Print-to-PDF アプリケーションなど、中間の既製の印刷プログラムを使用するようなものです。次に必要なのは、車輪を再発明するために頭を割る代わりに、サードパーティのライブラリ (無料およびオープンソースの差異もあります) を使用して PDF をデコードすることだけです。他にも Print-to-XXX アプリケーションがあり、適切なフォーマットに応じて検討することができます。

于 2008-11-03T03:20:04.780 に答える
0

PDFのアプローチを解釈することも良いことではありません。やりたいことをやりたい理由がわからない。おそらく、独自の PDF プリンターを作成しようとしているのでしょう。

Windows Driver Development のことを実際に見てみる必要があると思います。プリンター ドライバーを開発する場合は、C++ で作成する必要があると思います。

幸運を。

于 2008-11-03T05:05:45.490 に答える
-1

私の記憶が正しければ、Microsoft はプリンター ドライバーの開発において .NET をサポートしていません。私は、純粋な .NET プリンター ドライバーをまだ見つけていません。そうすることで、あなたは非常に勇敢な男になるでしょう!Web サイト「Printer Driver Resource Toolkit」には、ドライバーが .NET で記述されているとは記載されていません。

于 2010-05-10T15:11:27.800 に答える