Dela via


Dialogrutan "Spara som" visas bakom programmet som skriver ut till XPS Document Writer.

Den här artikeln hjälper dig att lösa ett problem där dialogrutan Spara som är dold bakom appen som skriver ut till en XPS-dokumentskrivare och programmet slutar svara.

Ursprunglig produktversion: XPS-dokumentskrivare
Ursprungligt KB-nummer: 2567869

Symptome

Tänk på följande scenario:

  • Du kör ett 32-bitarsprogram på en 64-bitarsversion av Windows 7.
  • Du skriver ut från programmet till en MXDW-skrivare (Microsoft XPS Document Writer). I det här scenariot visas dialogrutan Spara som bakom programmet.

Dessutom kan du uppleva följande symtom:

  • Programmet verkar sluta svara (låser sig) tills du anger ett filnamn eller avbryter utskriftsaktiviteten.
  • Programmet som skriver ut blir inte förgrundsprogrammet (aktivt) när dialogrutan Spara som stängs.

Anmärkning

Det här problemet kan också uppstå när du skriver ut till en annan skrivare vars drivrutin visar dialogrutan Spara som eller en annan modal dialogruta. Skrivardrivrutinen för Adobe PDF-skrivaren är den här typen av drivrutin.

Orsak

Skrivardrivrutiner implementeras som dynamiska länkbibliotek (DLL:er) som läses in i en process som skriver ut. Skrivardrivrutiner implementeras som 64-bitars DLL:er i 64-bitarsversioner av Windows och som 32-bitars DLL:er i 32-bitarsversioner av Windows.

En 32-bitarsprocess kan inte läsa in 64-bitars DLL:er. Därför stöder 64-bitarsversioner av Windows utskrift från 32-bitarsprocesser via Splwow64.exe processen. Splwow64.exe är en 64-bitarsprocess som kan läsa in 64-bitars skrivardrivrutiner och som hanterar utskrifter för 32-bitarsprocesser.

När ett program anropar StartDoc funktionen för att skriva ut till XPS-dokumentskrivaren visar XPS-skrivardrivrutinen en dialogrutan Spara som så att användarna kan ange namnet och platsen för XPS-filen. Fönstret Ägare i dialogrutan är vanligtvis det aktiva fönstret i tråden som anropar StartDoc funktionen, och dialogrutan visas över det aktiva fönstret.

När ett 32-bitarsprogram anropar StartDoc funktionen på en 64-bitarsversion av Windows anropar Splwow64.exe-processen in i XPS Document Writer-skrivardrivrutinen för 32-bitarsprogrammet. I det här scenariot är dialogrutan Spara som oägd eftersom tråden i Splwow64.exe-processen inte har ett aktivt fönster. Dialogrutan kan visas bakom programmet som skriver ut eftersom Splwow64.exe processen inte har behörighet att ange förgrundsfönstret. Eftersom dialogrutan är utan ägare kanske inte det program som anropade funktionen StartDoc blir förgrundsprogrammet när dialogrutan stängs.

Anropet StartDoc returneras inte förrän dialogrutan har stängts, så programmet kan verka sluta svara.

Dialogrutan Spara som har en egen knapp i Aktivitetsfältet i Utforskaren om den skapas av Splwow64.exe processen. Det beror på att dialogrutan är oberoende. Aktivitetsfältsknappen blinkar också när Splwow64.exe-processen inte kan ange förgrundsfönstret.

Övergångslösning

Om du vill undvika det här problemet kan du komma åt dialogrutan Spara som via dess knapp i aktivitetsfältet. Du kan också trycka på Alt+Tab för att växla fokus till dialogrutan.

Mer information

Programutvecklare kan undvika det här problemet i sina 32-bitarsprogram genom att låta dessa program identifieras när användaren skriver ut till XPS-dokumentskrivaren eller till Adobe PDF-skrivaren. Programmet anger sedan den fullständiga sökvägen till en fil i DOCINFO.lpszOutput strukturmedlemmen när funktionen anropas StartDoc . Skrivardrivrutinen använder den angivna filen i stället för att fråga användaren om en fil.

Ansvarsfriskrivning för information från tredje part

Produkter från tredje part som beskrivs i den här artikeln tillverkas av företag som är oberoende av Microsoft. Microsoft ger ingen garanti, uttrycklig eller underförstådd, angående prestandan eller tillförlitligheten hos dessa produkter.