WinExplorer by Dexter


Intro
Getting Started
System Requirements
Trouble Shooting

Batch Files

Simple XPL Files
Using VB and Java Script in WinExplorer

VB and Java Script Basics

Contacting the Author

WinExplorer History


WinExplorer is a Win32 GUI application designed to communicate with a wide variety of smartcards.

It's intended purpose is to give hobbyists and professionals a powerful tool for programming smartcards using low cost interfaces. 
It is also a great way to learn about smartcards, VBScript and JavaScript programming.

WinExplorer will work on any speed machine, you DO NOT need to slow down the CPU to use this program.

To use WinExplorer, you will need a Phoenix type interface.
A Phoenix interface is a simple device that plugs into a serial port and uses the RTS line to reset the card. 
Usually the interface is clocked with a standard color burst crystal (3.579545 MHz), or a EXO-3C+ oscillator chip programmed for 3.579545 MHz. 
Every byte sent to the card is echoed back to the computer by the interface due to the way it's designed.

If your interface needs drivers, and/or contains a CPU, it's probably NOT Phoenix compatible.

WinExplorer can use several different script formats to direct it's interaction with a smartcard.
Supported formats are:

Batch execution of scripts is also supported.
Please look at the example files that are included to understand the formats of the different files.

If anybody wants support for perl, python, or REXX, drop me a e-mail and I'll add it in.

WinExplorer is written in Borland C++ Builder 4.0

The Inspiration for WinExplorer comes from 
"Card Explorer" by TheBlob a.k.a. Chris Coe.


Getting Started


Run the program WinExplorer.exe

Open a Script file (.xpl, .xvb, .xjs), or a WinExplorer Batch file (.xpb)

Then Execute Script or Execute batch.

You can edit batch & script files, then save them.


System Requirements:


Windows 95/98/NT/Windows 2000.
    Note: If you are having problems with button graphics not being visible,
             or other menu/button problems, the file you need to update is "comctl32.dll" 
             which is located in your windows\system dir.

    The easiest fix is to install Microsoft Internet Explorer 5.x.

    If you don't want to install IE5, then get the latest comctl32.dll file from here:
        http://www.microsoft.com/msdownload/ieplatform/ie/comctrlx86.asp


    For more info read:
        http://support.microsoft.com/support/kb/articles/Q186/1/76.ASP


The Microsoft Script Control.
    The script control can be downloaded from:
        http://msdn.microsoft.com/scripting/scriptcontrol/x86/sct10en.exe

A serial port.

A Phoenix compatible interface.


Trouble Shooting


WinExplorer will not even start up without installing the Microsoft Script Control.
If you are getting the following message:

        This Version of WinExplorer will not run without installing the Microsoft Script Control.
        Please read the file "readme.txt" or "WinExplorer.htm" for information on how to
        obtain and install the Script Control, and additional files that might be required for this application to run.

You did not install the script control file sct10en.exe. The script control can be downloaded from:
        http://msdn.microsoft.com/scripting/scriptcontrol/x86/sct10en.exe

If WinExplorer starts up but you are having problems running a VB or Java Script, 
please read this section: Using VB and Java Script in WinExplorer


Common Error Messages and what to do about them.

Can't initialize port com x:

This problem occurs if you have the com port in use by another program or device. A big problem with programs written to run in DOS is that they leave the port open even after the program has exited. Do not run any DOS apps that use the com port prior to running WinExplorer. If you do get a hung port, you have to reboot your computer.

 

Reset Failed

This message indicates that WinExplorer is trying to reset the smartcard, and no ATR response has been returned in the time specified for the Reset Delay parameter. 

The cause of this can be many things. 
Common problems are:

 

Timeout from 2A  /  Timeout from 58 command

WinExplorer will send a 2A instruction followed by a 58 instruction to read general information from a DSS smartcard under the following conditions:

If you look at the example scripts included with WinExplorer you will find 2 scripts, "Irdread.xpl" and "fuse.xpl".
These are the instructions sent to the card. A timeout occurs if the card does not respond with enough bytes to satisfy the 
request for information. The causes for this are many and most are caused by the smartcard, not WinExplorer.


To stop WinExplorer from requesting this information from your smartcard, disable the following options:

 

Timeouts during a "Read Card Info" and/or during a script.

If a script tries to read data back from the smartcard, and the smartcard does not supply enough bytes to satisfy the
request, a timeout occurs. 

Again, the causes for this are many and are most caused by the smartcard, not WinExplorer.


Batch Files


A WinExplorer Batch file is a simple list of script files you want to run.

Example Batch:

; This is a WinExplorer Batch File.
; Simply list the script files you want to run in the order you wish to run them in.
; You can run any .xvb, .xjs, or .xpl files from the batch.

irdread.xpl    ; General CAM info
ppvlist.xpl     ; Dump PPV Info
fuse.xpl         ; Get Fuse info


Simple XPL Files


This is the most basic way of sending and receiving data. 
You simply specify the bytes you wish to send in hex one after the other, and they will be sent. 
If you wish to receive some data, simply enter Rxx, where xx is the number of bytes to receive, again in hex. 
You must handle everything except for the ATR (Answer To Reset), including the 5-byte headers, INS echo and switch bytes.
You can add comments to an XPL file by placing a semi-colon character ';' on a line. The rest of the line after the ';' will be ignored.

Example files are supplied to illustrate how XPL files work.


Using VB and Java Script in WinExplorer


WinExplorer is a ActiveX Scripting Host.

This means WinExplorer can run Microsoft's VBScript, JavaScript,
and any other ActiveX scripting engines like perl, python, and REXX.

This Version of WinExplorer will not run without installing the Microsoft Script Control.
You MUST run the file sct10en.exe to install it.

The script control can be downloaded from:
    http://msdn.microsoft.com/scripting/scriptcontrol/x86/sct10en.exe

I also recommend you install the latest scripting engine runtimes from Microsoft.
    http://www.microsoft.com/msdownload/vbscript/scripting.asp


Important:

The Scripting Engines are for Windows 95, Windows 98 & Windows NT 4.0.

If you are running Windows 98 or Windows NT 4.0 you are home free.

If you are running Windows 95 and are getting the following errors:
"A script engine for the specified language can not be created" or "Script Error on Line 0"
or other errors when you try to run a VB or Java Script, you still need to install some components.

Windows 95 users must have OSR2 installed or be running Microsoft Internet Explorer 4.x or later for these files to work properly.
Windows 95 users without Microsoft Internet Explorer 4.x or OSR2 will need to install DCOM before using these files.

If you are running Windows 95 & you feel that you MUST install this stuff piece by piece, 
instead of installing Microsoft Internet Explorer 4.x, you will need the following files:

File 

DL Location

 Description

ste50en.exe http://www.microsoft.com/msdownload/vbscript/scripting.asp  Version 5 VB & Java Runtimes
dcom95.exe http://www.microsoft.com/com/dcom/dcom1_2/download.asp Decom 95

 
For documentation on Programming in VB Script download:
    http://msdn.microsoft.com/scripting/vbscript/download/vbsdoc.exe

For documentation on Programming in Java Script download:
    http://msdn.microsoft.com/scripting/jscript/download/jsdoc.exe


VB and Java Script Basics


The first line in a script must be a comment to tell WinExplorer that this a VB or Java Script.

Examples of the built in functions & proprieties are contained in the demos.
Please look at the included example script files for reference.

The following is a list of the Built in's, the parameters in brackets [] are optional.

The "Sc" Object has the following members:

Function / Property Description

Sc.Verbose = true | false

When set to true, reads & writes are displayed in the output window. 
When false, reads & writes are not displayed.

Sc.Debug = true | false

When set to true, writes are not performed 
but the data is still displayed in the output window.

Sc.DebugBufferStuff(Data String)

When Sc.Debug is set to true, this command will stuff up to 255 bytes into the receive buffer.
 
Sc.Read will return the stuffed bytes.

Sc.BytesInBuffer will return the number of stuffed bytes.

Sc.Read(Number of Bytes)

Read data from card. If Number of Bytes > what is in the receive buffer, you will get a timeout.

Sc.Write(Data String)

Write data to card. "Data String" is a string of ASCII Hex Chars.

Sc.PutByte(Integer Value)

Write a byte to card

Sc.GetByte(Byte Number)

Retrieve a byte from the read buffer (0 thru Bytes Read from last Sc.Read command)

Sc.Print(String)

Print a string to the output window.

Sc.Reset

Perform a Card Reset.

Ret = Sc.InputBox(prompt[, title][, default])

Get user input.

Ret = Sc.ButtonBox(prompt[, buttons][,title]
      [,button1str][,button2str][,button3str] 
      [,button4str][,button5str])

Display a dialog box formatted similarly to MsgBox but with up to 5 user-defined buttons. 
The icon (vbCritical, vbQuestion, vbExclamation, vbInformation) can be specified in the second parameter, as can the default button (vbDefaultButton1, vbDefaultButton2, vbDefaultButton3, vbDefaultButton4, 1024). 
The function returns a number from 1 through 5 (indicating which button was selected) or 0 if the user clicked the "X" in the corner to close the dialog box.

Ret = Sc.MsgBox(prompt[, buttons] [,title])

Display a Message Box, Returns which button was pressed.

Sc.PictureBox(filename [, timeout]
              [, ShowBorder])

Opens a button-less, title-less splash screen that contains the .bmp or .jpg file specified, centered on the screen. Clicking anywhere in the box dismisses the dialog, unless a non-zero timeout value is specified, in which case the dialog box automatically disappears after the specified number of seconds.

Sc.ProgressBox(Prompt, CurrentStep, LastStep,
               [Title])

Displays a progress box with a "thermometer" that fills up based on the percentage of CurrentStep/LastStep. A CurrentStep value of "0" will close the dialog box. If "Prompt" is "", the last string is displayed. 
If "Title" is "", the last string is displayed.

Sc.Err("Error Message")

This function will abort a script and display the line number and the error message.

Sc.Delay(ms)

Delay for xx milliseconds.

Ret = Sc.Log(Text)

Write Text to Log File. 
Returns 0 if successful. 
Returns 1 if "Log Transactions" option is not enabled.

Sc.ByteDelay = DelayTime

Set the Delay Time Between Bytes Sent, in microseconds.

Ret = Sc.Version

Return WinExplorer's Version Number.

Ret = Sc.IsHex(Data String)

Returns true if Data String is Valid Hex Data,
False if Data String contains invalid chars. 

Ret = Sc.Flush()

Flush Serial input buffer. Returns number of bytes flushed.

Ret = Sc.BytesInBuffer

Get the number of bytes pending in the receive buffer.
Returns -1 if the function fails.

Sc.MousePointer = Value 

Changes the mouse pointer. The following values are valid: 

0 (Default) Shape determined by the object. 
1 Arrow. 
2 Cross (crosshair pointer). 
3 I beam. 
4 Not Used. 
5 Not Used. 
6 Size NE SW (double arrow pointing northeast and southwest).
7 Size N S (double arrow pointing north and south). 
8 Size NW SE (double arrow pointing northwest and southeast).
9 Size W E (double arrow pointing west and east). 
10 Up Arrow. 
11 Hourglass (wait). 
12 No Drop. 
13 Arrow and hourglass. 
14 Arrow and question mark. 


The "Fs" Object has the following members:

Function / Property Description

int FileOpen(String FileName, int Mode)

Opens a specified file using a specified access mode.

Use FileOpen to open a file and obtain its Windows file handle. 
The access mode can be one of the following values:

Const fsoOpenRead = 0
Const fsoOpenWrite = 1
Const fsoOpenReadWrite = 2

If the return value is positive, the function was successful and the value is
the file handle of the opened file.
A return value of -1 indicates that an error occurred.

int FileCreate(String FileName)

Creates a new file.

FileCreate creates a new file with the specified name. If the return value is
positive, the function was successful and the value is the file handle of the new file.
If the file already exists, FileCreate will overwrite the existing file.
A return value of -1 indicates that an error occurred.

void FileClose(int Handle)

Closes a specified file.

FileClose closes a file given its handle. The handle is obtained when the
file is opened using FileOpen or FileCreate.

int FileExists(String FileName)

Tests if a specified file exists.

FileExists returns 1 if the file specified by FileName exists.
If the file does not exist, FileExists returns 0.

int FileSeek(int Handle, int Offset, int Origin)
Positions the current file pointer in a previously opened file.

Use FileSeek to position the file pointer in a file that was opened with
FileOpen or FileCreate. Handle contains the file handle that was returned by
FileOpen or FileCreate.

Offset specifies the number of bytes from Origin where the file pointer should
be positioned. Origin is a code with three possible values, denoting the
beginning of the file, the end of the file, and the current position of the file
pointer.

Origin     Action
    0          The file pointer is positioned Offset bytes from the beginning of the file.
    1          The file pointer is positioned Offset bytes from its current position.
    2          The file pointer is positioned Offset bytes from the end of the file.

If FileSeek is successful, it returns the new position of the file pointer;
otherwise, it returns -1.

int FileGetc(int FileHandle)

Gets character from the specified file.

FileGetc returns the next character from the specified file.
The file pointer is incremented after the read to point to the next byte.
The return value is the byte read.

int FilePutc(int FileHandle, int Char)

Puts a character to the specified file.

FilePutc writes a byte to the specified file at the position pointed to
by the file pointer.
The file pointer is incremented after the write to point to the next byte.
The return value is a 1 if the write is successful, or -1 if an error occurred.

String FileOpenDialog(String FileFilter,
                      [String Caption], 
                      [String DefaultFileName])

Display a modal Windows dialog box for selecting and opening files.

Filter Parameter:
    To create file masks, assign a value to the Filter property that
    consists of a description and a mask separated by a vertical bar (pipe)
    character. Do not include spaces around the vertical bar. For example,
    Filter = "Text files (*.txt)|*.TXT";

    Multiple filters should be separated by vertical bars. For example,
    Filter = "Text files (*.txt)|*.TXT|C++ files (*.cpp)|*.cpp";

    To include multiple masks in a single filter, separate the masks with
    semicolons. This works both in the Object Inspector and in program code.
    For example,

    Filter = "Script files|*.xpl;*.xvb;*.xjs";

    If no value is assigned to Filter, the dialog displays all file types.

Caption Parameter:
    Use Caption to specify the text that appears in the file-selection
    dialog’s title bar. If no value is assigned to Caption, the dialog has the
    title "Open".

DefaultFileName Parameter:
    Use DefaultFileName to specify a default file name in the dialog box.

String FileSaveDialog(String FileFilter, 
                      [String Caption], 
                      [String DefaultFileName])

Display a modal Windows dialog box for selecting file names and saving files.

Filter Parameter:
   Same as the FileOpenDialog function

Caption Parameter:
    Use Caption to specify the text that appears in the file-selection
    dialog’s title bar. If no value is assigned to Caption, the dialog has the
    title "Save".

DefaultFileName Parameter:
    Use DefaultFileName to specify a default file name in the dialog box.

Notes: None of the functions in the Fs object will throw errors. (i.e. the script will not abort if a file does not exist, etc.) 
           It is up to the script to do any error handling when using these functions.

          When the script ends, any open files will remain open until you close WinExplorer. 
          Don't forget to close any files you open in your script!


Contacting the Author


Please note, there is NO OFFICIAL website for WinExplorer.

WinExplorer is freeware available to all smartcard users on many websites and irc channels. 
I do not endorse any dealers or any particular websites. 

If you have any comments, questions or suggestions about WinExplorer,
You can e-mail me at WinExplorer@yahoo.com

Please NO questions about the following, I will not even reply to them:

 
You can also find me hanging around on the following IRC channels:

Novernet:
    irc.c-plusnet.com - #DssWare, #Dss/Tech


WinExplorer History


1.0 (9/98)
  • First working version.

1.1 (9/98) 

  • Fixed DTR & RTS line default states. This was causing problems on some machines.

1.2 (9/98) 

  • Added window save stuff & line highlighting of bad script data.

  • Added script check button.

  • Added Card information button.

1.3 (9/98)

  • Added locking to edit panes during card I/O to prevent
    Script/Batch changes while talking to card.

  • Cleaned up SIO code & removed unnecessary delays during card reset.

1.4 (9/98)

  • Fixed "unsigned char" bug in "Read Card Info" resulting in a bad Card / IRD numbers 
    if the least significant byte had the high bit set.

1.5 (9/98) 

  • Added the Expiry day and hex values to the "Read Card Info" function.

1.6 (10/98)

  • Added "Batch/Script has been modified" warnings.

  • Added Time Zone to the "Read Card Info" function.

  • Fixed script check so it ignores tabs.

1.7 (10/98)

  • Added Transaction Logging based off of Cam ID. To turn on logging, 
    Click "Configuration", & make sure  "Log Transactions" is checked. 
    The log file is the Cam ID EG 1234567.log 
    The file is stored in the same dir as WinExplorer.exe

1.8 (10/98)

  • Moved Log Transactions check box to new config page.

  • Added Line Highlight to batch window to show current step.

  • Added Search & Replace for script editing.
    You can use the "Search" item on the main menu, the Script Popup,
    or Ctl-F for find, Ctl-R for replace.

  • Added view for log files by clicking "File" then "View Log Files".

  • WinExplorer will run the application associated with ".log" files
    or Notepad.exe if no association exists.

  • Added Default settings button for serial config.

  • Added a step mode for the batch processing. When active, you must
    press the next step button to continue the batch after each script
    is processed. When the batch is paused, you can do a "Read Card Info".
    Enable or Disable on config screen.

  • Added USW (Update Status Word) Display to output window.
    The USW is displayed after each script is processed.
    Enable or Disable on config screen.

  • Added "Right Click" Popup Menus to all 3 windows.
    Open, Save, Execute functions are on the Popup.
    In the Batch Window, you can open a script file
    by doing a selection of the script name, right click,
    select "Open Script at Cursor".

  • Added a "Hidden" Function for Advanced users:
    By placing the following lines in your WinExplorer.ini file
    you can prevent WinExplorer from doing ALL card resets:

[Advanced]
ResetMode=0

WARNING - DO NOT USE THIS FOR NORMAL CARD PROGRAMMING!
Set ResetMode=1 to turn card resets back on.

1.81 (10/98)

  • Phantom Release, A Beta v1.8 file got into circulation, so I needed to differentiate the files.

1.9 (10/98)

  • Added "Execute From Cursor" to the batch popup menu and
    batch button on tool bar. Just place the cursor anywhere on the
    line in the batch window you wish to start from, Either right click
    or click the down arrow on the batch button on the toolbar, then
    select "Execute From Cursor".

  • Added "Execute To Cursor" to the batch popup menu and
    batch button on tool bar. Just place the cursor anywhere on the
    line in the batch window you wish to stop at, Either right click
    or click the down arrow on the batch button on the toolbar, then
    select "Execute To Cursor".

  • Fixed a problem in "Read Card Info" function that would cause an
    occasional Exception Error if the card returned a incorrect number
    of bytes for a "58" or "2B" command. This only happened when the
    card was REALLY messed up.

1.91 (11/98)

  • Fixed a problem with USW display. If a card reset was not done after
    some types of xpl files, the USW would be incorrect.

2.0 (11/98)

  • WinExplorer now Accepts Command Line Parameters.
    You can now associate .xpl and .xpb files then load
    them by double clicking them like any other windows file.

  • Added a "Advanced" tab to the config form.
    WARNING - DO NOT USE ANY ADVANCED FEATURES
    UNLESS YOU KNOW WHAT YOU ARE DOING!

  • Added "No Card Resets" check box to the "Advanced" tab.
    When checked, you prevent WinExplorer from doing ALL card resets.

  • Added "Ignore Receive Timeouts" check box to the "Advanced" tab.
    When checked, WinExplorer will keep sending data to the card
    even if a receive timeout has occurred.

  • Added "Reset After Timeout" check box to the "Advanced" tab.
    When checked, WinExplorer will do a card reset after a receive timeout has occurred.

2.1 (11/98)

  • Added File DragDrop. WinExplorer will now accept .xpl, .xpb, .xjs, and .xvb files
    dropped on the WinExplorer from the file manager.

  • Fixed command line filename not loading if it contained a space.

  • Reworked code to handle "file modified" checks better.
    A cancel in a save dialog box now will cancel the entire
    operation, not just the file save.

2.2 (11/98)

  • Added Rating, Spending Limit, and PPV Purchase info to "Read Card Info".

  • Added new Communication Parameters for other card types.

3.0 (12/98)

  • Added VB Script and Java Script to WinExplorer.
    See the files VBExample.xpl & JavaExample.xpl for examples.

3.1 (12/98)

  • Added Sc.Log Function to Java & VB Scripting.

  • Modified Sc.InputBox function to display more than one line.

  • Modified Sc.Read so it would not flush out the serial port.

3.2 (12/98)

  • Changed the Default Byte Delay back to 60000 micro seconds.
    Some scripts were timing out at higher speeds. Better Safe than sorry.

  • Fixed a bug in the window restore routines. If a window is
    hidden when you save window settings, it will now be hidden properly
    when WinExplorer is restarted.

  • Added 2 new file types to WinExplorer:
    .Xvb for VB Script files.
    .Xjs for Java Script Files.

  • Added Flushing of serial input buffer before each Sc.Write command.
    This is to keep the read requests synchronized with the
    actual command responses from the card in the event there is
    extra data in the input buffer.
    The "Sc.PutByte" function does NOT check the serial input buffer.

  • Added Abort checking for VB & Java Scripts. Abort is only checked
    when executing a "Sc" function.

  • Added "Sc.PutByte" function.

  • Sc.InputBox function now returns a empty string if cancel button is pressed.

  • Added Sc.ByteDelay property to override WinExplorer Comm Settings for the
    current script. The Original value will reset at the start of a new script.

  • Added Sc.Version to return the version of WinExplorer. Used to make sure
    any script features needed exist.

  • Added Sc.IsHex Function to check if a string contains valid hex data.

  • Added Sc.Flush Function to flush serial input buffer.

3.3 (1/99) 

  • Added "Favorite Files" to menu.

  • Cleaned up code to scroll the output window when focus is lost.

  • Made tab chars work properly in Script Window.

  • Tabs are set at 4 chars.

  • Fixed Sc.Flush, It was ignoring the verbose flag.

3.4 (1/99)

  • Modified "Manage Favorites" so you can remove more than 1 file at a time.

  • Modified "Open Script at Cursor" to prefix drive & path to script name.

  • Fixed a bug in the "Read Card Info" Function. The Pacific Time Zone was
    being displayed as "???". Thanks ^Parrot^ :).

  • Added Fuse byte display to output window.
    The fuse byte is displayed after each script is processed.
    Enable or Disable on config screen.

3.5 (2/99)

  • Now reading Fuse byte from 2B command for display.
    This is faster because only one read is done at the end of a script.

  • No more "Class Not Registered" message for people who did not read the doc.
    Now it says read the file "readme.txt"

  • The horizontal splitter is now maintained as a ratio of the main form size during a resize.

  • Added a "Recent Files" List to the "File", Right Click Popup, and toolbar menus.
    The last 8 script & batch files accessed are on the list.

  • Swapped the layout of the toolbar buttons for batch & script functions.
    It made more sense to have the button layout follow the window layout.

3.6 (4/99)

  • Set serial receive buffer size to 4096

  • Fixed window save & restore yet again.

  • Changed "Read Card Info" to a 2A command.

  • Advanced features "No Card Resets", "Ignore Receive Timeouts", and
    "Reset After Timeout" now work in VB & Java script.

4.0 (8/99) 

  • Well, I finally got around to messing with a "HU" (P3) card.
    WinExplorer now talks to a HU just dandy. The problem seemed to be that the HU would
    output a null for every byte sent to the card, except for the last byte in a packet.
    The solution is to flush the serial port before each new write.
    The downside is that in a VB or Java Script, I flush before each write, so I can't report a
    problem with too many bytes in the receive buffer ala "Extra data in receive buffer ... Flushing buffer".
    A standard XPL file still works the same as before because of the way I parse the script.

  • Fixed a bug in the parser where a trailing single digit would
    get truncated. Thanks to TSoR for pointing this out.

  • Fixed a bug where a rating limit > 0D could have caused a access violation fault.

  • Fixed a bug where in a standard xpl script, a "R" command had to be 2 digits.
    I.E. "R01" worked, "R1" did not.

  • Modified the batch routine to append the current path name to the script to run if
    the script name does not have a qualified path name.

  • WinExplorer now sets the current directory to where the script is located.

  • Added a button to the "Program Settings" page to register .xpl, .xpb, .xvb, and .xjs files with the shell.
    After you click this button, you can double click on a script file and it will launch WinExplorer
    and load the file.

  • Redesigned the Sc.InputBox dialog to be auto sizing, and auto constrained to 90% of
    the screen size. If the width constraint is hit, the text lines are automatically word wrapped.

  • Added a ATR analyzer to the program. All ISO 7816 info is reported.

  • Added the Sc.BytesInBuffer property.

  • Added the Sc.Debug property.

  • Added the Sc.DebugBufferStuff function.

  • Added the Sc.PictureBox function.

  • Added the Sc.ButtonBox function. The dialog is auto sizing, and auto constrained to 90% of
    the screen size. If the width constraint is hit, the text lines are automatically word wrapped.

  • Added the Sc.ProgressBox Function.

  • Added the Sc.Err function.

  • Added a full blown editor with Syntax Highlighting. Way too many features to list off.
    Check out the "right click popup menu" and the new functions in the search menu.

  • Added a Script Print Function to the File Menu.

  • Added a font select dialog for the output window.

4.1 (8/99)

  • I removed the Key Requirement. Enough said.

  • Added a check box on the communication config page to turn the flush before write
    on or off. This makes WinExplorer compatible with version 3.X of itself.
    It seems a new script out there modifies the smartcard to respond with a 4 byte
    "Key" when a command is issued. The card is answering BEFORE the packet send is complete.
    The flush was eating the response bytes.

4.2 (11/99)

  • Added the following script editor options:
      - Tab support added.
      - Cursor Thru Tabs option.
      - Line numbers in gutter option.
      - Cursor Beyond Start Of Line option.

  • Added a "Receive Timeout" parameter to the Comm Settings. This parameter (in milliseconds)
    tells WinExplorer how long to wait for a byte to arrive in the receive buffer before giving up.
    This parameter used to be fixed at 100ms. The default is 200ms.

  • Added a Title to the Sc.ProgressBox function.

  • Modified the Sc.ProgressBox function, If Prompt is "", the last string is displayed

  • Added the Sc.MousePointer property

  • Rewrote this file to make it a little easier to read (I hope).

  • Added the ShowBorder param to Sc.PictureBox

  • Added File/New to the menu to create new xpl, xvb, and xjs files.

  • Added a Save As menu item for Script and Batch files.

  • Added Script and Batch Save buttons.

  • Added a Max ATR of 33 bytes so WinExplorer won't appear to hang getting the 
    ATR from a 99'd or FF'd card.

  • Fixed a bug in the ATR analyzer. It was giving inaccurate information for internally clocked cards.

4.3 (2/00)

  • Added the following script editor options:
      - You can now use multiple fonts and font sizes for the syntax highlighting in the editor.
      - Added a uppercase property for the syntax highlighting.
      - Tab and shift Tab indents/outdents a block
      - Added "Draw Special Symbols" to editor config - eol and eof are drawn.
      - Added "Select Found Text" to editor config - found text is selected.

  • Added a "File Exists, overwrite file?" prompt when doing as "Save As" and the file already exists.

  • WinExplorer will now delete entries in the recent files lists if they don't exist.

  • I increased the capacity of the output window from 64K to 256MB.
    This should fix the "RichEdit line insertion error" and the Sc.Print function
    appearing to stop working that some users were reporting.

  • Re-wrote the Sc.Write function to behave like the write in the xpl engine.

  • Re-wrote the Sc.Read function to behave like the read in the xpl engine,
    it will dump all bytes read in the event of a timeout along with the
    number of bytes requested and number of bytes actually read in the error message.

  • The xpl engine will now return number of bytes requested and number of bytes actually
    read in the error message in the event of a timeout.

  • Fixed the card info function, it was returning "100" for years > 99.
    I now use a 4 digit date, WinExplorer is now Y2K compliant :)

  • Changed the Sc.Version property to return a double instead of a float.
    This fixes the weird rounding errors seen in a JavaScript.

4.4 (4/00)

  • Changed  the "Associate WinExplorer Files" button to a check box.
    The default setting is for WinExplorer to register it's file types with the shell
    each time you run the application.

  • Added a "Allow Multiple Instances" to the "Program Settings" on the config dialog.
    The default setting is to only allow a single instance of WinExplorer to run.
    Any files launched from the shell will be invoked in the existing instance in single instance mode.

  • Added a "Prompt For File Name" to the "Program Settings" on the config dialog.
    This will allow you to specify a file name for the log file instead of using the CAM Id.
    This is mainly to allow non DSS users to enable transaction logging.

  • WinExplorer now handles spaces in file names & directories correctly when launching a file
    from the shell.

  • Added a new object to the scripting model to support binary file reading & writing.
    The functions contained in the "Fs" object are:
    FileOpen, FileCreate, FileClose, FileExists, FileSeek, FileGetc, FilePutc,
    FileOpenDialog, and FileSaveDialog.

    Check out the sample file "FileSystem.xvb".
    For more info, see the section on the "Fs" object in "VB and Java Script Basics".