Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Moderatore di Sicurezza informatica e virus L'avatar di Habanero
    Registrato dal
    Jun 2001
    Messaggi
    9,782

    [C win32] Screensaver solo su un monitor

    Scusate se sarò un po' prolisso...
    Ho un pc multischermo che su una delle due uscite video manda a ciclo continuo uno slideshow. Quando parte il salvaschermo questo viene visualizzato su entrambi i monitor, cosa ovviamente non gradita. Per questioni legate al DPS ho la necessità che lo screensaver si attivi ma solo sul monitor di servizio, non su quello su cui gira la presentazione. Inizialmente ho cercato soluzioni preconfezionate ma, non trovando nulla di disponibile, ho deciso di programmarlo io stesso.

    E qui mi sono imbattuto in un grosso problema.
    In realtà limitare il salvaschermo ad un solo monitor non è un problema. Il problema sta nel fatto che se si attiva (cosa necessaria) l'opzione dello screensaver "al ripristino proteggi con password" tutte le finestre dei programmi aperti vengono rese invisibili e sul monitor secondario farà bella mostra di sé solo lo sfondo del Desktop.
    Questo fenomeno non si manifesta se lancio il salvaschemo manualmente ma solo quando viene lanciato automaticamente dal sistema "bloccando lo schermo".

    La mia idea era quindi quella di riuscire a riattivare in qualche modo la finestra con la presentazione...
    Purtroppo le finestre non sono semplicemente rese invisibili (troppo facile...) non è nemmeno possibile una loro enumerazione tramite EnumWindows . In questo stato la finestra del salvaschermo sarà l'unica enumerabile....

    Spero di essermi spiegato... qualcuno ha idea di cosa succeda quando windows blocca lo schermo? Se la finestra dello screensaver è visibile a schermo bloccato presumo che possa essere possibile anche per altre finestre... Come posso avere accesso alle finestre a partire dal mio salvaschermo in uno stato in cui lo schermo è bloccato?

    Se qualcuno ha anche solo dei suggerimenti per possibili test che possano portare ad una maggiore comprensione del fenomeno...
    Leggi il REGOLAMENTO!

    E' molto complicato, un mucchio di input e output, una quantità di informazioni, un mucchio di elementi da considerare, ho una quantità di elementi da tener presente...
    Drugo

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Il Desktop che si vede comunemente non e' il solo attivo.

    Ne esistono almeno altri due, quello del Winlogon (che appare al login) e quello dello ScreenSaver (usato appunto quando il sistema attiva lo screensaver).

    Non so adesso come potresti risolvere ma sicuramente dovrai indagare "attorno" alle API che gestiscono i desktop, prima tra tutte la

    SwitchDesktop

    Naturalmente c'e' anche una questione di permessi dato che i Desktop sono oggetti sicuri ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Moderatore di Sicurezza informatica e virus L'avatar di Habanero
    Registrato dal
    Jun 2001
    Messaggi
    9,782
    per ora ti ringrazio... indagherò in tale direzione...
    se dovessi arrivare ad una soluzione posterò senz'altro qui la soluzione.
    Leggi il REGOLAMENTO!

    E' molto complicato, un mucchio di input e output, una quantità di informazioni, un mucchio di elementi da considerare, ho una quantità di elementi da tener presente...
    Drugo

  4. #4
    Moderatore di Sicurezza informatica e virus L'avatar di Habanero
    Registrato dal
    Jun 2001
    Messaggi
    9,782
    Questo mi ha già chiarito parecchie cose:

    By default, there are three desktops in the interactive window station: default, Winlogon, and screen-saver. The default desktop is created when the logged-on user starts a process. It is the active desktop, and it is used to interact with the user. If you press the CTRL+ALT+DEL key sequence, you are switched to the Winlogon desktop. Whenever the screen saver activates, you are automatically switched to the screen-saver desktop, which protects the processes on the default desktop from unauthorized users. Unsecured screen savers run on Winsta0\default.
    Leggi il REGOLAMENTO!

    E' molto complicato, un mucchio di input e output, una quantità di informazioni, un mucchio di elementi da considerare, ho una quantità di elementi da tener presente...
    Drugo

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Piu' o meno come ti avevo detto ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Moderatore di Sicurezza informatica e virus L'avatar di Habanero
    Registrato dal
    Jun 2001
    Messaggi
    9,782
    Originariamente inviato da oregon
    Piu' o meno come ti avevo detto ...
    Esatto.

    Peccato poi che...
    SwitchDesktop also fails when called from a process associated with a secured desktop, such as the WinLogon and ScreenSaver desktops.
    Temo proprio che non sia possibile fare quello che voglio...
    Ho provato anche ad assegnare il thread dello screensaver al desktop Default tramite SetThreadDesktop ma anche in questo caso la funzione fallisce (GetLastError=170 -> The requested resource is in use)
    Leggi il REGOLAMENTO!

    E' molto complicato, un mucchio di input e output, una quantità di informazioni, un mucchio di elementi da considerare, ho una quantità di elementi da tener presente...
    Drugo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.