Moja aplikacja została uruchomiona jako usługa systemu Windows, która nie widzi drukarki zainstalowanej na moim komputerze.
Ale jeśli ta aplikacja zostanie uruchomiona jako zwykła aplikacja systemu Windows, może zobaczyć tę drukarkę.
Jak mogę zainstalować tę drukarkę, która powinna być dostępna z usługi Windows?
Muszę wysłać pliki pdf do tej drukarki z usługi Windows. Ale usługa Windows nie widzi mojej drukarki.
Usługa Windows używa funkcji Win API EnumPrinters, aby uzyskać listę drukarek.
Ponadto funkcja Win API GetDefaultPrinter nie zwraca domyślnej drukarki, jeśli ta funkcja jest wywoływana z usługi systemu Windows.
System operacyjny - Windows 7.
Drukarka - HP LaserJet P2055.
Jest zainstalowany jako drukarka sieciowa na komputerze zdalnym.
Instaluję go na komputerze, wykonując następujące czynności:
1. Otwórz urządzenie i drukarki.
2. Dodaj drukarkę.
3. Dodaj drukarkę sieciową.
4. Znajdź drukarkę w katalogu na podstawie lokalizacji lub funkcji.
źródło
Odpowiedzi:
Prawdopodobnie uruchamiasz usługę w innym kontekście użytkownika niż podczas interaktywnego działania (jako „normalna aplikacja”). Spróbuj uruchomić go w kontekście użytkownika, który ma zainstalowaną drukarkę:
(cytowany z: http://blogs.msdn.com/b/dsui_team/archive/2013/06/24/printing-from-a-windows-service.aspx )
Możesz także zainstalować drukarkę na całym komputerze (dla wszystkich użytkowników) za pomocą printui.dll , np .:
Add per machine printer connection: rundll32 printui.dll PrintUIEntry /ga /n\\client2\printer2
(uruchom,
rundll32 printui.dll,PrintUIEntry /?
aby zobaczyć wszystkie opcje)źródło