Deutsch Deutsch  
Heaventools Home Page
Product Overview Solutions Download Support Purchase About

 

  RESOURCE TUNER CONSOLE :: SAMPLE SCRIPTS
Command-line script driven resource editor

Product Name:

Resource Tuner Console (RTC)

Version:

1.62

Release Date:

July 10, 2008   [What's New]

Requirements:

Intel Pentium with 16 MB RAM (or higher)

Platforms:

 Windows 98, ME, NT4, 2000, XP, 2003, Vista

Price:

 $199 (Single Developer License)

Trial Version
Download

 Resource Tuner Console (2.00 Mb)


OVERVIEW

SOLUTIONS

DOWNLOAD

GETTING STARTED

SAMPLE SCRIPTS:
 
    • Overview
    • Process Folders
    • Test Script
    • Edit Icons
    • Edit Strings
 

ORDER NOW

REQUEST SUPPORT

ABOUT US

Test Script

This sample VBScript code provides a real-world example that demonstrates many of the features available in Resource Tuner Console. This code shows the way you can change or edit resources of Windows EXE and DLL files using VBScript.

The script edits the strings in the demo EXE (which shipped with the RTC package) using values from the definition file "demoapp1.drc" from the "..\Demo\Defs\" folder. Then it adds a new StringTable, modifies the MessageTable, updates the Version Information, saves the entire file's resources as a resource DLL. The resulted files are saved to the Destination folder.

'------------------------------------------------------------------------------
'
' This sample VBScript code provides a real-world example that demonstrates
' many of the features available in Resource Tuner Console. 
'
' This code shows how to:
' - Modify a String Table using a definition file
' - Add a new String Table
' - Modify a Message Table
' - Update a Version Info resource
' - Create a copy of the resource (Message Table) with another language
' - Outputs a resource tree to a log file
' - Save the entire file's resources as a resource DLL
'
' The script will modify strings in demoapp1.exe using values from the 
' definition file "demoapp1.drc" in the "..\Demo\defs\" folder.
' Then it will add a new StringTable, modify the MessageTable, update the
' Version Information, save the entire file's resources as a resource DLL.
'
' The resulting files will be created in the directory named "..\Demo\Release" 
'------------------------------------------------------------------------------

Sub Main
  PEFileProxy.PostDebugString "Updating the checksum in the PE file header is enabled."
  PEFileProxy.UpdateCheckSum = True

  PEFileProxy.PostDebugString "The creation of a backup copy is disabled."
  PEFileProxy.CreateBackUp = False

  LangID = 1033 ' English-US

  CP = ScriptUnit.CodePageFromLangID(LangID)
  PEFileProxy.PostDebugString "CodePage value for English-US: " & CStr(CP)

  PEFileProxy.PostDebugString "Opening a file..."
  PEFileProxy.OpenFile "..\demo\src\demoapp1.exe"
  if (PEFileProxy.Terminated) then
    PEFileProxy.PostDebugString "Opening a file produced a fatal error."
  else
    PEFileProxy.PostDebugString "File successfully opened."
    if (not PEFileProxy.HasResources) then
      PEFileProxy.PostDebugString "The file contains no resources."
    else
      PEFileProxy.PostDebugString "The file contains resources."

      PEFileProxy.ClearDefinitions
      PEFileProxy.PostDebugString "Opening a definition file..."
      PEFileProxy.OpenDefinitionFile "..\demo\defs\demoapp1.drc"

      PEFileProxy.PostDebugString "Editing String Table..."

      S1 = "My App Number1"
      S2 = "Resource String: Item1 was modified."
      S3 = "Resource String: Item2 was updated."
      S4 = "Resource String: Item3 was changed."
      S5 = "Version Info:"
      S6 = "&Close App"
      ' Gain access to an entry using definition
      ResourcesProxy.EditStringTable "dm1Unit_res_strFormCaption", 0, CURRENT_LANG, S1, CP
      ResourcesProxy.EditStringTable "dm1Unit_res_strLabel1", 0, CURRENT_LANG, S2, CP
      ResourcesProxy.EditStringTable "dm1Unit_res_strLabel2", 0, CURRENT_LANG, S3, CP
      ResourcesProxy.EditStringTable "dm1Unit_res_strLabel3", 0, CURRENT_LANG, S4, CP
      ResourcesProxy.EditStringTable "dm1Unit_res_strVersion", 0, CURRENT_LANG, S5, CP
      ' Gain access to an entry using entry index
      ResourcesProxy.EditStringTable "65269", 0, CURRENT_LANG, S6, CP

      ' Create a new String Table (English-US)
      S1 = "This resource has been added by RTC (English-US)"
      ResourcesProxy.EditStringTable "1", 1033, CREATE_IF_NOT_EXIST, S1, CP

      PEFileProxy.PostDebugString "Editing Message Table..."
      S1 = "Event 1"
      S2 = "Event 2"
      S3 = "Event 5"
      ResourcesProxy.EditMessageTable "1", 0, CREATE_IF_NOT_EXIST, 10001, S1, CP
      ResourcesProxy.EditMessageTable "1", 0, CREATE_IF_NOT_EXIST, 10002, S2, CP
      ResourcesProxy.EditMessageTable "1", 0, CREATE_IF_NOT_EXIST, 10005, S3, CP
      S1 = "Error 1"
      S2 = "Error 2"
      ResourcesProxy.EditMessageTable "1", 0, CREATE_IF_NOT_EXIST, &H80000001, S1, CP
      ResourcesProxy.EditMessageTable "1", 0, CREATE_IF_NOT_EXIST, &H80000002, S2, CP
      S0 = "InsertItem 0"
      S1 = "InsertItem 1"
      S2 = "InsertItem 2"
      ResourcesProxy.EditMessageTable "1", 0, CREATE_IF_NOT_EXIST, 10004, S1, CP
      ResourcesProxy.EditMessageTable "1", 0, CREATE_IF_NOT_EXIST, 10000, S2, CP
      ResourcesProxy.EditMessageTable "1", 0, CREATE_IF_NOT_EXIST, 0, S0, CP
      S0 = "Negative value for ID"
      ResourcesProxy.EditMessageTable "1", 0, CREATE_IF_NOT_EXIST, -1, S0, CP

      PEFileProxy.PostDebugString "Updating Version Info..."
      if ResourcesProxy.OpenVersionInfo("1", 0, GET_DEFAULT_IF_NOT_EXIST) then 
        PEFileProxy.PostDebugString "Version Info opened."

        PEFileProxy.PostDebugString "Current FileVersion: " &_
                CStr(VersionInfoProxy.FileVersionMajor) & "." &_
                CStr(VersionInfoProxy.FileVersionMinor) & "." &_
                CStr(VersionInfoProxy.FileVersionRelease) & "." &_
                CStr(VersionInfoProxy.FileVersionBuild)
        PEFileProxy.PostDebugString "Current ProductVersion: " &_
                CStr(VersionInfoProxy.ProductVersionMajor) & "." &_
                CStr(VersionInfoProxy.ProductVersionMinor) & "." &_
                CStr(VersionInfoProxy.ProductVersionRelease) & "." &_
                CStr(VersionInfoProxy.ProductVersionBuild)

        VersionInfoProxy.SetFileVersion 2, 1, 3, 1205, 1033, True, True, True
        VersionInfoProxy.SetProductVersion 2, 0, 0, 0, 1033, True, True, True

        PEFileProxy.PostDebugString "Updated FileVersion: " &_
                CStr(VersionInfoProxy.FileVersionMajor) & "." &_
                CStr(VersionInfoProxy.FileVersionMinor) & "." &_
                CStr(VersionInfoProxy.FileVersionRelease) & "." &_
                CStr(VersionInfoProxy.FileVersionBuild)
        PEFileProxy.PostDebugString "Updated ProductVersion: " &_
                CStr(VersionInfoProxy.ProductVersionMajor) & "." &_
                CStr(VersionInfoProxy.ProductVersionMinor) & "." &_
                CStr(VersionInfoProxy.ProductVersionRelease) & "." &_
                CStr(VersionInfoProxy.ProductVersionBuild)


        VersionInfoProxy.FileFlagsMask = &H3F
        VersionInfoProxy.FileFlags = VS_FF_PRERELEASE or VS_FF_PRIVATEBUILD
        VersionInfoProxy.FileOS = VOS__WINDOWS32
        VersionInfoProxy.FileType = VFT_DLL
        VersionInfoProxy.FileSubType = VFT2_UNKNOWN

        S1 = "Copyright \0xA9 1994-2004 SuperSoftware Development"
        S2 = "SuperProg is a trademark of SuperSoftware Development"
        VersionInfoProxy.EditStringFileInfo "LegalCopyright", S1, CP, 1033, True, True
        VersionInfoProxy.EditStringFileInfo "LegalTrademarks", S2, CP, 1033, True, True
        S1 = "This has been added by the RTC test script"
        VersionInfoProxy.EditStringFileInfo "SpecialInfo", S1, CP, 1033, True, True

        PEFileProxy.PostDebugString "Closing Version Info..."
        ResourcesProxy.CloseVersionInfo
      else
        PEFileProxy.PostDebugString "Could not edit Version Info."
      end if

      PEFileProxy.PostDebugString "Compiling all changes..."
      PEFileProxy.Compile

      PEFileProxy.PostDebugString "Creating a copy of the resource (Message Table) with another language..."
      PEFileProxy.PostDebugString "Copying Message Table:1 Neutral (0) to Message Table:1 German-Swiss (2055)..."
      ResourcesProxy.CopyResource RT_MESSAGETABLE, "1", 0, 2055

      PEFileProxy.Compile

      PEFileProxy.PostDebugString ""
      PEFileProxy.PostDebugString "Resource Tree built by RTC:"
      ResourcesProxy.ResourceTreeToLog
      PEFileProxy.PostDebugString ""
'-------------------------------------------------------------------------------------------


      PEFileProxy.PostDebugString "Saving the entire file's resources as a resource DLL..."  
      PEFileProxy.SaveAsResDll "..\demo\release\demoapp1.res.dll"

      PEFileProxy.PostDebugString "Saving file as a brand new file image..." 
      PEFileProxy.SaveAsNewImage "..\demo\release\demoapp1.exe"
    end if
    PEFileProxy.PostDebugString "Closing this file..."
    PEFileProxy.CloseFile
  end if
end Sub
'-------------------------------------------------------------------------------------------	

 

To see the changes made to the test EXEs, we recommend using Resource Tuner GUI, a visual resource editor.

 Download Resource Tuner Console and learn how it can make you more productive.


 

Download Area    How To Order    Request Support    What's New    About Us    Site Map