La finestra di dialogo Salva con nome viene visualizzata dietro l'applicazione che sta stampando in XPS Document Writer

Questo articolo consente di risolvere un problema per cui la finestra di dialogo Salva con nome è nascosta dietro l'app che sta stampando su una stampante XPS Document Writer e l'applicazione smette di rispondere.

Versione originale del prodotto: XPS Document Writer
Numero KB originale: 2567869

Sintomi

Considerare lo scenario descritto di seguito:

  • Si esegue un'applicazione a 32 bit in una versione a 64 bit di Windows 7.
  • Si stampa dall'applicazione in una stampante Microsoft XPS Document Writer (MXDW). In questo scenario viene visualizzata la finestra di dialogo Salva con nome dietro l'applicazione.

Inoltre, è possibile che si verifichino i sintomi seguenti:

  • L'applicazione sembra smettere di rispondere (bloccarsi) fino a quando non si immette un nome file o si annulla l'attività di stampa.
  • L'applicazione che sta stampando non diventa l'applicazione in primo piano (attiva) quando la finestra di dialogo Salva con nome viene chiusa.

Nota

Questo problema può verificarsi anche quando si stampa su una stampante diversa il cui driver visualizza la finestra di dialogo Salva con nome o un'altra finestra di dialogo modale. Il driver della stampante Adobe PDF è questo tipo di driver.

Causa

I driver della stampante vengono implementati come librerie a collegamento dinamico (DLL) caricate in un processo di stampa. I driver della stampante vengono implementati come DLL a 64 bit nelle versioni a 64 bit di Windows e come DLL a 32 bit nelle versioni a 32 bit di Windows.

Un processo a 32 bit non può caricare DLL a 64 bit. Pertanto, le versioni a 64 bit di Windows supportano la stampa da processi a 32 bit attraverso il processo di Splwow64.exe. Splwow64.exe è un processo a 64 bit che può caricare i driver della stampante a 64 bit e gestisce la stampa per i processi a 32 bit.

Quando un'applicazione chiama la StartDoc funzione per stampare nella stampante XPS Document Writer, il driver della stampante XPS Document Writer visualizza una finestra di dialogo Salva con nome in modo che gli utenti possano specificare il nome e il percorso del file XPS. La finestra proprietaria della finestra di dialogo è in genere la finestra attiva del thread che chiama la StartDoc funzione e la finestra di dialogo verrà visualizzata sulla finestra attiva.

Quando un'applicazione a 32 bit chiama la StartDoc funzione in una versione a 64 bit di Windows, il processo di Splwow64.exe chiama il driver della stampante XPS Document Writer per l'applicazione a 32 bit. In questo scenario, la finestra di dialogo Salva con nome non è selezionata perché il thread nel processo di Splwow64.exe non dispone di una finestra attiva. La finestra di dialogo può essere visualizzata dietro l'applicazione che sta stampando perché il processo di Splwow64.exe non dispone dell'autorizzazione per impostare la finestra in primo piano. Inoltre, poiché il dialogo non è proprietario, l'applicazione che ha chiamato la StartDoc funzione potrebbe non diventare l'applicazione in primo piano quando il dialogo viene chiuso.

La StartDoc chiamata non viene restituita fino a quando la finestra di dialogo non viene chiusa, quindi l'applicazione potrebbe smettere di rispondere.

La finestra di dialogo Salva con nome include un pulsante specifico nella barra delle applicazioni di Esplora applicazioni se viene creata dal processo di Splwow64.exe. Il motivo è che la finestra di dialogo non è di proprietà. Il pulsante della barra delle applicazioni lampeggia anche quando il processo di Splwow64.exe non può impostare la finestra in primo piano.

Soluzione alternativa

Per risolvere questo problema, è possibile accedere alla finestra di dialogo Salva con nome tramite il pulsante della barra delle applicazioni. In alternativa, è possibile premere ALT+TAB per impostare lo stato attivo sulla finestra di dialogo.

Ulteriori informazioni

Gli sviluppatori di software possono evitare questo problema nelle applicazioni a 32 bit facendo in modo che queste applicazioni rilevino quando l'utente sta stampando nella stampante XPS Document Writer o nella stampante Adobe PDF. L'applicazione specifica quindi il percorso completo di un file nel membro della DOCINFO.lpszOutput struttura quando si chiama la StartDoc funzione. Il driver della stampante userà il file specificato invece di richiedere all'utente un file.

Dichiarazione di non responsabilità sulle informazioni di terze parti

I prodotti di terzi citati in questo articolo sono prodotti da società indipendenti da Microsoft. Microsoft non rilascia alcuna garanzia implicita o esplicita relativa alle prestazioni o all'affidabilità di tali prodotti