387 lines
11 KiB
XML
387 lines
11 KiB
XML
<?XML version="1.0" ?>
|
|
<package>
|
|
<job error="false" debug="false" logo="false">
|
|
<reference guid="{565783C6-CB41-11D1-8B02-00600806D9B6}" version="1.1"/>
|
|
<resource id="file mask"><![CDATA[slide*.bmp]]></resource>
|
|
<resource id="application available">SELECT * from win32_product WHERE NAME LIKE "Microsoft Office XP%" AND InstallState = 5</resource>
|
|
<runtime>
|
|
<description>
|
|
Creates the desktop wallpaper for the build name and language
|
|
</description>
|
|
|
|
<named name="label" required="true" type="simple"
|
|
helpstring="part of the wallpaper to generate
|
|
(default <BLDNUM> FRE/CHK)">
|
|
</named>
|
|
|
|
<named name="computer" required="true" type="simple"
|
|
helpstring="part of the wallpaper to generate
|
|
(default %COMPUTERNAME%)"/>
|
|
|
|
<named name="dest" required="false" type="simple"
|
|
helpstring="desired box to set the wallpaper
|
|
(default %COMPUTERNAME%)">
|
|
</named>
|
|
|
|
</runtime>
|
|
<comment>
|
|
Win32_UserDesktop
|
|
</comment>
|
|
|
|
vba.set.wallpaper.wsf /computer:i32bt0011 /label:TEST /scheme:flesh
|
|
vba.set.wallpaper.wsf /computer:i32bt0011 /label:SAFE /scheme:fen
|
|
|
|
<comment>
|
|
<comment>
|
|
Flesh colorscheme:
|
|
164,179,255 # background
|
|
224,125,225 # big letters
|
|
74,25,65 # computer name
|
|
Fen colorscheme:
|
|
0,64,48 # background
|
|
128,128,0 # big letters
|
|
255,128,0 # computer name
|
|
</comment>
|
|
|
|
The following break occurs at user level.
|
|
|
|
To reproduce:
|
|
|
|
1. create an .bmp image name it
|
|
2. set this image a wallpapaer by browsing for image from desk.cpl
|
|
3. overwrite the image with siomething different.
|
|
4. set this image a wallpapaer by browsing for image from desk.cpl
|
|
The desktop wallpaper will not change,
|
|
|
|
To verify that the image is changed, change the desktop wallpaper into some different image, then back to the browser dile.
|
|
Now you see the image is changed to what you supplied as the second file.
|
|
</comment>
|
|
<comment>
|
|
ppLayoutBlank
|
|
ppLayoutChart
|
|
ppLayoutChartAndText
|
|
ppLayoutClipartAndText
|
|
ppLayoutClipArtAndVerticalText
|
|
ppLayoutFourObjects
|
|
ppLayoutLargeObject
|
|
LayoutMediaClipAndText
|
|
LayoutObject
|
|
LayoutObjectAndText
|
|
LayoutObjectOverText
|
|
LayoutOrgchart
|
|
LayoutTable
|
|
LayoutText
|
|
LayoutTextAndChart
|
|
LayoutTextAndClipart
|
|
LayoutTextAndMediaClip
|
|
LayoutTextAndObject
|
|
LayoutTextAndTwoObjects
|
|
LayoutTextOverObject
|
|
defined in ?
|
|
\Program Files\Microsoft Office\Office10\MSPPT.OLB
|
|
</comment>
|
|
|
|
<reference guid="{565783C6-CB41-11D1-8B02-00600806D9B6}" version="1.1"/>
|
|
<resource id="fontsize">60</resource>
|
|
<resource id="width">174</resource>
|
|
<resource id="height">60</resource>
|
|
<resource id="index">Name</resource>
|
|
<resource id="search">NTDEV\sergueik</resource>
|
|
<resource id="field">WallPaper</resource>
|
|
<resource id="targetclass">Win32_Desktop</resource>
|
|
<resource id="regpath">HKEY_CURRENT_USER\Control Panel\Desktop\WallPaper</resource>
|
|
<script language="VBScript">
|
|
<![CDATA[
|
|
|
|
|
|
Option Explicit
|
|
Dim Debug
|
|
Const QQUOT = """"
|
|
|
|
'' on error resume next
|
|
err.CLEAR
|
|
if err.number then
|
|
WScript.echo err.Source, err.Number, err.Description
|
|
WScript.quit
|
|
end if
|
|
|
|
Dim opPowerPoint, opPresentation, opSlide, opshape, opLabel
|
|
Dim npHeight, npwidth
|
|
Dim spOutput, spFolderName, opshell
|
|
Dim spComputerName, opNetwork
|
|
Dim sLabel
|
|
Set opshell = CreateObject("WScript.Shell")
|
|
If NOT WScript.Arguments.Named.Exists("computer") Then
|
|
Set opNetwork = CreateObject("WScript.Network")
|
|
With opNetwork
|
|
spComputerName = .ComputerName
|
|
End With
|
|
Set opNetwork = Nothing
|
|
WScript.Arguments.ShowUsage
|
|
Else
|
|
spComputerName = WScript.Arguments.Named("computer")
|
|
End If
|
|
_
|
|
If NOT WScript.Arguments.Named.Exists("label") Then
|
|
sLabel = spComputerName
|
|
WScript.Arguments.ShowUsage
|
|
Else
|
|
sLabel = WScript.Arguments.Named("label")
|
|
End If
|
|
|
|
spFolderName = "WALLPAPER"
|
|
|
|
If 1 > nxDataSetCnt("application available") Then
|
|
Call opShell.PopUp("Microsoft Office XP" & _
|
|
VBNEWLINE & _
|
|
"not found on this machine." & _
|
|
VBNEWLINE & _
|
|
"Please install.", _
|
|
60, _
|
|
WScript.Application.FullName, _
|
|
0 + 16)
|
|
WSCript.quit
|
|
End If
|
|
|
|
With opShell
|
|
spOutput = .ExpandEnvironmentStrings("%TEMP%") & "\" & spFolderName
|
|
'' %TEMP%\wallpaper\Slide1.BMP
|
|
End With
|
|
set opshell = nothing
|
|
Dim opFilesys
|
|
Set opFilesys = CreateObject("Scripting.FilesystemObject")
|
|
Dim opBrow
|
|
Set opBrow = WScript.CreateObject("Shell.Application")
|
|
Set opPowerPoint = CreateObject("PowerPoint.Application")
|
|
|
|
With opPowerPoint
|
|
|
|
Set opPresentation = .Presentations.Add(False)
|
|
|
|
With opPresentation
|
|
|
|
With .PageSetup
|
|
|
|
.SlideHeight = cInt(GetResource("height"))
|
|
.SlideWidth = cInt(GetResource("width"))
|
|
|
|
npHeight = .SlideHeight
|
|
npWidth = .SlideWidth
|
|
|
|
End With
|
|
|
|
Set opSlide = .Slides.Add(.Slides.Count + 1, 12)
|
|
|
|
With opSlide
|
|
|
|
.ColorScheme = opPresentation.ColorSchemes(1)
|
|
|
|
Set opShape = opSlide.Shapes.AddShape(1, 0, 0, npWidth, npHeight)
|
|
opShape.Line.ForeColor.RGB = RGB(0,64,48)
|
|
opShape.Fill.ForeColor.RGB = RGB(0,64,48)
|
|
opShape.Line.ForeColor.RGB = RGB(94,157,102)
|
|
opShape.Fill.ForeColor.RGB = RGB(94,157,102)
|
|
|
|
Set opLabel = opSlide.Shapes.AddLabel(1, _
|
|
0, 0, 0, 0) '' most argument are ignored anyway
|
|
|
|
opLabel.TextFrame.TextRange = Ucase(sLabel)
|
|
|
|
with opLabel.TextFrame.TextRange
|
|
|
|
With .Font
|
|
.color.RGB = RGB(128, 64, 0)
|
|
.color.RGB = RGB(149, 113, 45)
|
|
.Bold = True
|
|
.Name = "Arial Black"
|
|
.Size = cInt(GetResource("fontsize"))
|
|
End With
|
|
|
|
End with
|
|
|
|
Dim opLabel2
|
|
Set opLabel2 = opSlide.Shapes.AddLabel(1, _
|
|
15, 15, 0, 0) '' most argument are ignored anyway
|
|
|
|
opLabel2.TextFrame.TextRange = Ucase(spComputerName)
|
|
|
|
|
|
with opLabel2.TextFrame.TextRange
|
|
|
|
With .Font
|
|
.color.RGB = RGB(255,255,255 )
|
|
.Bold = True
|
|
.iTALIC = True
|
|
.Name = "Arial"
|
|
.Size = cInt(GetResource("fontsize")) /2
|
|
End With
|
|
|
|
End with
|
|
|
|
|
|
End With
|
|
|
|
Set opSlide = Nothing
|
|
End With
|
|
|
|
call opPresentation.SaveAs(spOutput, 19, 0) '' ppSaveAsXXX constants need type library...
|
|
Set opPresentation = Nothing
|
|
End With
|
|
Set opPowerPoint = Nothing
|
|
Debug = True
|
|
''WSCript.echo spFindF(spOutPut, "slide*.bmp")
|
|
WSCript.echo spFindF(spOutPut, GetResource("file mask"))
|
|
|
|
WScript.quit
|
|
_
|
|
Dim opWbemLoc, opService
|
|
Set opWbemLoc = CreateObject("WbemScripting.SWbemLocator")
|
|
_
|
|
opWbemLoc.Security_.ImpersonationLevel = wbemImpersonationLevelImpersonate
|
|
opWbemLoc.Security_.Privileges.AddAsString("SeSystemEnvironmentPrivilege")
|
|
_
|
|
opWbemLoc.Security_.Privileges.AddAsString("SeAssignPrimaryTokenPrivilege")
|
|
opWbemLoc.Security_.Privileges.AddAsString("SeIncreaseQuotaPrivilege")
|
|
opWbemLoc.Security_.Privileges.AddAsString("SeCreatePermanentPrivilege")
|
|
opWbemLoc.Security_.Privileges.AddAsString("SeTakeOwnershipPrivilege")
|
|
_
|
|
set opService = opWbemLoc.connectserver
|
|
_
|
|
Dim aopMemberSet
|
|
Set aopMemberSet = opService.InstancesOf(GetResource("targetclass"))
|
|
_
|
|
Dim opProc, opProp
|
|
Dim bpUpdateThisMember
|
|
_
|
|
For Each opProc in aopMemberSet
|
|
bpUpdateThisMember = False
|
|
For Each opProp In opProc.Properties_
|
|
If Ucase(opProp.Name) = UCase(GetResource("index")) _
|
|
and _
|
|
Ucase(opProp.Value) = UCase(GetResource("search")) _
|
|
Then
|
|
bpUpdateThisMember = True
|
|
End If
|
|
Next
|
|
If bpUpdateThisMember Then
|
|
_
|
|
WScript.echo opProc.Properties_(GetResource("field")).value
|
|
opProc.Properties_(GetResource("field")).value = "d:\ntt.temp.x86fe\WALLPAPER\Slide1.BMP"
|
|
opProc.Wallpaper = "d:\ntt.temp.x86fe\WALLPAPER\Slide1.BMP"
|
|
'' on error resume next
|
|
'' opProc.Put_()
|
|
'' on error goto 0
|
|
'' ... fail here
|
|
_
|
|
End If
|
|
Next
|
|
_
|
|
Dim WSshell
|
|
Dim spRegPath
|
|
spRegPath = CSTR(GetResource("regpath"))
|
|
Set WSshell = CreateObject("WScript.Shell")
|
|
_
|
|
With WSshell
|
|
WSCript.echo spRegPath, _
|
|
.RegRead(spRegPath)
|
|
End With
|
|
Set WSshell = Nothing
|
|
WScript.quit
|
|
_
|
|
Function spFindF(siFolderName, siFnameMask)
|
|
Dim opBrw, spResult, opNZs, opEx, opEy, opEz
|
|
Set opBrw = WScript.CreateObject("Shell.Application")
|
|
spResult = ""
|
|
Set opEx = opBrw.NameSpace(spOutput)
|
|
Set opNZs = CreateObject("VBscript.RegExp")
|
|
With opNZs
|
|
.Global = True
|
|
.Pattern = spQthisE(siFnameMask)
|
|
.IgnoreCase = True
|
|
End With
|
|
If Debug Then
|
|
WSCript.echo TypeName(opEx) , opEx.Title
|
|
end if
|
|
Set opEy = opEx.items
|
|
If Debug Then
|
|
WSCript.echo TypeName(opEy) , opEy.count
|
|
end if
|
|
'' sorting!
|
|
'' opEy.sort("[ModifyDate]")
|
|
For Each opEz in opEy
|
|
If InStr(1,opEz.Type,"File Folder") = 0 Then
|
|
If opNZs.Test(opEz.name) Then
|
|
If Debug Then
|
|
WSCript.echo TypeName(opEz) , opEz.name
|
|
If True = opNZs.Test(opEz.Name) then
|
|
WSCript.echo TypeName(opEz) , opEz.name, opEz.ModifyDate, opEz.type
|
|
End If
|
|
End If
|
|
' full name?
|
|
spResult = spResult & VBNEWLINE & ucase(spOutput & "\" & opEz.name)
|
|
End If
|
|
End If
|
|
Next
|
|
|
|
Set opBrw = Nothing
|
|
Set opEx = Nothing
|
|
Set opEy = Nothing
|
|
Set opNZs = Nothing
|
|
spFindF = Mid(spResult,3)
|
|
End Function
|
|
|
|
Function spQthisE(siBarE)
|
|
|
|
Dim opRxS, opRxX, opRxA, opRxB, opRxC
|
|
Set opRxS = CreateObject("Scripting.Dictionary")
|
|
Set opRxX = CreateObject("VBscript.RegExp")
|
|
opRxS.add ".", "\."
|
|
opRxS.add " ", "\s"
|
|
opRxS.add "*", "[^.].*"
|
|
With opRxX
|
|
.Global = True
|
|
.IgnoreCase = True
|
|
.Pattern = ""
|
|
End With
|
|
opRxB = siBarE
|
|
For Each opRxA in opRxS.Keys
|
|
opRxB = Replace(opRxB, opRxA, opRxS(opRxA))
|
|
Next
|
|
If Debug Then
|
|
If opRxX.Test(opRxB) then
|
|
WSCript.echo "Replaced:", _
|
|
QQUOT & siBarE & QQUOT, _
|
|
QQUOT & opRxB & QQUOT
|
|
End If
|
|
End If
|
|
Set opRxS = Nothing
|
|
Set opRxX = Nothing
|
|
spQthisE = opRxB
|
|
End Function
|
|
Function nxDataSetCnt(siQuery)
|
|
'' e.g.
|
|
'' nxDataSetCnt("application available")
|
|
Dim opWbemLoc, opService, aopDataSet
|
|
Set opWbemLoc = CreateObject("WbemScripting.SWbemLocator")
|
|
opWbemLoc.Security_.ImpersonationLevel = wbemImpersonationLevelImpersonate
|
|
opWbemLoc.Security_.Privileges.AddAsString("SeSystemEnvironmentPrivilege")
|
|
|
|
Set opService = opWbemLoc.connectserver
|
|
Set aopDataSet = opService.ExecQuery(GetResource(siQuery))
|
|
nxDataSetCnt = aopDataSet.Count
|
|
|
|
End Function
|
|
|
|
]]>
|
|
</script>
|
|
</job>
|
|
<comment>
|
|
This approach does not work.
|
|
Objects\Shell\MinimizeAll.htm
|
|
...change wallpaper...
|
|
Objects\Shell\UndoMinimizeALL.htm</comment>
|
|
<comment>
|
|
</comment>
|
|
</package>
|
|
|