Freigeben über


Das Dialogfeld "Speichern unter" wird hinter der Anwendung angezeigt, die auf den XPS-Dokumentenwandler druckt.

Dieser Artikel hilft Ihnen, ein Problem zu beheben, bei dem das Dialogfeld "Speichern unter" hinter der Anwendung verborgen ist, die gerade auf einen XPS Document Writer-Drucker druckt, wodurch die Anwendung nicht mehr reagiert.

Ursprüngliche Produktversion: XPS-Dokumentschreiber
Ursprüngliche KB-Nummer: 2567869

Symptome

Betrachten Sie das folgende Szenario:

  • Sie führen eine 32-Bit-Anwendung auf einer 64-Bit-Version von Windows 7 aus.
  • Sie drucken von der Anwendung auf einen Microsoft XPS Document Writer (MXDW)-Drucker. In diesem Szenario wird das Dialogfeld "Speichern unter " hinter der Anwendung angezeigt.

Darüber hinaus können Sie die folgenden Symptome feststellen:

  • Die Anwendung scheint nicht mehr zu reagieren (hängen), bis Sie einen Dateinamen eingeben oder die Druckaufgabe abbrechen.
  • Die druckende Anwendung wird nicht zur Vordergrund- (aktive) Anwendung, wenn das Dialogfeld Speichern unter geschlossen wird.

Hinweis

Dieses Problem kann auch auftreten, wenn Sie auf einen anderen Drucker drucken, dessen Treiber das Dialogfeld " Speichern unter " oder ein anderes modales Dialogfeld anzeigt. Der Druckertreiber für den Adobe PDF-Drucker ist dieser Treibertyp.

Ursache

Druckertreiber werden als DLLs (Dynamic Link Libraries) implementiert, die in einen druckbaren Prozess geladen werden. Druckertreiber werden als 64-Bit-DLLs in 64-Bit-Versionen von Windows und als 32-Bit-DLLs in 32-Bit-Versionen von Windows implementiert.

Ein 32-Bit-Prozess kann keine 64-Bit-DLLs laden. Daher unterstützen 64-Bit-Versionen von Windows das Drucken von 32-Bit-Prozessen über den Splwow64.exe Prozess. Splwow64.exe ist ein 64-Bit-Prozess, der 64-Bit-Druckertreiber laden kann und den Druck für 32-Bit-Prozesse verarbeitet.

Wenn eine Anwendung die StartDoc Funktion aufruft, um den XPS Document Writer-Drucker zu drucken, zeigt der XPS Document Writer-Druckertreiber ein Dialogfeld " Speichern unter " an, damit Benutzer den Namen und den Speicherort der XPS-Datei angeben können. Das Besitzerfenster des Dialogfelds ist in der Regel das aktive Fenster des Threads, der die StartDoc Funktion aufruft, und das Dialogfeld wird über dem aktiven Fenster angezeigt.

Wenn eine 32-Bit-Anwendung die StartDoc Funktion unter einer 64-Bit-Version von Windows aufruft, erfolgt der Splwow64.exe Prozessaufruf an den Druckertreiber des XPS Document Writer für die 32-Bit-Anwendung. In diesem Szenario ist das Dialogfeld " Speichern unter " nicht mehr vorhanden, da der Thread im Splwow64.exe Prozess nicht über ein aktives Fenster verfügt. Das Dialogfeld wird möglicherweise hinter der Anwendung angezeigt, die gedruckt wird, da der Splwow64.exe Prozess nicht über die Berechtigung zum Festlegen des Vordergrundfensters verfügt. Da das Dialogfeld nicht zugeordnet ist, wird die Anwendung, die die StartDoc Funktion aufgerufen hat, möglicherweise nicht zur Vordergrundanwendung, wenn das Dialogfeld geschlossen wird.

Der StartDoc Aufruf wird erst zurückgegeben, wenn das Dialogfeld geschlossen wird, sodass die Anwendung möglicherweise nicht mehr reagiert.

Das Dialogfeld " Speichern unter " verfügt über eine eigene Schaltfläche in der Windows Explorer-Taskleiste, wenn sie vom Splwow64.exe Prozess erstellt wird. Dies liegt daran, dass das Dialogfeld nicht zugeordnet ist. Die Taskleistenschaltfläche blinkt auch, wenn der Splwow64.exe Prozess das Vordergrundfenster nicht festlegen kann.

Zwischenlösung

Um dieses Problem zu umgehen, können Sie über die Taskleistenschaltfläche auf das Dialogfeld " Speichern unter " zugreifen. Alternativ können Sie ALT+TAB drücken, um den Fokus auf das Dialogfeld zu setzen.

Mehr Informationen

Softwareentwickler können dieses Problem in ihren 32-Bit-Anwendungen vermeiden, indem diese Anwendungen erkannt werden, wenn der Benutzer auf den XPS Document Writer-Drucker oder auf den Adobe PDF-Drucker druckt. Die Anwendung gibt dann den vollständigen Pfad zu einer Datei im DOCINFO.lpszOutput Strukturelement an, wenn sie die StartDoc Funktion aufruft. Der Druckertreiber verwendet die angegebene Datei, anstatt den Benutzer zur Eingabe einer Datei aufzufordern.

Haftungsausschluss für Informationen Dritter

Die in diesem Artikel erläuterten Produkte von Drittanbietern werden von Unternehmen hergestellt, die unabhängig von Microsoft sind. Microsoft übernimmt keine Garantie, weder ausdrücklich noch implizit, bezüglich der Leistung oder Zuverlässigkeit dieser Produkte.