[1] To put a monitor into a standby mode, the best I can think of is to run the screensaver, xxx.scr, directly with whatever basic method like wshshell.run. This is still the one I would be more likely to recommend.
[2] The sophisticated approach can often backfired. Sometimes, users might no longer be able to wake it up or get so confused and have to reboot.
[2.1] Use sendmessage api of user32 library with parameters wm_syscommand (&h112) and sc_monitorpower (&hf170). The 4th parameter determines whether you want to turnoff (2), standby(1), turnon (-1). The first parameter is some window's handle like the calling form itself.
[tt] sendmessage(me.hwnd,&h112,&f170,1)[/tt]
(me the calling form.)
[2.2] To do it from native vbs, you have to use an extension to wrap the api allowing the script to call the api (not all api with complex data-type, but sendmessage is in the category of allowable api.)
[2.3] You better script a timer to wake it up automatically. Else, users may take the consequence of some bad surprise.
[2.4] Details of the implementations can be found out-there on the net. You won't them miss out doing some search with appropriate keywords such as those used in the above.
[3] wmi has classes implemented to assess the controlling devices, cim_controller, cim_unitarycomputersystem... But, they are more for readonly purposes. Methods are not implemented and in particular, in this context, setpowerstate methods. So, there is something waiting on the line when those methods will be implemented and be available. Not for now.
- tsuji