Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Скриншот панели управления и вставка в WORD (http://forum.oszone.net/showthread.php?t=279144)

upward 12-03-2014 21:58 2322770

Скриншот панели управления и вставка в WORD
 
Создать файл сценариев, который выполняет следующие операции и организует обработку исключительных ситуаций:
1. Запустить модуль панели управления (см. таблицу). Сделать копию экрана для каждой страницы окна модуля в документ WORD и вставить поясняющий текст (можно на английском языке). Сохранить файл. Закрыть все окна. Представить текст скрипта и полученный файл.
Не могу понять,почему не открывает word и не делает скриншот
Код:

Option Explicit
Sub delaySendKeys(str)
WScript.Sleep 300 : WshShell.SendKeys str
End Sub
Dim WB, WshShell, PExec, i, Painter, SPath, FSO
set WshShell = CreateObject("WScript.Shell")
Set FSO = CreateObject("Scripting.FileSystemObject")
Set WB = CreateObject("Word.Basic")
For I = 0 To 4
Set PExec = WshShell.Exec("%windir%\System32\rundll32.exe SHELL32.DLL,Control_RunDLL SYSDM.cpl,@0,"&i)
WScript.Sleep 500 : WB.SendKeys "{prtsc}" : WScript.Sleep 500 : PExec.Terminate()
Set Painter = WshShell.Exec("mspaint.exe") : WScript.Sleep 500
SPath = "C:\screen"&(i+1)&".png" : if FSO.FileExists(SPath) then FSO.DeleteFile(SPath)
WScript.Sleep 500
delaySendKeys("^v") : delaySendKeys("^s")
delaySendKeys(SPath) : delaySendKeys("{ENTER}")
WScript.Sleep 500
Painter.Terminate()
Next
WB.AppClose "Microsoft Word"
WScript.Quit


Iska 12-03-2014 23:13 2322800

Цитата:

Цитата upward
Не могу понять,почему не открывает word »

Открывает. Посмотрите процессы в Диспетчере задач. Но лучше:
Код:

Set WB = CreateObject("Word.Basic")
Set objWord = WScript.CreateObject("Word.Application")

Если Вам нужно Word увидеть:
Код:

objWord.Visible = True
Ну, и, закрывать:
Код:

objWord.Quit
Set objWord = Nothing

А так — мутное задание со странным выбором в качестве исполнителя WSH.

upward 13-03-2014 10:14 2322894

Iska, я не так выразился. Вроде скрипт и переходит по вкладкам и ворд в процессах висит,но скринов скрипт не делает

Iska 13-03-2014 11:32 2322918

upward, гарантировать корректную работу «SendKeys()» практически невозможно. Пробуйте:
Код:

Option Explicit

Const wdCollapseEnd = 0

Dim objWshShell
Dim objWord
Dim objDocument
Dim objWB

Dim i
Dim strPath


Set objWshShell = WScript.CreateObject("WScript.Shell")
Set objWord    = WScript.CreateObject("Word.Application")
Set objWB      = WScript.CreateObject("Word.Basic")

Set objDocument = objWord.Documents.Add()

For i = 0 To 4
        With objWshShell.Exec("""%SystemRoot%\System32\rundll32.exe"" SHELL32.DLL,Control_RunDLL SYSDM.cpl,@0," & CStr(i))
                WScript.Sleep 1000
                objWshShell.AppActivate .ProcessID
                WScript.Sleep 300
                objWB.SendKeys "%{PRTSC}", True
                WScript.Sleep 1000
               
                .Terminate()
        End With
       
        With objWord.Selection
                .Paste
                .Collapse wdCollapseEnd
                .InsertParagraphAfter
                .Collapse wdCollapseEnd
                .TypeText "Рисунок " & CStr(i + 1)
                .InsertParagraphAfter
                .Collapse wdCollapseEnd
        End With
Next

objDocument.SaveAs "c:\My Screenshots.doc"
objDocument.Close

objWord.Quit

Set objWord    = Nothing
Set objWB      = Nothing
Set objWshShell = Nothing

WScript.Quit


upward 13-03-2014 11:46 2322925

если вас не затруднит,можете пояснить что где и как и про
Цитата:

Цитата Iska
«SendKeys()» »

прочитать где.
Спасибо заранее.


-----------------
при запуске скрипта sysdm.cpl открывает в свернутом режиме и автоматом должно по вкладкам переходить верно?

Iska 13-03-2014 11:56 2322934

Цитата:

Цитата upward
если вас не затруднит,можете пояснить что где и как и про
Цитата Iska:
«SendKeys()» »
прочитать где. »

Переведите, пожалуйста, на русский.

Цитата:

Цитата upward
при запуске скрипта sysdm.cpl открывает в свернутом режиме и автоматом должно по вкладкам переходить верно? »

Нет, не верно.

upward 13-03-2014 11:59 2322938

Iska, скрипт который вы написали как он работает?

Iska 13-03-2014 12:02 2322940

Так, как Вы заказывали:
Цитата:

Цитата upward
Запустить модуль панели управления (см. таблицу). Сделать копию экрана для каждой страницы окна модуля в документ WORD и вставить поясняющий текст … . Сохранить файл. Закрыть все окна. »


upward 13-03-2014 12:04 2322942

Iska, а вы его запускали?просто что-то не то он делает. в плане скриншотов.
скрипт не переходит по вкладкам

Iska 13-03-2014 12:35 2322960

Цитата:

Цитата upward
Iska, а вы его запускали? »

Угу. Вот примерный результат:

Когда нет возможности, я обычно так и пишу в скобках — «не проверялось».

Цитата:

Цитата upward
просто что-то не то он делает. в плане скриншотов. »

Среда исполнения: Windows XP SP3, Microsoft Office 2003.

Цитата:

Цитата upward
скрипт не переходит по вкладкам »

Скрипт и не «ходит по вкладкам». Каждый раз открывается окно свойств системы с заданной вкладкой:
Код:

"%SystemRoot%\System32\rundll32.exe" SHELL32.DLL,Control_RunDLL SYSDM.cpl,@0,0
"%SystemRoot%\System32\rundll32.exe" SHELL32.DLL,Control_RunDLL SYSDM.cpl,@0,1
"%SystemRoot%\System32\rundll32.exe" SHELL32.DLL,Control_RunDLL SYSDM.cpl,@0,2
"%SystemRoot%\System32\rundll32.exe" SHELL32.DLL,Control_RunDLL SYSDM.cpl,@0,3
"%SystemRoot%\System32\rundll32.exe" SHELL32.DLL,Control_RunDLL SYSDM.cpl,@0,4

после отсылки «Alt-PrintScreen» и паузы процесс принудительно «снимается».

upward 13-03-2014 13:05 2322975

Iska, спасибо за пояснение,у меня win8 jabc 2013.

Iska 13-03-2014 14:44 2323036

Цитата:

Цитата upward
у меня win8 jabc 2013. »

upward, проверил ещё на одной машине в том же окружении, работает. Ни одной Windows 8 у меня нет, Windows Server 2008 R2 без Microsoft Office, потому Ваше окружение проверять мне не на чем.


Время: 23:06.

Время: 23:06.
© OSzone.net 2001-