Newsgroup: it.comp.hardware
Titolo: [OT] - Windows

Ciao a tutti,
	ho provato a scrivere nel newsgroup corrispondente ma nessuno ha 
risposto. Qualcuno di vuoi conosce un sistema per far si che se c'è un 
detrminato processo attivo (ad esempio pippo.exe) in windows il sistema 
non vada in sospensione?
 
 
-- 
La fatica fisica appaga lo spirito ed avvicina alla saggezza. Solo 
soffrendo acquisisci la forza morale che scaturisce dall'autodominio.

 
Boh. Io conosco solo il programmino free (del quale non ricordo il nome, ma googlando lo troverai sicuramente) che ti muove un po' il mouse, cosi' il sistema non si blocca.


http://movemouse.codeplex.com/
 


 
Si, l'avevo visto, ma alla fine č come disabilitare la sospensione.
Devo poi ricordarmi di chiuderlo per poi far tornare attiva la sospensione.
Grazie comunque, ciao,
	BEppe.


 Devo poi ricordarmi di chiuderlo per poi far tornare attiva la sospensione.
 
La botte piena e la moglie ubriaca non si può ;-)
 
 
-- 
 
Bob
 
http://www.webalice.it/argonex/
 

 	BEppe.
 
Se hai dimestichezza con un po' di programmazione, si fa.
Dovresti fare un programma che cerca fra i processi aperti se c'è quello
che ti interessa, e in tal caso fare delle chiamate chiamata:
http://msdn.microsoft.com/en-us/library/windows/desktop/aa373233(v=vs.85).aspx
 
http://msdn.microsoft.com/en-us/library/windows/desktop/aa373208(v=vs.85).aspx
 
 
 
 
-- 
Freccia@Bulldozer63 :D


Per quello non è un problema, ci provo subito, grazie!


 Per quello non è un problema, ci provo subito, grazie!
 
Ho fatto un test rapido su XP e sembra andare.
Se hai 
vb.net
 crea un progetto, inserisci un timer e metti questo
codice:
 
| Public Class Form1
|     Private settato As Boolean
| 
| 
|     Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
|         Dim p() As Process
| 
|         p = Process.GetProcessesByName("MovieMan")
|         If p.GetUpperBound(0) >= 0 Then
|             ' Process is running
|             If Not settato Then
|                 PowerManager.PowerSaveOff()
|                 settato = True
|             End If
| 
|         Else
|             If settato Then
|                 ' Process is not running
|                 PowerManager.PowerSaveOn()
|                 settato = False
|             End If
| 
|         End If
|     End Sub
| End Class
 
E poi una classe:
 
| ''' <summary>
| ''' Simple power manager class that enables applications to inform the system
| ''' that it is in use, thereby preventing the system from entering the sleeping
| ''' power state or turning off the display while the application is running.
| ''' </summary>
| Public Class PowerManager
| 
| #Region " Private Sub New "
|     Private Sub New()
|         'keep compiler from creating default constructor to create utility class
|     End Sub
| #End Region
| 
|     ''' <summary>
|     ''' Enables applications to inform the system that it is in use, thereby preventing the system from entering the sleeping power state or turning off the display while the application is running.
|     ''' </summary>
|     ''' <param name="esFlags">The thread's execution requirements. This parameter can be one or more of the EXECUTION_STATE values.</param>
|     ''' <returns>
|     ''' <para>If the function succeeds, the return value is the previous thread execution state, as a EXECUTION_STATE value.</para>
|     ''' <para>If the function fails, the return value is NULL.</para>
|     '''</returns>
|     ''' <remarks>
|     ''' <para>This function does not stop the screen saver from executing.</para>
|     ''' <para>
http://msdn.microsoft.com/en-us/library/aa373208.aspx
</para>
|     ''' </remarks>
|     Private Declare Function SetThreadExecutionState Lib "kernel32" (ByVal esFlags As EXECUTION_STATE) As EXECUTION_STATE
| 
|     Public Enum EXECUTION_STATE As Integer
| 
|         ''' <summary>
|         ''' Informs the system that the state being set should remain in effect until the next call that uses ES_CONTINUOUS and one of the other state flags is cleared.
|         ''' </summary>
|         ES_CONTINUOUS = &H80000000
| 
|         ''' <summary>
|         ''' Forces the display to be on by resetting the display idle timer.
|         ''' </summary>
|         ES_DISPLAY_REQUIRED = &H2
| 
|         ''' <summary>
|         ''' Forces the system to be in the working state by resetting the system idle timer.
|         ''' </summary>
|         ES_SYSTEM_REQUIRED = &H1
| 
|     End Enum
| 
|     Public Shared Function PowerSaveOff() As EXECUTION_STATE
|         Return SetThreadExecutionState(EXECUTION_STATE.ES_SYSTEM_REQUIRED Or EXECUTION_STATE.ES_DISPLAY_REQUIRED Or EXECUTION_STATE.ES_CONTINUOUS)
|     End Function
| 
|     Public Shared Function PowerSaveOn() As EXECUTION_STATE
|         Return SetThreadExecutionState(EXECUTION_STATE.ES_CONTINUOUS)
|     End Function
| 
| End Class
-- 
Freccia@Bulldozer63 :D


 
Caspita grazie! Appena misi libera la macchina con su Visual Studio lo 
provo immediatamente.
Gentilissimo!



 
Grazie, fatto provato e va benissimo. Ora cerco di dargli un'aspetto 
migliore (nel senso che non si veda).
Buona giornata.


 Buona giornata.
 
Dovresti poter fare un servizio windows direttamente, senza interfaccia.
Oppure senza problemi lo puoi far andare a system tray vicino
all'orologio.
 
-- 
Freccia@Bulldozer63 :D


Stavo proprio pensando di fare una di quelle due soluzioni, aggiungegndo 
un altro paio di processi che deve controllare e poi siamo a posto.
Grazie del supporto!
