Pisanie sterownika drukarki Windows

Chcę napisać aplikację w C++ lub C#, która będzie zachowywać się jak Sterownik drukarki po zainstalowaniu. Będzie on dostępny na rozwijanej liście w oknie dialogowym drukowania, ale zamiast drukowania wywoła się do mojego kodu.

Myślę, że mogą istnieć interfejsy, które Windows dostarcza do pisania sterowników drukarek.

Author: A9S6, 2009-03-16

2 answers

Windows dostarcza mnóstwo interfejsów. Czy wiesz jaki sterownik drukarki chcesz napisać? Obecnie Windows obsługuje trzy wersje sterowników drukarek-PostScript, Unidrv i XPSDrv(ten ostatni na serwerze XP / 2003 z EP 1.0 i nowszymi). W większości przypadków wystarczy zamiast tego napisać wtyczkę sterownika. Zapoznaj się z architekturą INF, aby wiedzieć, że te rzeczy są instalowane, szczególnie sekcja o minidriverach.

Zgodnie z sugestią, będziesz potrzebował WDK, aby móc zbudować sterownik lub jego wtyczka. Należy pamiętać, że sterowniki nie używają IDE Visual Studio ani kompilatorów. WDK posiada własny kompilator. Zawsze możesz podłączyć to drugie z VS, ale to już inna historia.

WDK ma konfiguracje, aby celować w różne systemy operacyjne. Musisz wiedzieć, do którego systemu operacyjnego (lub zestawu OS-ów) chcesz się zwrócić i wybrać odpowiednią konfigurację.

Chcę napisać prosty sterownik, który wyświetli się na liście drukarek.

Nie widzę jak to będzie pomocne. Jeśli piszesz sterownik, dlaczego chcesz listę wszystkich innych sterowników obecnych w systemie?

Drukowanie do tego sterownika wywoła mój kod, dzięki czemu mogę robić takie rzeczy, jak tworzenie pliku PDF z dokumentem, wywoływanie usługi internetowej itp.

Ciekawe! Wszystkie te rzeczy można osiągnąć za pomocą wtyczki interfejsu użytkownika. Wtyczka interfejsu użytkownika jest biblioteką dll ładowaną po wybraniu właściwości sterownika Advanced.

Aby rozpocząć korzystanie z wtyczek UI, zapoznaj się z w przykładowym kodzie źródłowym oemui w WDK.

 21
Author: dirkgently,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-03-16 10:28:04

Nie jestem pewien, czy będzie wyświetlany na liście, ale nigdy nie próbowałem tego kodu C++:

#include <fstream>
Namespace Drivers{
Class Printer{
Const IOStream Printer("PRN");
Void Send(char a[]){
Printer<<a;}
Char GetStatus[](){
Char a[];
Printer>>a; 
return a;
 };
 }
 -1
Author: Ansh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-13 08:04:44