![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Welcome to Vista Forums we are your forum to discuss Windows Vista x64 and x86 systems. Whether you need help or just want to post an idea you have on Vista, this is the forum for you.
br>
|
|
|||||||
![]() |
|
|
Thread Tools | Display Modes |
|
|
#1 | ||
|
Guest
Posts: n/a
|
basically the idea is to check a folder for pdf files every x seconds and
print them...I was thinking that the send-keys is failing since it can't get the window while it's locked, but it actually looks like it won't even open up the next file (when locking the computer, it appears that the current 'foreach' loop completes, then it stops. It does not appear to go on to the next filename). Any suggestions? here's the script... ########= Loading Plugin =#########= add-pssnapin WindowsAutomation ########= Setting Variables =#########= $searchpath = "c:\autoprint-test" $printedpath = "c:\autoprint-test\completed" $sleeping = 30 ########= Opening endless loop =#########= $loopy = 0 while ($loopy -eq 0) { ########= Searching for pdf files =#########= $files = @(get-childitem $searchpath | ? {$_.extension -match "pdf"}) ########= Printing Files =#########= foreach ($document in $files) { write-host $searchpath\$document invoke-expression $searchpath\$document start-sleep 5 select-window acrord32 | send-keys "%(fp){Enter}" start-sleep 20 taskkill /im acrord32.exe start-sleep 1 move-item "$searchpath\$document" $printedpath } write-host "Checking for new files in $sleeping seconds" start-sleep $sleeping } |
||
|
|
|
|
|
|
#2 | ||||||||||||||
|
Guest
Posts: n/a
|
OK...so the problem was in fact with the send-keys...i don't think it can
grab the window while the workstation is locked...to fix it I removed the send-keys line and replaced the invoke-expression line as follows: & $acrobatpath /t $document.fullname this works well for the printing ![]() the next enhancement i'd like is that i'd really like to get rid of the sleep right after that line...i have it there so that there is enough time to allow spooling to get done before killing the process. is there a way to do something like the following? .... while (acrobat.spooling) { start-sleep 2 } killtask /IM acrord32.exe .... some of the docs take 10 secs to spool, others may only take 1-2...also, i don't want to accidentaly kill acrord32 while a document is still spooling should a larger than normal document come in... Thanks! "Ben Christian" wrote:
|
||||||||||||||
|
|||||||||||||||
|
|
#3 | ||||||||||||||
|
Guest
Posts: n/a
|
> the next enhancement i'd like is that i'd really like to get rid of the
to talk directly to the reader. My only suggestion might be to run a session while using something like ProcessMonitor (www.sysinternals.com) to see if you can figure out what the app does when the spooling is done. If it is a locally attached printer, you might be able to keep an eye on the printer spool. If you see it in the printer spool, then it has "left" the reader app. Marco -- Microsoft MVP - Windows PowerShell http://www.microsoft.com/mvp PowerGadgets MVP http://www.powergadgets.com/mvp Blog: http://marcoshaw.blogspot.com |
||||||||||||||
|
|||||||||||||||
|
|
|
|