2016-08-29 3 views
1

Ich möchte wissen, ob es möglich ist, den Namen "Owner" zu ändern, der sichtbar ist, wenn Sie die Druckerwarteschlange aufrufen, um die Druckerdokumente in der Warteschlange anzuzeigen. Ich habe einen Windows-Dienst, der ein Dokument von einem Benutzer empfängt und einem Windows-Drucker sendet, und der Besitzer ist immer der Name des Benutzers, der sich bei der Arbeitsstation angemeldet hat, auf der der Dienst ausgeführt wird. Ich möchte den "Besitzer" zu etwas anderem ändern, und das würde in einer C++ - Windows-DLL getan werden, die der Windows-Dienst lädt und verwendet.C++ Change Print Queue Owner

8 hinzugefügt/30/16 @ 9: 14Uhr ET

Danke für die Anregung, Thomas. Ich hätte meine Nachforschungen erwähnen sollen, aber es war lang und leer. MSDN hat eine SetJob-Funktion, die 1 von 4 Strukturen (pJob = JOB_INFO_1 ... JOB_INFO_4) annehmen kann. JOB_INFO_1, 2 und 4 haben einen LPSTR pUserName, mit dem der Eigentümer des Druckauftrags geändert werden kann (Besitzer?). Im Abschnitt Bemerkungen von SetJob heißt es jedoch: "Die folgenden Elemente einer JOB_INFO_1-, JOB_INFO_2- oder JOB_INFO_4-Struktur werden bei einem Aufruf von SetJob ignoriert: JobId, pPrinterName, pMachineName, pUserName, pDrivername, Size, Submitted, Time und TotalPages. "

Und JOB_INFO_3 enthält dieses Feld nicht. Nett.

Ich sah keine anderen Funktionen, die das vielleicht tun könnten. Kannst du mich auf etwas Bestimmtes hinweisen, das ich mehr erforschen kann? Oder das ist bekannt, um zu arbeiten? Vielen Dank.

+0

Suche zuerst. Suche nach "msdn C++ ändere den Besitzer der Druckwarteschlange". –

Antwort

2

Ich bin nicht sicher, warum MSDN sagt, dass diese Felder ignoriert werden. Ich ändere pUserName, pDocument, pStatus mit SetJob mit JOB_INFO_1 und es funktioniert perfekt. Stellen Sie sicher, dass Position auf JOB_POSITION_UNSPECIFIED gesetzt ist.