Domanda

Sto usando win32api.MessageBox per fare avvisi, e questo funziona per le app in esecuzione dal prompt interattivo e dal codice normalmente eseguito, tuttavia quando ho creato un servizio Python quando viene attivato un MessageBox posso sentire il "beep" ma il la casella non viene visualizzata. È possibile visualizzare avvisi dai servizi?

È stato utile?

Soluzione

No, i servizi di Windows vengono eseguiti su un desktop nascosto completamente separato e non hanno accesso al desktop dell'utente connesso. Non c'è modo di evitarlo dal punto di vista di uno sviluppatore di servizi.

Nelle versioni precedenti di Windows, era possibile che un servizio fosse contrassegnato come "permesso di interagire con il desktop dell'utente", ma questa opzione era stata rimossa in XP o Vista (dimentico quale). Ora, i servizi non possono interagire con il desktop dell'utente.

Una soluzione al tuo problema potrebbe essere quella di avere un'applicazione desktop che comunica con il servizio tramite un metodo IPC. Quando il servizio desidera avvisare l'utente di qualche condizione, avvisa l'applicazione desktop che visualizza quindi una normale finestra di messaggio.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top