PDA

Показать полную графическую версию : Скриншот панели управления и вставка в WORD


upward
12-03-2014, 21:58
Создать файл сценариев, который выполняет следующие операции и организует обработку исключительных ситуаций:
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
Не могу понять,почему не открывает 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
Iska, я не так выразился. Вроде скрипт и переходит по вкладкам и ворд в процессах висит,но скринов скрипт не делает

Iska
13-03-2014, 11:32
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
если вас не затруднит,можете пояснить что где и как и про «SendKeys()» »
прочитать где.
Спасибо заранее.


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

Iska
13-03-2014, 11:56
если вас не затруднит,можете пояснить что где и как и про
Цитата Iska:
«SendKeys()» »
прочитать где. »
Переведите, пожалуйста, на русский.

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

upward
13-03-2014, 11:59
Iska, скрипт который вы написали как он работает?

Iska
13-03-2014, 12:02
Так, как Вы заказывали:
Запустить модуль панели управления (см. таблицу). Сделать копию экрана для каждой страницы окна модуля в документ WORD и вставить поясняющий текст … . Сохранить файл. Закрыть все окна. »

upward
13-03-2014, 12:04
Iska, а вы его запускали?просто что-то не то он делает. в плане скриншотов.
скрипт не переходит по вкладкам

Iska
13-03-2014, 12:35
Iska, а вы его запускали? »
Угу. Вот примерный результат:
http://img196.imageshack.us/img196/928/8p76.png
Когда нет возможности, я обычно так и пишу в скобках — «не проверялось».

просто что-то не то он делает. в плане скриншотов. »
Среда исполнения: Windows XP SP3, Microsoft Office 2003.

скрипт не переходит по вкладкам »
Скрипт и не «ходит по вкладкам». Каждый раз открывается окно свойств системы с заданной вкладкой:
"%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
Iska, спасибо за пояснение,у меня win8 jabc 2013.

Iska
13-03-2014, 14:44
у меня win8 jabc 2013. »
upward, проверил ещё на одной машине в том же окружении, работает. Ни одной Windows 8 у меня нет, Windows Server 2008 R2 без Microsoft Office, потому Ваше окружение проверять мне не на чем.




© OSzone.net 2001-2012