Newsgroup: it.comp.os.win.win9x
Titolo: Spegnere lo schermo

Salve.
Esiste uno script VBS per poter spegnere lo schermo del PC
(modalita' standby, naturalmente)?
Altrimenti un SW che lo faccia, ma che una volta lanciato spenga
il monitor, senza dover cliccare alcunche' (come invece fa
PowerStrip).
Grazie

 (modalita' standby, naturalmente)?
Visual basic
Const WM_SYSCOMMAND = &H112&
Const SC_MONITORPOWER = &HF170& '  lp: (-1)=On; 1=stdby; 2=Off
Const MOUSEEVENTF_MOVE = 1&
Const SC_SCREENSAVE = &HF140&
Private Declare Function GetDesktopWindow Lib "user32" () As Long
Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, _
ByVal wParam As Long, lParam As Any) As Long
Private Declare Function GetForegroundWindow Lib "user32" () As Long
Private Sub Form_Load()
'stand by in questo caso
    Dim hwnd As Long
    hwnd = GetForegroundWindow()
    If hwnd = 0 Then
        hwnd = GetDesktopWindow()
    End If
    PostMessage hwnd, WM_SYSCOMMAND, SC_MONITORPOWER, ByVal 1&
End Sub
Con uno script vbs  in maniera "poco elegante" :
set objshell = wscript.CreateObject("Shell.Application")
objshell.ShutdownWindows
set WshShell = CreateObject("WScript.Shell")
WScript.Sleep 200
WshShell.SendKeys "t"
WScript.Sleep 100
WshShell.SendKeys "{enter}"
--
Fosco

 Con uno script vbs  in maniera "poco elegante" :
Eseguito, mi dice:
riga1, carattere1.
Impossibile trovare la classe di automazione con nome "Shell.Application".
Codice: 80020009
Origine: WScript.CreateObject.
C'entra magari che ho Win98lite?
Grazie

 C'entra magari che ho Win98lite?
Si .. se vuoi usare dei vbs con script "recenti"
(Shell.Application lo e') ti serve almeno il wsh 5.6
Installabile con IE6 o direttamente downladabile
http://snurl.com/Windows_Script
   (sul mega e mezzo)
Ma forse vuoi rimanere "leggero"
Puoi provare ad emulare la tastiera
Questo sotto fa Control+esc >> c (chiudi) appare la maschera
dello shutdown ed imposta e preme il tasto t di standby
cambia con le tue reali impostazioni
set oShell = CreateObject("WScript.Shell")
oShell.SendKeys"^{esc}" ' emula Control+esc
WScript.Sleep 500
oShell.SendKeys"c" ' emula il tasto c di chiudi
' notare che si tratta della   "c"  sottolineata che fa' da HotKey
WScript.Sleep 500
oShell.SendKeys"t" 'tasto t
WScript.Sleep 500
oShell.SendKeys"~" ' enter
Il Visual Basic che ho nell'altro post e' meglio
fattelo compilare da qualcuno che lo ha
--
Fosco

 ...e preme il tasto t di standby
ALT!!!
Chi ha parlato di mettere in standby TUTTO il PC?
Io voglio solo spegnere lo schermo...
Hai presente le impostazioni di risparmio energia, spegni il monitor dopo...?
Si spegne solo il monitor, ma se il PC stava lavorando continua a lavorare.
Lo standby e' tutt'altro.
Hai qualche altra idea?
Grazie

 Lo standby e' tutt'altro.
Si OK.... penso che non si possa fare con uno script
Io per ironia della sorte ho qui una keyboard  da 10 euro
che lo fa e non adopero mai questa funzione
Quello che si avvicina di piu' e' il VB che ho postato
Se hai un amico che ha Visual Basic fattelo compilare in exe
Comunque fai una ricerca che a memoria ci sono dei
programmini gia fatti in giro
sempre in VisualBasic:
  I think you may try to use the API SetThreadExecutionState.
     SetThreadExecutionState
 
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/power/base/
     setthreadexecutionstate.asp
     Here I write the sample which will work on my machine. I set my monitor to
     power off After 1 minute, so I let my program to sleep for 80 seconds.
     Private Declare Function SetThreadExecutionState Lib "kernel32" (ByVal
     esFlags As Long) As Long
     Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
     Private Const ES_DISPLAY_REQUIRED = &H2
     Private Sub Form_Load()
     Sleep 80000
     Dim rt As Long
     rt = SetThreadExecutionState(ES_DISPLAY_REQUIRED)
     Me.Caption = Hex(rt)
     End Sub
--
Fosco

 che lo fa e non adopero mai questa funzione
Certo, ma lo fa il driver della tastiera, non la tastiera da sola.
Ora, mi andrebbe bene anche un SW da richiamare che, una volta chiamato, spegne lo
schermo e poi esce.
Ovviamente per riaccendere lo schermo basterebbe muovere il mouse.
Un po' come i vari powerstrip e similia, ma che spenga lo schermo semplicemente
eseguendolo.
Ci sara' da qualche parte una utility di questo genere.
Il problema e' che non la trovo.
Provero' ancora.
Grazie per la pazienza.
Ciao

 semplicemente eseguendolo.
Il power strip cosa richiede un messaggio di conferma ?
se si ed e' quello il problema prova con questo :
'La CAPTION del message box la ottieni con CTRL+ALT+CANC
'devi copiare incollare ESATTAMENTE maiuscole minuscole e spazi
set oShell = CreateObject("WScript.Shell")
oShell.run"FULLPATHPowerStrip"
'puoi mettere direttamente nella cartella di powerstrip
'e basta solo "powerstrip.exe" o quelloche e' l'exe
WScript.Sleep 5000 ' attendi 5 secondi il caricamento
While not oShell.AppActivate("CAPTION")
wscript.Sleep 100
Wend
oShell.SendKeys"{ENTER}"
'al posto di enter puoi mandare anche ok o altro
'oShell.SendKeys"o" 'o per OK
'Copia incolla su notepad e salva con estensione .vbs
'tutti i file (*.*)  poi ci clicchi sopra. (per esempio Launch.vbs)
'se ti da' errore disattiva l'antivirus
PS:
puoi emulare anche le hotkey del programma se richiede
qualche iterazione piu' specifica per es :
set oShell = CreateObject("WScript.Shell")
oShell.run"notepad"
While not oShell.AppActivate("- Blocco note")
wscript.Sleep 100
Wend
wscript.Sleep 500
oShell.SendKeys"%f{down}"
wscript.Sleep 500
oShell.SendKeys"{esc}"
wscript.Sleep 500
oShell.SendKeys"%m"
Questo sotto e' l'help del WSH con numerosi esempi ( sopra il mega)
http://www.microsoft.com/downloads/details.aspx?FamilyId=01592C48-207D-4BE1-8A76-1C4099D7BBB9&displaylang=en
--
Fosco


Perchè?  allungare la (manina) e premere col (ditino) ;-)
... il (pulsant...ino) è (faticos....ino ....) ? ;-)
-- 
Walter