Home Page

 


EARLIER FEATURES

 


FEATURES CONTENTS

 


LATER FEATURES

 

Features Contents


3rd September 2006

TWEAKING THE LIGHT WEB-BROWSER OffByOne

IIsi 50MHz
Steven Stockton


 

Ed: Some time ago I did a review of a simple web browser, OffByOne, which I find very useful. Recently, IIsi e-mailed me to suggest the binary code could be modified to include additional keyboard shortcuts and make some useful modifications to the dialog boxes. I didn't think this was possible without access to the source code of the program! While the following article is specific to OffByOne, the technique should apply to any software you feel is lacking in this area. I am indebted to IIsi for his knowledge of 'resource hacking' and for sharing it by writing this article.

INTRODUCTION

Home Page Software’s OffByOne web browser can be made more user friendly with some edits. You’ll need an uncompressed secondary copy of "ob1.exe", the binary file for OffByOne, and a special programme called a resource editor. Never use your only or original copy of a file for this kind of work. If something should go wrong, like the resource editor crashing, you make an editing mistake, or the power fails, you may have to get a new copy of OffByOne if you haven’t made a backup. It’s best to save a new copy of the file you’re working on after every few steps so that you don’t have to start all over, or redo much work, if you make a mistake. The resource editor we’ll use is Resource Hacker 3.4 because it’s free and it gets the job done. (If you know of a better one, especially if it’s free, let us know). An installer programme for OffByOne 3.5 is available at the programme web site, though the zip version is used in this tutorial. Resource Hacker 3.4 is available in additional languages at the Resource Hacker site, along with an updated help file. It’s assumed you already have a programme for handling zip files.

Homepages:

OffByOne 3.5a http://www.offbyone.com/
Resource Hacker 3.4 http://www.angusj.com/resourcehacker/

Direct Links (to the program zip files)

OffByOne 3.5 http://offbyone.com/offbyone/images/OffByOne.zip
Resource Hacker 3.4 http://delphi.icm.edu.pl/ftp/tools/ResHack.zip

GETTING SET

If you don't already have both applications, you can download what you're missing from the sites mentioned above. Making sure to note where you put them, extract each zip archive to a separate folder. A safe choice is saving them to your desktop. Open the two programme folders and arrange them so that you can see the entire contents of both side by side. Make your first backup copy by selecting the file "ob1.exe", copying it, and then pasting it into the same folder. (If you don't see the ".exe" part, select the files with the yellow icon with the maroon plus/minus sign and the numeral "one" on it.). You might want to rename the copied file from "Copy of ob1.exe" to something like "ob1 backup.exe". Now let's do some editing.

MAKING THE CHANGES
The changes we are about to make will add many keyboard shortcuts and improve some dialogue boxes of OffByOne. Drag the "ob1.exe" (not the backup copy) over to the ResHacker icon until it highlights, then let go. This should open the ob1 file using Resource Hacker. You'll see a mostly blank window with several items in a list in a white portion on the left side. First, open the "Accelerators" item and burrow down to the resource ID "1033". If you click it you'll see text in the right side of the window which specifies what shortcut keys are available in the programme. Edit the text to look like this:

Ed: I am not sure whether the spaces and tabs in the original file supplied by IIsi are important. HTML removes multiple spaces so I am including all the code bits in a text file here. You can cut and paste the relevant code from the text file to the Resource Hacker windows if you want.

128 ACCELERATORS
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
{
VK_A, 57642, CONTROL, VIRTKEY
VK_C, 413, CONTROL, VIRTKEY
VK_O, 405, CONTROL, VIRTKEY
VK_T, 177, CONTROL, VIRTKEY
VK_F1, 57664, VIRTKEY
VK_F5, 32956, VIRTKEY
VK_LEFT, 401, ALT, VIRTKEY
VK_RIGHT, 402, ALT, VIRTKEY
VK_L, 409, CONTROL, VIRTKEY
VK_S, 404, CONTROL, VIRTKEY
VK_S, 32925, CONTROL, SHIFT, VIRTKEY
VK_H, 406, CONTROL, VIRTKEY
VK_H, 32816, CONTROL, SHIFT, VIRTKEY
VK_I, 407, CONTROL, VIRTKEY
VK_P, 410, CONTROL, VIRTKEY
VK_F, 414, CONTROL, VIRTKEY
VK_F, 32815, CONTROL, SHIFT, VIRTKEY
VK_D, 412, CONTROL, VIRTKEY
VK_B, 411, CONTROL, VIRTKEY
VK_ESCAPE, 32958, VIRTKEY
VK_ADD, 32812, CONTROL, VIRTKEY
VK_SUBTRACT, 32814, CONTROL, VIRTKEY
VK_1, 32910, CONTROL, VIRTKEY
VK_2, 32911, CONTROL, VIRTKEY
VK_3, 32912, CONTROL, VIRTKEY
VK_4, 32913, CONTROL, VIRTKEY
VK_5, 32914, CONTROL, VIRTKEY
VK_6, 32915, CONTROL, VIRTKEY
VK_G, 32819, CONTROL, VIRTKEY
VK_W, 409, NOINVERT, CONTROL, VIRTKEY
}

At one time, I did have "VK_BACK, 401, CONTROL, VIRTKEY" in that list, so I could use Ctrl-Backspace the same way that a modern Firefox, Internet Explorer, and Mozilla use backspace to go to a previously viewed web page, but found it interfered with using the same key combination to delete whole words to the left when in a text field. For a similar reason, "VK_BACK, 401, VIRTKEY" would be a bad idea, because then whenever you tried to backspace in a text field in OffByOne the browser would jump back to the previously viewed page - and continue paging back for every repeat of the key. Very nasty if you were entering something on a lengthy form over a secure connection and have the combination of a short keyboard repeat delay and very high keyboard repeat rate.

Make sure you click the "Compile Script" button before you move on; if you don't and you cancel when Resource Hacker reminds you to compile the script, you'll have to do it all over again. Save your progress. If you now look in OffByOne's folder, you'll see that Resource Hacker created a file called "ob1_original.exe" for you. The reason this isn't good enough for backup purposes is that every time you save your progress the changes from your previous save become part of the "ob1_original.exe" file. After just two saves it's not truly the 'original' file anymore. Keep that first backup you made.

You now have all the new keyboard shortcuts, but you won't be able to see what they are because they aren't displayed anywhere in the OffByOne. Read on.

Open the "Menu" item from the list on the left of the Resource Hacker window and burrow down through the sub item "128" to the menu resource with the ID "1033", the same number as your accelerator resource ID. Make sure you aren't editing the "Accelerators" list all over again, because you'll break things if you put menus resources in the keyboard shortcut list. Click the "1033" menu resource to see another block of text on the right side of the window, this time specifying most of the menus available in OffByOne. Edit it to look like this:

128 MENU
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
{
POPUP "&File"
{
MENUITEM "&Open Local File...\tCtrl+O", 405
MENUITEM "Go to a &Web Page...\tCtrl+L", 409
MENUITEM "&Reload\tF5", 32956
MENUITEM "Stop Loading\tEsc", 32958
MENUITEM SEPARATOR
MENUITEM "New &Tab\tCtrl+T", 177
MENUITEM SEPARATOR
MENUITEM "&Save Current Page As...\tCtrl+Shift+S", 32925
MENUITEM "Save Page and &Images\tCtrl+S", 404
MENUITEM SEPARATOR
MENUITEM "&Print...\tCtrl+P", 410
MENUITEM SEPARATOR
MENUITEM "E&xit\tAlt+F4", 57665
}
POPUP "&Edit"
{
MENUITEM "Select &All\tCtrl+A", 57642
MENUITEM "&Copy\tCtrl+C", 413
MENUITEM SEPARATOR
MENUITEM "Add &Bookmark...\tCtrl+D", 411
MENUITEM "Bookmarks...\tCtrl+B", 412
MENUITEM SEPARATOR
MENUITEM "&Find Text In Page...\tCtrl+F", 414
MENUITEM "Fi&nd In Files...\tCtrl+Shift+F", 32815
}
POPUP "&View"
{
MENUITEM "&Enlarge Font\tCtrl +", 32812
MENUITEM "&Reduce Font\tCtrl -", 32814
POPUP "Image &Zoom"
{
MENUITEM "50%\tCtrl+1", 32910, CHECKED
MENUITEM "100%\tCtrl+2", 32911, CHECKED
MENUITEM "125%\tCtrl+3", 32912, CHECKED
MENUITEM "150%\tCtrl+4", 32913, CHECKED
MENUITEM "200%\tCtrl+5", 32914, CHECKED
MENUITEM "400%\tCtrl+6", 32915, CHECKED
}
MENUITEM SEPARATOR
MENUITEM "Page &Info\tCtrl+I", 407
MENUITEM "Session &History\tCtrl+H", 406
MENUITEM "Cookie &Viewer\tCtrl+Shift+H", 32816
}
POPUP "Hot&list"
{
MENUITEM "&Add Current Page", 32904
MENUITEM "&Remove Current Page", 32905
}
POPUP "&Options"
{
POPUP "&Cookie Support"
{
MENUITEM "Enabled", 32940, CHECKED
MENUITEM "Disabled", 32941, CHECKED
MENUITEM "Session-Fresh Only", 32942, CHECKED
}
POPUP "SSL Support"
{
MENUITEM "SSL Enabled", 32970, CHECKED
MENUITEM "SSL Disabled", 32971, CHECKED
MENUITEM "Fake SSL", 32972, CHECKED
}
POPUP "New &Window"
{
MENUITEM "&Enabled", 32930, CHECKED
MENUITEM "Open in New &Tab", 32973
MENUITEM "&Disabled", 32974
}
MENUITEM "Enable External &Players", 32822, CHECKED
MENUITEM "Enable &Meta Refresh", 32933, CHECKED
MENUITEM "Send Referrer Header", 32969, CHECKED
MENUITEM "Keep Forward &History", 32907, CHECKED
MENUITEM "Load &Images", 32929, CHECKED
MENUITEM "Enable Image &Animation", 32932, CHECKED
MENUITEM "Show No&Frames", 32931, CHECKED
MENUITEM "Show NoScrip&t", 32965, CHECKED
MENUITEM SEPARATOR
MENUITEM "Start && Home Pa&ge...", 32963
MENUITEM "Proxy Server &Setup...", 32909
}
POPUP "&Help"
{
MENUITEM "Online &Help...", 32928
MENUITEM "&About Off By One...\tF1", 57664
}
}

Note that there's no point in editing the section of this which is for the "Hotlist", because OffByOne will rebuild the whole section when it starts and every time you change the contents of your hotlist from within the programme. Don't touch the "Menu" subitem "159" or it's contents either, for the same reason. It would really just be a waste of time.

Click the "Compile Script" button and save a new copy of OffByOne, just in case something's gone amiss partway through. You now have the keyboard shortcuts showing up in the menus, but that's not the only place most of us expect to find that kind of help these days. We're going to edit the tooltips that appear when you hover over the OffByOne toolbar buttons to include the keyboard shortcut information. This is more important than it sounds because some of the keyboard shortcuts have no equivalent menu options, just toolbar buttons. If you want to add the tooltip information only for the keyboard shortcuts that don't have menu items, that's ok.
(Ed: The shortcut keys were originally separated from the rest of the tooltip text by several spaces).
The next part is a bit tricky because the tooltip texts aren't stored in a single list like the shortcut key and menu information.

Open the "String Table" item in the left portion of the Resource Hacker window. There are nine sub items here and we want to edit resources of five of them. The sub items we want are 26, 2051, 2052, 2060, and 3603. Edit the resource with the ID "1033" in each of these, one at a time, making sure to click "Compile Script" between each one. You can save additional copies of OffByOne as you go along, if you fear having to redo everything since your last save. Make the text of each of these match the following:

String Table --> 26 --> 1033:

STRINGTABLE
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
{
401, "\nPrevious Page Alt+Left Arrow, Ctrl+Backspace, or z"
402, "\nNext Page Alt+Right Arrow, or x"
403, "\nHome Page"
404, "\nSave Page and Images Ctrl+Shift+S"
405, "\nOpen File Ctrl+O"
406, "\nHistory List Ctrl+H (press again to hide)"
407, "\nPage Info Ctrl+I (press again to hide)"
409, "\nGoto Webpage Ctrl+L"
410, "\nPrint Page Ctrl+P"
411, "\nShow Bookmarks Ctrl+B"
412, "\nSave Bookmark Ctrl+D"
413, "\nCopy Selection Ctrl+C"
414, "\nFind Text In Page Ctrl+F"
}

String Table --> 2051 --> 1033:

STRINGTABLE
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
{
32812, "\nEnlarge Font Ctrl +"
32814, "\nReduce Font Ctrl -"
32815, "\nFind Text In Files Ctrl+Shift+F"
}

String Table --> 2052 --> 1033:

STRINGTABLE
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
{
32816, "\nShow Cookies Ctrl+Shift+H"
32818, "\nWeb Search Ctrl+G"
32819, "\nWeb Search Ctrl+G"
32820, "\nAbout OffByOne F1"
32822, "\nEnable External Players"
}

String Table --> 2060 --> 1033:

STRINGTABLE
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
{
32956, "\nReload F5"
32958, "\nStop Esc"
}

String Table --> 3603 --> 1033:

STRINGTABLE
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
{
57642, "\nSelect All Ctrl+A"
}

If you haven't done so already since the last save, save your progress! Our next section is on adjusting the dialogue boxes to be a little less cramped. Open the "Dialog" item on the left side of the Resource Hacker window. You can follow the same procedures, (preferably making judicious use of copy and paste), as before to change all the items except "30772" so that their sub-sub items, (all numbered "1033" again), are as follows:

Dialog --> 100 --> 1033:

100 DIALOG 34, 22, 260, 138
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "About The Off By One Web Browser"
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
FONT 8, "MS Sans Serif"
{
CONTROL 128, 128, STATIC, SS_ICON | WS_CHILD | WS_VISIBLE, 16, 17, 20, 20
CONTROL "The Off By One Web Browser", -1, STATIC, SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 44, 16, 104, 8
CONTROL "Copyright (c) 1995-2006 Home Page Software Inc.", -1, STATIC, SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 44, 47, 159, 8
CONTROL "&OK", 1, BUTTON, BS_DEFPUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 217, 10, 32, 35
CONTROL "", -1, BUTTON, BS_GROUPBOX | WS_CHILD | WS_VISIBLE, 5, 0, 250, 132
CONTROL "", -1, BUTTON, BS_GROUPBOX | WS_CHILD | WS_VISIBLE, 10, 6, 201, 75
CONTROL "", -1, BUTTON, BS_GROUPBOX | WS_CHILD | WS_VISIBLE, 11, 82, 238, 44
CONTROL "A Webster Code Base Product.", -1, STATIC, SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 44, 58, 155, 8
CONTROL "V 3.5.d IIsi", -1, STATIC, SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 153, 16, 52, 8
CONTROL "", 237, STATIC, SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 44, 28, 155, 8
CONTROL "More keyboard shortcuts and better dialogs", 267, STATIC, SS_RIGHT | WS_CHILD | WS_VISIBLE | WS_GROUP, 44, 37, 155, 8
CONTROL "&Download Site - OffByOne.com", 270, BUTTON, BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 17, 92, 108, 12
CONTROL "Home Page &Software Inc.", 271, BUTTON, BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 17, 108, 108, 12
CONTROL "Off By One &Help && Support ", 272, BUTTON, BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 136, 92, 108, 12
CONTROL "&Never Mind", 2, BUTTON, BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 136, 108, 108, 12
CONTROL "", 238, STATIC, SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 44, 69, 163, 8
}

Dialog --> 342 --> 1033:

342 DIALOG 0, 0, 356, 46
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Open URL"
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
FONT 8, "MS Sans Serif"
{
CONTROL "&URL:", -1, STATIC, SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 7, 2, 164, 8
CONTROL "", 242, COMBOBOX, CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_TABSTOP, 7, 12, 343, 226
CONTROL "OK", 1, BUTTON, BS_DEFPUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 234, 29, 50, 14
CONTROL "Cancel", 2, BUTTON, BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 291, 29, 50, 14
}

Dialog --> 353 --> 1033:

353 DIALOG 0, 0, 178, 84
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Find"
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
FONT 8, "MS Sans Serif"
{
CONTROL "&Find This Text:", -1, STATIC, SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 7, 2, 164, 8
CONTROL "", 251, EDIT, ES_LEFT | ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP, 7, 12, 164, 12
CONTROL "How", -1, BUTTON, BS_GROUPBOX | WS_CHILD | WS_VISIBLE, 7, 25, 108, 54
CONTROL "Find &Next", 246, BUTTON, BS_DEFPUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 11, 38, 48, 16
CONTROL "Find &Prev", 247, BUTTON, BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 11, 58, 48, 16
CONTROL "Match &Case", 245, BUTTON, BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 63, 40, 49, 10
CONTROL "&Done", 1, BUTTON, BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 63, 58, 48, 16
CONTROL "Jump to", -1, BUTTON, BS_GROUPBOX | WS_CHILD | WS_VISIBLE, 119, 25, 54, 54
CONTROL "&Top", 248, BUTTON, BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 123, 36, 45, 12
CONTROL "&Bottom", 249, BUTTON, BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 123, 50, 45, 12
CONTROL "&Selection", 250, BUTTON, BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 123, 64, 45, 12
}

Dialog --> 450 --> 1033:

450 DIALOG 0, 0, 236, 96
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "grep"
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
FONT 8, "MS Sans Serif"
{
CONTROL "Fi&nd string:", -1, STATIC, SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 7, 7, 45, 8
CONTROL "", 457, COMBOBOX, CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_TABSTOP, 59, 7, 110, 30
CONTROL "In files of &type:", -1, STATIC, SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 7, 22, 45, 8
CONTROL "", 456, COMBOBOX, CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_TABSTOP, 59, 22, 110, 30
CONTROL "In f&older:", -1, STATIC, SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 7, 37, 45, 8
CONTROL "", 458, COMBOBOX, CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 59, 37, 110, 30
CONTROL "Match &whole word only", 454, BUTTON, BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 7, 54, 91, 10
CONTROL "Look in &subfolders", 455, BUTTON, BS_AUTOCHECKBOX | WS_CHILD | WS_TABSTOP, 7, 72, 66, 10
CONTROL "Match &case", 245, BUTTON, BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 102, 54, 71, 10
CONTROL "&Find", 459, BUTTON, BS_DEFPUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 179, 7, 50, 14
CONTROL "&Cancel", 2, BUTTON, BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 179, 24, 50, 14
CONTROL "", 453, STATIC, SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 7, 70, 222, 8
CONTROL "", 452, STATIC, SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 7, 81, 222, 8
}

Dialog --> 462 --> 1033:

462 DIALOG 0, 0, 307, 112
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Proxy Setup Dialog"
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
FONT 8, "MS Sans Serif"
{
CONTROL "OK", 1, BUTTON, BS_DEFPUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 248, 11, 50, 14
CONTROL "Cancel", 2, BUTTON, BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 249, 29, 50, 14
CONTROL "Proxy &Host Name:", -1, STATIC, SS_RIGHT | WS_CHILD | WS_VISIBLE | WS_GROUP, 10, 22, 60, 8
CONTROL "", 215, EDIT, ES_LEFT | ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP, 74, 20, 159, 12
CONTROL "Proxy &Port:", -1, STATIC, SS_RIGHT | WS_CHILD | WS_VISIBLE | WS_GROUP, 18, 38, 52, 8
CONTROL "", 216, EDIT, ES_LEFT | ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP, 74, 36, 23, 12
CONTROL "&User Name:", -1, STATIC, SS_RIGHT | WS_CHILD | WS_VISIBLE | WS_GROUP, 28, 73, 42, 8
CONTROL "", 217, EDIT, ES_LEFT | ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP, 74, 71, 109, 12
CONTROL "User Pass&word:", -1, STATIC, SS_RIGHT | WS_CHILD | WS_VISIBLE | WS_GROUP, 14, 88, 56, 8
CONTROL "", 238, EDIT, ES_LEFT | ES_PASSWORD | ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP, 74, 87, 109, 12
CONTROL "Proxy Server Setup", -1, BUTTON, BS_GROUPBOX | WS_CHILD | WS_VISIBLE, 7, 7, 235, 48
CONTROL "User Setup", -1, BUTTON, BS_GROUPBOX | WS_CHILD | WS_VISIBLE, 7, 58, 235, 47
CONTROL "(0 for none)", -1, STATIC, SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 99, 38, 40, 8
}

Dialog --> 463 --> 1033:

463 DIALOG 0, 0, 298, 73
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Default Pages"
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
FONT 8, "MS Sans Serif"
{
CONTROL "Addresses", -1, BUTTON, BS_GROUPBOX | WS_CHILD | WS_VISIBLE, 7, 1, 284, 51
CONTROL "Start Page:", -1, STATIC, SS_RIGHT | WS_CHILD | WS_VISIBLE | WS_GROUP, 10, 16, 44, 8
CONTROL "", 274, EDIT, ES_LEFT | ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP, 56, 14, 192, 12
CONTROL "Home Page:", -1, STATIC, SS_RIGHT | WS_CHILD | WS_VISIBLE | WS_GROUP, 10, 32, 47, 8
CONTROL "", 207, EDIT, ES_LEFT | ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP, 56, 30, 192, 12
CONTROL "OK", 1, BUTTON, BS_DEFPUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 186, 56, 50, 14
CONTROL "Cancel", 2, BUTTON, BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 242, 56, 50, 14
CONTROL "Blank", 275, BUTTON, BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 252, 14, 33, 12
}

The item we didn't change is for the print progress dialogue, which didn't seem to need any modification to me. Now, hopefully, you compiled each of this last set as you went along. Save your progress again as a new copy of OffByOne, just in case. With just some finishing touches we can make sure that the version information displayed in the properties window for the finished file shows that this is a modified version, which is handy when checking files by properties rather than opening them. Open the "Version Info" item on the left side of the Resource Hacker window, burrow down to the usual ID "1033", click it, and make it look like this:

1 VERSIONINFO
FILEVERSION 3,5,4,0
PRODUCTVERSION 3,5,4,0
FILEOS 0x4
FILETYPE 0x2
{
BLOCK "StringFileInfo"
{
BLOCK "040904B0"
{
VALUE "Comments", "Free for non-commercial use."
VALUE "CompanyName", "Off By One Productions, a division of Home
Page Software Inc."
VALUE "FileVersion", "3.5.d IIsi"
VALUE "InternalName", "OffByOne"
VALUE "LegalCopyright", "Copyright (c) 1995-2006 Home Page Software
Inc."
VALUE "Contact", "HomePageSW.com"
VALUE "Download", "OffByOne.com"
VALUE "OriginalFilename", "ob1.exe"
VALUE "FileDescription", "The OffByOne Browser - A Webster Code Base
Product"
VALUE "ProductName", "The Off By One Web Browser"
VALUE "ProductVersion", "3.5.d IIsi"
VALUE "OLESelfRegister", ""
}
}

BLOCK "VarFileInfo"
{
VALUE "Translation", 0x0409 0x04B0
}
}

Click "Compile Script" for the last time, save the progress and test your results. If everything's ok, you can delete all the intermediary backups. Keep the very first one you made before changes for a little while, just in case you find a problem later that requires the original true unchanged file. You now have working keyboard shortcuts for most useful functions - and in somewhat concordance with modern expectations, too - and dialogue boxes that don't require so much strain to view a significant portion of their contents.

If anybody's feeling really adventurous, they can replace the Icon, Bitmap and Cursor resources with ones having more elegance and beauty, as befits this day and age. Personally, I'll stop here - at least for now.


 

 

 

 


TOP