Попытка сделать то же самое, но программно, на WSH:
читать дальше »
Код:
Option Explicit
Const ForReading = 1
Const ForWriting = 2
Dim strSourceFile
Dim objFSO
Dim arrContent
Dim i
Dim boolFound
If WScript.Arguments.Count = 1 Then
strSourceFile = WScript.Arguments.Item(0)
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
If objFSO.FileExists(strSourceFile) Then
With objFSO.OpenTextFile(strSourceFile, ForReading)
arrContent = Split(.ReadAll(), vbCrLf)
.Close
End With
With WScript.CreateObject("VBScript.RegExp")
.Pattern = "^.*\[WINDOWS\].*$"
.IgnoreCase = True
boolFound = False
For i = LBound(arrContent) To UBound(arrContent)
If .Test(arrContent(i)) Then
boolFound = True
Exit For
End If
Next
If boolFound Then
.Pattern = "^((?:.*?,){11})(.*?)(,.*)$"
If .Test(arrContent(i + 1)) Then
arrContent(i + 1) = .Replace(arrContent(i + 1), "$10x" & Hex(Eval(Replace(.Execute(arrContent(i + 1)).Item(0).Submatches(1), "0x", "&H")) Or 2^20) & "$3")
With objFSO.OpenTextFile(strSourceFile, ForWriting)
.Write Join(arrContent, vbCrLf)
.Close
End With
Else
WScript.Echo "Can't find button's mask in first line of [WINDOWS] section."
WScript.Quit 4
End If
Else
WScript.Echo "Can't find [WINDOWS] section in [" & strSourceFile & "]."
WScript.Quit 3
End If
End With
Else
WScript.Echo "Can't find source file [" & strSourceFile & "]."
WScript.Quit 2
End If
Set objFSO = Nothing
Else
WScript.Echo "Usage: cscript.exe //nologo " & WScript.ScriptName & " <Path to .hhp project>"
WScript.Quit 1
End If
WScript.Quit 0
Можно просто перетащить файл проекта «.hhp» на скрипт.
Ограничения на использование:
- невозможность использования в полных путях к файлу/файлам оглавления «.hhc» запятой — «,»;
- обработка только одного определения окна, идущего непосредственно за именем раздела «[WINDOWS]»;