Newsgroup: it.comp.lang.visual-basic
Titolo: Windows Scripting Host e Lib "user32"

E' possibile usare in un file vbs, Windows Scripting Host, una 
funzione della Lib "user32" ?
-- 
http://midiquiz.altervista.org

 funzione della Lib "user32" ?
No.
Puoi però usare un wrapper, come apidec20.zip che trovi sul sit comune.
Ciao
--
Math Parser : 
http://www.neodatatype.net
Sito Comune : 
http://www.it-lang-vb.net

No.
Invece si' ;-)
Prova questo:
Dim sh
Set sh = WScript.CreateObject ("WScript.Shell")
sh.Run  "%windir%\RunDll32.exe user,ExitWindows", 1, -1
-- 
ciao, hal

Grazie ad entrambi.
Il link dell'ApiDec non va:
http://www.it-lang-
vb.net/download.asp?file=Archivio/Binari/apidec20.zip&ID=566
------
Questa info mi serve perché sto cercando di fare una file vbs che mi 
metta il monitor in standby.
Ho trovato questa famosa routine e sto tentando di adattarlo al vbs 
host:
Dim sh
Set sh = WScript.CreateObject ("WScript.Shell")
Private Const WM_SYSCOMMAND = &H112
Private Const SC_MONITORPOWER = &HF170
sh.Run "%windir%\RunDll32.exe 
user,SendMessage",AnyForm.hwnd,WM_SYSCOMMAND,SC_MONITORPOWER, 1
Ora devo provare se funziona il prezioso suggerimento di HAL ma ho un  
altro intoppo perché non so che valore mettere al posto del parametro 
"AnyForm.hwnd".
Avete idea?
-- 
http://midiquiz.altervista.org

"AnyForm.hwnd".
Non ho provato, pero' potresti mettere 0 (zero) oppure -1
Il -1 sarebbe
 #define HWND_BROADCAST 0xFFFF
-- 
ciao, hal

 funzione della Lib "user32" ?
Si io lo uso normalmente per fare scripting di backup avanzati
--
RedFoxy
A fox around web
Power at fox for a yiffing world!

> Non ho provato, pero' potresti mettere 0 (zero) oppure -1
Numero errato di argomenti o assegnazione di proprietą non valida 
'Run'
-- 
http://midiquiz.altervista.org

user,SendMessage",AnyForm.hwnd,WM_SYSCOMMAND,SC_MONITORPOWER, 1
-- 
ciao, hal

 controlla gli apici in quello che hai scritto:
... bacchettata meritata :)
Forse devo scriverla così:
sh.Run "%windir%\RunDll32.exe 
user",SendMessage,0,WM_SYSCOMMAND,SC_MONITORPOWER, 1
ma mi dà:
"Numero errato di argomenti o assegnazione di proprietà non valida: 
'Run'
Codice 800A01C2

 "Numero errato di argomenti o assegnazione di proprietà non valida:
- un'altra bacchettata
- evedentemente *non* dovevi scriverla così :)
- controlla sulla guida di WSH la sintassi di Run
- controlla anche il post che tu stesso hai postato con la SendMessage: ti
sembra equivalente?
Ciao
- riprova

 - riprova
Così va meglio?
sh.Run "C:\Windows\RunDll32.exe 
User32.dll,SendMessage,AnyForm.hwnd,WM_SYSCOMMAND,SC_MONITORPOWER,1"
Errore in User32.dll
Voce Mancante: SendMessage ...
-- 
http://midiquiz.altervista.org

Avendola...
eccoti servito:
Windows Script
http://msdn.microsoft.com/library/default.asp?url=/nhp/Default.asp?contentid=28001169
-- 
hth, hal

> eccoti servito:
Potresti imboccarmi meglio, non ci ho trovato niente di interessante, 
con precisione.
-- 
http://midiquiz.altervista.org

con precisione.
tenetemi!

> tenetemi!
Mi sa che sto monitor lo tengo sempre accesso :( 
-- 
http://midiquiz.altervista.org

 con precisione.
Ok, evito di far scoppiare quella arteria che hal ha sulla fronte :)
Sul link indicato ci trovi tutto l'help (comodamente scaricabile) del
sistema di scripting di Windows, e, credimi, č *molto* interessante, se non
indispensabile per programmare con VBScript e WSciptingHost.
Ora, con calma, analizza ciň che hai scritto qui:
sh.Run "C:\Windows\RunDll32.exe
User32.dll,SendMessage,AnyForm.hwnd,WM_SYSCOMMAND,SC_MONITORPOWER,1"
sh.Run equivale ad eseguire un comando dal prompt del dos (sai, quella
finestra tutta nera, quella che M$ tenta di imboscare facendoti credere che
non serve piů).
Quindi, la cosa la puoi facilmente debuggare da lě: ci scrivi quello che tu
scrivi tra le virgolette del sh.Run, dai enter e riprovi finchč non ti
funziona come vorresti.
Altro aiutino: tu credi che windows capisca cosa significa "AnyForm.hWnd"?
Ciao
P.S.: ovviamente potrei darti la soluzione (anche se prima dovrei
verificarla anch'io: mi baso sull'assunto che quanto suggerito da altri
funzioni veramente :)) perň tu non capiresti una mazza e la prossima volta
anzichč risolverti da solo il problema in 5 minuti perderesti un'altra
giornata sul NG.


Stavolta mi sa che l'ho imbroccata:
sh.Run "%windir%\RunDll32.exe 
User32.dll SendMessage,0,&H112,&HF170,1&"
C'era una virgola di troppo.
Non dà errori, però non funziona.
http://www.thescarms.com/vbasic/Tips.asp
ps: non intendevo profanare la grande guida, intendevo che non trovo 
niente interessante per la mia routine, senza voler dire che non 
fosse interessante la guida o non lo fosse per la mia routine solo 
non trovavo ciò che mi interessava.
-- 
http://midiquiz.altervista.org

 Non dà errori, però non funziona.
Windows non ragiona come VB: non capisce gli "&" e gli "&H"
Ciao

 
Giŕ, l'avevo immaginato e avevo provato anche cosě:
sh.Run "%windir%\RunDll32.exe User32.dll SendMessage,0,274,61808,1"
ipotizzando che si trattasse di numeri decimali, senza esito.
Grazie in ogni caso sto imparando tante cosette :)
-- 
http://midiquiz.altervista.org

"nonce999"
Non ci ho capito molto di quello che vuoi fare ma se
vuoi mettere in stand by :
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}"
Copio incollo da uno che voleva fare l'opposto :
Hi All,
        After further searching the MSDN and the web, I have come up with
code that should work given the correct parameters, and API function
declaration. See below for the function block
        The CreateFile API declaration and or call is incorrect because I
recieve INVALID_HANDLE_VALUE
        Any help on getting the device handle to a monitor would be great
Thanks
Peter
Public Declare Function CreateFile Lib "kernel32" _
   Alias "CreateFileA" _
  (ByVal lpFileName As String, _
   ByVal dwDesiredAccess As Long, _
   ByVal dwShareMode As Long, _
   ByVal lpSecurityAttributes As Any, _
   ByVal dwCreationDisposition As Long, _
   ByVal dwFlagsAndAttributes As Long, _
   ByVal hTemplateFile As Long) As Long
Public Function WakeUpMonitor() as boolean
Const FILE_SHARE_READ As Long = &H1
Const FILE_SHARE_WRITE As Long = &H2
Const GENERIC_READ = &H80000000
Const GENERIC_WRITE = &H40000000
Const OPEN_EXISTING As Long = 3
Const INVALID_HANDLE_VALUE As Long = -1
Dim hDevice As Long
hDevice = CreateFile("CONOUT$", _
                      GENERIC_READ Or GENERIC_WRITE, _
                      FILE_SHARE_READ Or FILE_SHARE_WRITE, _
                      ByVal 0&, _
                      OPEN_EXISTING, _
                      0&, 0&)
If hDevice <> INVALID_HANDLE_VALUE Then
   WakeUpMonitor=true
   RequestDeviceWakeup hDevice
   CloseHandle hDevice
End If
End Sub
--
Fosco