--
Jose L. Pineda
josep...@earthlink.net
Have a look at this code that follows - it is to do a defrag - however
you'll note it has code to look at the Window title of a window, in
order to give it focus so that it can do it's send keys stuff. The idea
of this code is that the defrag program cannot be scheduled - but a vbs
file can, so this provides a method to do a scheduled defrag (and all
drives too). Can't recall where it came from - hope it's of use to
you...
'This script launches defrag and sends keys to the UI in order to
automate the defrag
'process.
set WshShell = CreateObject("WScript.Shell")
'Launch Defrag from the command line and wait for a second
WshShell.Run "dfrg.msc"
WScript.Sleep 1000
'Wait until the application has loaded - Check every second
While WshShell.AppActivate("Disk Defragmenter") = FALSE
wscript.sleep 1000
Wend
'modifications Alfonso
Dim oFSO, oDrives, oDrive, firstjump
set oFSO=createobject("scripting.filesystemobject")
set oDrives=oFSO.Drives
firstjump=0
'We use this variable to check if we have jumped first in the drive
list. It is necessary because the key sequence is a bit difference in
the first jump
for each oDrive in oDrives
if odrive.drivetype=2 then
'Bring the application to the foreground
WshShell.AppActivate "Disk Defragmenter"
WScript.Sleep 200
'Send an ALT-A key to bring down the degrag menu
WshShell.SendKeys "%A"
WScript.Sleep 200
'Send a D to start the defrag
WshShell.SendKeys "D"
'Wait until the defrag is completed - Check for window every 5
seconds
While WshShell.AppActivate("Defragmentation Complete") = FALSE
wscript.sleep 5000
wend
'Bring the msgbox to the foreground
WshShell.AppActivate "Defragmentation Complete"
WScript.Sleep 200
'Send a tab key to move the focus from View Report button to the
Close Button
WshShell.Sendkeys "{TAB}"
Wscript.Sleep 500
'Send key to Close the Defragmentation Complete window
WshShell.Sendkeys "{ENTER}"
Wscript.Sleep 500
'Bring the application to the foreground
WshShell.AppActivate "Disk Defragmenter"
WScript.Sleep 200
'Move down to next drive
if firstjump=0 then
WshShell.Sendkeys "{TAB}{DOWN}"
firstjump=1
else
WshShell.SendKeys"{DOWN}"
end if
end if
next
'Send and ALT-F4 to Close the Defrag program
WshShell.Sendkeys "%{F4}"
--
Duncan