Using ProtectIT

Overview

ProtectIT is a lightweight ActiveX programming tool created with and designed for developers using Visual Basic 6.

It can be used in any other programming environment but the VB6 runtime dll will also need to be distributed with such an application.

The unregistered version of the control has no limitations in the control itself, you will just the the unregistered about screen each time you load the control - applications compiled using the unregistered version will display the about screen EVERY time they are run. Also, the Registration Code Generator is limited to only creating codes for the default passphrase 'ABC'. Registering is easy and secure through our website and the necessary registered files are immediately downloadable.

ProtectIT offers developers 5 methods to immediately turn any application into protected shareware

Making your application shareware allows you to distribute a free 'Time Trial' or 'Demonstration' version of your application, which can quickly and easily be registered using several extremely secure methods (or your own) upon purchase of the software.

The 4 protection modes are listed below:

Never Expires Mode - the application will run unregistered indefinitely. This method is useful if you want to disable certain key features of your application, making it desirable to the user to register it. After registering, all functionality would be restored.

Specific Date Mode - you must set the expiry date using the DateExpires property. The application will function normally until it is run on the specified date - further use is disabled until a valid registration code is entered.

Number of Days Mode - you must set the number of days using the EvaluationDaysTotal property. This number is decreased each day the application is started until the limit is reached. After this number reaches 0, the application will no longer run unless registered.

Note. Tampering with the system date has no effect on this feature - it will still expire, changing the system date will, if anything, make it expire sooner.

Number of Executions Mode - you must set the number of days using the EvaluationRunsTotal property. This number is decreased each time the application is started until the limit is reached. After this number reaches 0, the application will no longer run unless registered

Number of Days or Number of Executions Mode - both the properties must be set, with the application expiring after whichever limit is reached first.

ProtectIT also allows 3 built in registration mechanisms

1-Single Registration Code. With this method, the only thing your end user needs to register your application is a valid serial number. This is ideal for easy distribution of serial codes, for example, through a website once purchase details are authorised.

2-Username. With this method, the registration code is only valid for the username specified. This method would need the end user to send the user name to you and then you could send their corresponding unlocking code. This is more secure than Option 1, but slower to implement.

3-Lock To Computer. With this method, ProtectIT generates a unique identification number for any computer on which your software is installed. This identification number is required to generate the registration code and likewise will only unlock software running on a computer whose identification number matches the one used to generate the registration code. This option is extremely secure; it stops people sharing their registration codes and is as fast as option 2

With the ability for the developer to intercept the validation routine and implement their own method, this is an immensely powerful registration tool, with options allowing the developer to get the absolute maximum protection for their applications.


Integrating ProtectIT with your application.

There are only two lines of code you must add to your program for ProtectIT to work.

In the Initialise or Load event of your main form, you must add a call to the ProtectIT.CheckRegistration method. This initialises ProtectIT. Until you call the CheckRegistration method, no ProtectIT properties are valid.

In the ProtectIT.OnSuggestExit event, you must add a line of code to terminate your program (e.g., "End" in Visual Basic).

Initial Execution of your Program

The first time your program is run, the component will create the required registry entries and then generate an OnInitialRun event. If the component cannot create these entries (due to not having write permissions over a network, etc) an OnCannotSaveToRegistry event will be generated.

During the Trial Period

Each time the program is started before a valid registration code has been entered an OnWithinTrialPeriod event will be generated. The number of days or executions remaining are available in the EvaluationDaysLeft or EvaluationRunsLeft properties, whichever is applicable

The Trial Expiration

When the trial has expired, an OnTrialExpired event will be generated.

How ProtectIT Uses the Registry

Various information about the protection status of your program is encrypted in two separate locations in the Windows registry. The information in both of these locations much match or else an OnRegistryModified event will be fired. Select the registry locations you would like ProtectIT to use by setting the RegistryLocation and RegistryLocationBackup property.

Warning: By default, the RegistryLocation and RegistryLocationBackup properties are set to "HKEY_LOCAL_MACHINE\Software\ProtectIT\RegistryKey1" and "HKEY_LOCAL_MACHINE\Software\ ProtectIT\RegistryKey2".

You must change these values if you do not want it to be very obvious where you are storing your ProtectIT information.

For more information, click here to view the Security Tips section of this Help File (Registered Users Only)


Protection Features

ProtectIT allows 3 built in registration mechanisms (UnlockCodeType property)

1-Single Registration Code. With this method, the only thing your end user needs to register your application is a valid serial number. This is ideal for easy distribution of serial codes, for example, through a website once purchase details are authorised.

2-Username. With this method, the registration code is only valid for the username specified. This method would need the end user to send the user name to you and then you could send their corresponding unlocking code. This is more secure than Option 1, but slower to implement.

3-Lock To Computer. With this method, ProtectIT generates a unique identification number for any computer on which your software is installed. This identification number is required to generate the registration code and likewise will only unlock software running on a computer whose identification number matches the one used to generate the registration code. This option is extremely secure; it stops people sharing their registration codes and is as fast as option 2

With the ability for the developer to intercept the validation routine and implement their own method, this is an immensely powerful registration tool, with options allowing the developer to get the absolute maximum protection for their applications.


Setting the Protection Type

To use the ProtectIT control in your application, first decide whether you want ProtectIT to never expire, expire on a specific date or after a specific number of days or executions (or both).

You can select the type by using the ProtectionType property.

If using the Never Expires Mode (0-protNeverExpires), the application will run unregistered indefinitely. This method is useful if you want to disable certain key features of your application, making it desirable to the user to register it. After registering, all functionality would be restored.

If using the Specific Date Mode (1- protExpiryDate), you must set the expiry date using the DateExpires property. The application will function normally until it is run on the specified date - further use is disabled until a valid registration code is entered.

If using the Number of Days Mode (2- protExpiryDays), you must set the number of days using the EvaluationDaysTotal property. This number is decreased each day the application is started until the limit is reached. After this number reaches 0, the application will no longer run unless registered.

Note. Tampering with the system date has no effect on this feature - it will still expire, changing the system date will, if anything, make it expire sooner.

If using the Number of Executions Mode (3- protExpiryExecutions), you must set the number of days using the EvaluationRunsTotal property. This number is decreased each time the application is started until the limit is reached. After this number reaches 0, the application will no longer run unless registered

If using the Number of Days or Number of Executions Mode (4-protExpiryDaysOrExpiryExecutions), both the properties must be set, with the application expiring after whichever limit is reached first.


Registering ProtectIT Protected Software

To display a registration dialog to allow the user to enter a registration code, call the DisplayRegistrationDialog method.

The registration dialog can be customised by changing the 5 properties starting with RegDlgCaption&ldots;

Using these properties you may change the Form caption, the 2 labels requesting the registration information, and the caption on the 'OK' and 'Cancel' buttons.

You may also implement your own registration dialog if using the 'SingleCode' or 'Username' UnlockCodeType property. You must simply set the Username property to the username required, and pass the registration code to ProtectIT's verification routine using the VerifyLicenceCode method.

You cannot use your own registration dialog if you are using the 'LockToComputer' type of UnlockCodeType property.

See the Registration Code Generator section of this help file for information on how to generate codes to unlock your application

Registration Code Generator

With the package you will find a code generator program. This i

If an incorrect registration code is entered an OnInvalidCodeEntered event is generated. A correct registration code will cause an OnValidCodeEntered event to be generated.

The number of times the user can attempt to enter an registration code is determined by the UnlockAttempts property. If the UnlockAttempts property is exceeded, an OnExceededAttempts event is generated immediately following the OnInvalidCodeEntered event. The current number of attempts can be accessed using the UnlockAttemptNumber property.

Encryption

ProtectIT uses its own extremely secure algorithm to encrypt the information on your application's registration status using the Passphrase as an encryption key. This means that unless someone knows your passphrase, they cannot generate a valid registration number. Also, the registration number generator is only distributed with the purchase of the control, it is not freely available to download

Make sure to set the Passphrase property to a unique value. This prevents registration codes for other applications that also happen to use ProtectIT from working with your application.

Keeping Track of the System Date

The current date of the system is stored each time the application is run. If the user sets the system clock back to before the date the application was last run, ProtectIT detects this and adjusts their time remaining accordingly.

Easiest way to use ProtectIT

The easiest way to use ProtectIT is to drop it on the main form, select the trial parameters and registry locations, and call the CheckRegistration method in your application's main form Load event. When you wish the user to enter their registration information, call the DisplayRegistrationDialog method. Make sure to provide code inside the OnSuggestExit event to shut down your application.


Registration Code Generator

With the package you will find a code generator program. This is a very straight forward program to use.

First, you must enter the passphrase you have used in the application you are generating a registration code for.

Next, you must choose the unlock code type from the 3 options, Single Code, Username or Lock To Computer.

If you select option 2 or 3, you will need to enter additional information to allow you to generate the registration code

If option 2 (Username) - you must enter the username used by your customer and enter it EXACTLY as the user

If option 3 (Lock To Computer) - you must enter the Computer I.D. generated by the ProtectIT registration dialog. This I.D. is shown at the top of the dialog and is in the form 1234-1234-1234. You must enter this code WITH the hyphens and with no spaces between any digits. The code generator will attempt to tidy up your input if you do enter a space or miss a hyphen, but it is best to enter it as it is required.

The code generated must then be entered by your user using the information EXACTLY as it was supplied to you or else the code will obviously fail.

i.e. If the code is used with a different username it will fail if using option 2 - if using option 3 it will fail if it is not entered on the computer which generated the I.D.


Distribution

ProtectIT consists of a single lightweight ocx called wwProt10.ocx. It must not be distributed with its licence file as this is a breach of you licence agreement made when purchasing the control.

This must be distributed with the Visual Basic 6 runtime, msvbvm60.dll

Note. You will already have to distribute this file with your application if your program is written in Microsoft Visual Basic 6

If you do not use Visual Basic and do not have this file, it can be downloaded from our website, www.web-wiz.com


CodeType

CodeTypeConstants

The UnlockCodeType property has one of the following values

VALUE | CONSTANT | DESCRIPTION
0 | codeSingle | A single code will unlock any copy of the application
1 | codeUsername | Unlock code is only valid for a specific username
2 | codeLockToComputer | Unlock code is only valid for the individual computer it is running on


Protection

ProtectionConstants

The ProtectionType property has one of the following values

VALUE | CONSTANT | DESCRIPTION
0 | protNeverExpires | Functionality never expires
1 | protExpiryDate | Functionality expires on or after a specific date
2 | protExpiryDays | Functionality expires after a set number of days
3 | protExpiryExecutions | Functionality expires after a set number of executions
4 | protExpiryDaysOrExpiryExecutions | Functionality expires after a set number of days OR a set number of executions, whichever is reached first


OnCannotReadRegistry

OnCannotReadRegistry Event

Fired if the control cannot read the encrypted information from the registry

Syntax

Private Sub Object_OnCannotReadRegistry

Part | Description
Object | Object expression that evaluates to a ProtectIT control


OnCannotSaveToRegistry

OnCannotSaveToRegistry Event

Fired if the control cannot save the encrypted information to the registry

Syntax

Private Sub Object_OnCannotSaveToRegistry

Part | Description
Object | Object expression that evaluates to a ProtectIT control


OnExceededAttempts

OnExceededAttempts Event

Fired if the user has reached the maximum number of attempts to enter a valid registration code as specified in the UnlockAttempts property

Syntax

Private Sub Object_OnExceededAttempts

Part | Description
Object | Object expression that evaluates to a ProtectIT control


OnIllegalCode

OnIllegalCode Event

Fired when an illegal code is read in from the registry

Syntax

Private Sub Object_OnIllegalCode

Part | Description
Object | Object expression that evaluates to a ProtectIT control


OnInitialRun

OnInitialRun Event

Fired the first time the application is run

Syntax

Private Sub Object_OnInitialRun(CancelInitialRun as Boolean)

Part | Description
Object | Object expression that evaluates to a ProtectIT control
CancelInitialRun | Boolean. Dictates if ProtectIT should continue with the Initial Run procedure and set up the application as new in the registry. Can be set to true if you detect this event has been triggered by a user trying to reset their trial period - see the Security Tips section of the help file and the related demonstration project for an example.


OnInvalidCodeEntered

OnInvalidCodeEntered Event

Fired when an illegal code is entered in the Registration Dialog

Syntax

Private Sub Object_OnInvalidCodeEntered

Part | Description
Object | Object expression that evaluates to a ProtectIT control


OnRegistered

OnRegistered Event

Fired whenever the CheckRegistration method is queried and the application is registered

Syntax

Private Sub Object_OnRegistered

Part | Description
Object | Object expression that evaluates to a ProtectIT control


OnRegistryModified

OnRegistryModified Event

Fires if there is a discrepancy between the two registry keys' data

Syntax

Private Sub Object_OnRegistryModified

Part | Description
Object | Object expression that evaluates to a ProtectIT control


OnSuggestExit

OnSuggestExit Event

Fires if ProtectIT determines your application should terminate. Examples would be if the trial has expired or if the registry keys have been modified

Syntax

Private Sub Object_OnSuggestExit

Part | Description
Object | Object expression that evaluates to a ProtectIT control


OnTrialExpired

OnTrialExpired Event

Fired whenever the CheckRegistration method is queried and the trial period has expired

Syntax

Private Sub Object_OnTrialExpired

Part | Description
Object | Object expression that evaluates to a ProtectIT control


OnUserUnlockCheck

OnUserUnlockCheck Event

Example - OnUserUnlockCheck Event Example

Fires after the user has entered information in the Registration Dialog. The purpose of this event is to allow the developer to use their own algorithm to determine a valid licence code. If the event is not implemented, ProtectIT uses its own validation routine.

Note. ProtectIT will continue with its encryption as usual and will save the information specified by the developer.

Syntax

Private Sub Object_OnUserUnlockCheck(ByVal LicenceCode As String, ByVal Username As String, ByVal ComputerID As String)

Part | Description
Object | Object expression that evaluates to a ProtectIT control
LicenceCode | String. The licence code entered in the Registration Dialog
Username | String. The username entered in the Registration Dialog
ComputerID | String. The unique computer ID generated by the ProtectIT object if its' UnlockCodeType property is set to [2 - codeLockToComputer]. Returns null otherwise.


OnValidCodeEntered

OnValidCodeEntered Event

Fires after the user has entered a valid code in the Registration Dialog.

Syntax

Private Sub Object_OnValidCodeEntered

Part | Description
Object | Object expression that evaluates to a ProtectIT control


OnWithinTrialPeriod

OnWithinTrialPeriod Event

Fired whenever the CheckRegistration method is queried and the trial period has not expired

Syntax

Private Sub Object_OnWithinTrialPeriod

Part | Description
Object | Object expression that evaluates to a ProtectIT control


CheckRegistration

CheckRegistration Method

Use this method to check the current state of the protection

This should be called as soon as the application starts, it sets the properties and raises events to enable the developer to choose how to handle each state of the protection.

Syntax

object.CheckRegistration

Part | Description
Object | Object expression that evaluates to a ProtectIT control

Remarks

The CheckRegistration method can generate any of the following events:-

OnCannotSaveToRegistry()

OnExceededAttempts()

OnIllegalCode()

OnInitialRun()

OnInvalidCodeEntered()

OnRegistered()

OnRegistryModified()

OnSuggestExit()

OnTrialExpired()

OnUserUnlockCheck(ByVal LicenceCode As String, ByVal Username As String, ByVal ComputerID As String)

OnValidCodeEntered()

OnWithinTrialPeriod()


DisplayRegistrationDialog

DisplayRegistrationDialog Method

Use this method to display the registration dialog to the user.

ProtectIT will generate events depending on the outcome of the registration attempt

Important Note. If you call the Registration Dialog when the program is registered and an invalid code is entered, it will revert the application to its unregistered state, which then of course, may have exceeded its' trial period. It is recommended that you disable any option to call the Registration Dialog if the application is registered

Syntax

object.DisplayRegistrationDialog

Part | Description
Object | Object expression that evaluates to a ProtectIT control

Remarks

The DisplayRegistrationDialog method can generate any of the following events:-

OnCannotSaveToRegistry()

OnExceededAttempts()

OnInvalidCodeEntered()

OnRegistered()

OnSuggestExit()

OnUserUnlockCheck(ByVal LicenceCode As String, ByVal Username As String, ByVal ComputerID As String)

OnValidCodeEntered()


VerifyLicenceCode

VerifyLicenceCode Method

Use this method to implement your own registration dialog. Instead of using the DisplayRegistrationDialog method when you wish to enter a registration code, you should pass the registration code entered in your registration dialog, you must also set the Username property to the name entered by the user

Syntax

object.VerifyLicenceCode(ByVal RegistrationCode As String)

Part | Description
Object | Object expression that evaluates to a ProtectIT control
RegistrationCode | The registration code entered by the user

Remarks

The VerifyLicenceCode method can generate any of the following events:-

OnExceededAttempts()

OnIllegalCode()

OnInvalidCodeEntered()

OnRegistered()

OnSuggestExit()

OnUserUnlockCheck(ByVal LicenceCode As String, ByVal Username As String, ByVal ComputerID As String)

OnValidCodeEntered()


CodeOverrideInvalid

CodeOverrideInvalid Property

Example - OnUserUnlockCheck Event Example

If implementing your own code validation algorith using the OnUserUnlockCheck event, this property MUST BE SET TO TRUE if the code is not valid

Syntax

object.CodeOverrideInvalid

Datatype

Boolean

Default Value

False

Remarks

Be careful when implementing your own routine. If this property is not set to True if your validation fails, the control will continue with its own validation routine.


CodeOverrideValid

CodeOverrideValid Property

Example - OnUserUnlockCheck Event Example

If implementing your own code validation algorithm using the OnUserUnlockCheck event, this property should be set to True if the code is validated

Note. If the validation fails, the CodeOverrideInvalid property MUST be set to true

Syntax

object.CodeOverrideValid

Datatype

Boolean

Default Value

False

Remarks

Be careful when implementing your own routine. If the corresponding CodeOverrideInvalid property is not set to True if your validation fails, the control will continue with its own validation routine, and quite possibly treat the code as invalid.


DateExpires

DateExpires Property

The expiration date of the application

Only applicable if the ProtectionType is set to [1 - protExpiryDate]

Syntax

object.DateExpires

Datatype

Date

Default Value

0

Remarks

Read only


DateInstalled

DateInstalled Property

The date the application was first run by the user

Syntax

object.DateInstalled

Datatype

Date

Default Value

0

Remarks

Runtime only


DateLastRun

DateLastRun Property

The date the application was last ran

Syntax

object.DateLastRun

Datatype

Date

Default Value

0

Remarks

Runtime only


EvaluationDaysLeft

EvaluationDaysLeft Property

The number of days left until the application expires

Only applicable if the ProtectionType is set to [2 - protExpiryDate] or [4 - protExpiryDaysOrExpiryExecutions]

Syntax

object.EvaluationDaysLeft

Datatype

Long

Default Value

0

Remarks

Runtime only. Maximum value = 99999


EvaluationDaysTotal

EvaluationDaysTotal Property

The total number of days until the application expires

Only applicable if the ProtectionType is set to [2 - protExpiryDate] or [4 - protExpiryDaysOrExpiryExecutions]

Syntax

object.EvaluationDaysTotal

Datatype

Long

Default Value

0

Remarks

Maximum value = 99999


EvaluationRunsLeft

EvaluationRunsLeft Property

The number of executions left until the application expires

Only applicable if the ProtectionType is set to [3 - protExpiryExecutions] or [4 - protExpiryDaysOrExpiryExecutions]

Syntax

object.EvaluationRunsLeft

Datatype

Long

Default Value

0

Remarks

Runtime only. Maximum value = 99999


EvaluationRunsTotal

EvaluationRunsTotal Property

The total number of executions until the application expires

Only applicable if the ProtectionType is set to [3 - protExpiryExecutions] or [4 - protExpiryDaysOrExpiryExecutions]

Syntax

object.EvaluationRunsTotal

Datatype

Long

Default Value

0

Remarks

Maximum value = 99999


Passphrase

Passphrase Property

The passphrase used to generate the encrypted licence code

Syntax

object.Passphrase

Datatype

String

Default Value

ABC

Remarks

Maximum length = 100 Characters


ProtectionType

ProtectionType Property

The protection type to be used for the application

Syntax

object.ProtectionType

Datatype

Protection Constants

Default Value

0 - protNeverExpires

Remarks

Read only at runtime


RegDlgCaptionCancel

RegDlgCaptionCancel Property

The caption to display on the default Registration Dialog 'Cancel' button

Syntax

object.RegDlgCaptionCancel

Datatype

String

Default Value

"Cancel"

Remarks


RegDlgCaptionCode

RegDlgCaptionCode Property

The caption to display on the default Registration Dialog 'Registration Code' label

Syntax

object.RegDlgCaptionCode

Datatype

String

Default Value

"Reg. Code"

Remarks


RegDlgCaptionForm

RegDlgCaptionForm Property

The caption to display on the default Registration Dialog Form Title Bar

Syntax

object. RegDlgCaptionForm

Datatype

String

Default Value

"Registration"

Remarks


RegDlgCaptionName

RegDlgCaptionName Property

The caption to display on the default Registration Dialog 'Name' label

Syntax

object. RegDlgCaptionName

Datatype

String

Default Value

"Name"

Remarks


RegDlgCaptionOK

RegDlgCaptionOK Property

The caption to display on the default Registration Dialog 'OK' button

Syntax

object.RegDlgCaptionOK

Datatype

String

Default Value

"OK"

Remarks


Registered

Registered Property

The registration status of the application

Syntax

object.Registered

Datatype

Boolean

Default Value

False

Remarks

Runtime only


RegistryKey1

RegistryKey1 Property

The primary location to store the encrypted registration information

It will always be a subkey of HKEY_LOCAL_MACHINE, the character \ specifies a new subkey

i.e. The primary encrypted information would be the contents of the string value 'Key' in the following structure:

HKEY_LOCAL_MACHINE

->SOFTWARE

-->PROTECTIT

--->REGISTRYKEY1

Syntax

object.RegistryKey1

Datatype

String

Default Value

Software\ProtectIT\Registrykey1

Remarks

Maximum length = 150 Characters


RegistryKey2

RegistryKey2 Property

The secondary location to store the encrypted registration information

Syntax

object.RegistryKey2

Datatype

String

Default Value

Software\ProtectIT\Registrykey2

Remarks

Maximum length = 150 Characters


UnlockAttemptNumber

UnlockAttemptNumber Property

The number of attempts the user has had to enter a registration code

Syntax

object.UnlockAttemptNumber

Datatype

Long

Default Value

0

Remarks


UnlockAttempts

UnlockAttempts Property

The total number of attempts allowed before the ProtectIT object raises the OnExceededAttempts event

Syntax

object.UnlockAttempts

Datatype

Long

Default Value

0

Remarks


UnlockCodeType

UnlockCodeType Property

The type of registration code required to unlock the application

Syntax

object.UnlockCodeType

Datatype

CodeType Constants

Default Value

0 - codeSingle

Remarks

Read only at runtime


Username

Username Property

The username entered in the registration dialog

Note. The username is stored even if an invalid code is entered

Syntax

object.Username

Datatype

String

Default Value

NullString

Remarks

Maximum length = 50 Characters


UserRegCode

UserRegCode Property

The registration code entered in the registration dialog

Syntax

object.UserRegCode

Datatype

String

Default Value

NullString

Remarks

Maximum Length: 50 Characters


ValidCode

ValidCode Property

True if the user has entered a valid registration code

Syntax

object.ValidCode

Datatype

Boolean

Default Value

False

Remarks


Purchasing ProtectIT

ProtectIT can be ordered on-line via secure credit card payment and the registered version can be downloaded immediately.

To order on-line, visit our website at http://www.web-wiz.com/shopping

ProtectIT costs $150

Purchasing ProtectIT entitles you to free 30 day technical support via email. protectithelp@web-wiz.com

Note. The 30 day technical support only applies to Visual Basic development - there is no guaranteed support for any other programming language although it is a very straightforward control with few properties and is incredibly easy to implement.


Holiday Planner

Holiday Planner v1.0

Download Evaluation Version

The Holiday Planner is an electronic version of the Year Planners seen on office walls around the world.

You can highlight squares singly or in blocks by selecting the colour you want then painting with your mouse.

There are 5 available colours and you choose what category you want each to represent (Holiday, Sickness, Training etc)

Unlike the wall version, one click on a menu gives you total days booked and total days taken, for all employees by category for the time being taken off.

Another improvement to the wall version is the ability to select previous and future years (this can save a lot of wall space!!!)

You can also select the start of your holiday year, and the Planner will adjust its display to suit, enabling coverage of two calendar years.

Download an evaluation version from our website:

http://www.web-wiz.com/software


Team Diary

Team Diary v1.0

Download Evaluation Version

The Team Diary is a network enabled diary that lets users see on one screen the diaries of up to 10 members of a team.

The diaries are shown in the form of a planner, with coloured bars indicating the amount of each day taken up by appointments.

A right click on any day shows a pop-up summary of that days appointments for any member of the team.

Appointments can be entered for any member of the team, and alarms can be set by each user for themselves only.

Each user also has a rolling to-do list visible only to themselves.

Two phone books are provided - one team wide accessible to every user, and a personal one for each user.

Any previous years diary can be viewed, and entries can be made up to 5 years ahead.

The Team Diary runs on all versions of Windows from 95 upwards, using a Windows Network.

Download an evaluation version from our website:

http://www.web-wiz.com/software


Web Wizard

Download Evaluation Version

The Web Wizard is a ground breaking application allowing anyone to create their own personal or corporate website. No knowledge of HTML is required whatsoever, all pages are constructed using a friendly windows interface from which you decide what pages are required and enter the content by inputting individual text blocks and selecting pre existing graphics. Actual design of the pages is governed by an ever increasing collection of 'Themes' - individual logo's can be inserted, together with custom background images, as well as the colour for text, links, active links and visited links.

There are a maximum of eight categories for your site, five standard layout pages plus three differently formatted pages specifically intended to allow effective 'News', 'Links' and 'Online Catalogue' pages to be easily created. The 'News' and 'Catalogue' pages allow for a potentially unlimited number of pages depending upon your content, together with an optional javascript search page of your 'Online Catalogue'.

Once created, these pages are easily uploaded to your web host using the inbuilt FTP capabilities. You simply have to input your website FTP address, your username and password (proxy connection also supported). You then initiate the upload of your site at the touch of a button. You can view the status of your upload via the friendly communications screen, where a progress bar shows transmission details of individual files, together with a summary of number of pages/Kb sent out of the total, together with details of any failures. The log of this upload is stored so you can easily find the cause of any problems which may stop files uploading (i.e. Permissions not set correctly by your ISP or a corrupted GIF image etc.)

The websites are designed with the intention of being viewed on version 4 browsers or above (over 95% of browsers) such as Internet Explorer 4 or above, Netscape 4 or above etc. They will be displayed in older browsers, but the formatting may vary depending on the limitations of the browser.

Download an evaluation version from our website:

http://www.web-wiz.com/software

Web Wizard Requirements:

A registered domain name or web space hosted with an Internet Service Provider. Microsoft Windows 95/98, NT/2000. P100 with 10 Mb HD space and 32M RAM. Internet connection allowing Winsock. Minimum Screen Resolution 800x600, 256 Colours.

In order to use Web Wizard Uploader, you need a connection to an Internet Service Provider (ISP) account which makes Windows Sockets (Winsock) available. Winsock is automatically made available when you choose to access your Internet Service Provider using Dial Up Networking (DUN) on Windows 95/98 or NT/2000. Where your ISP offers an "easy" alternative which does not make Winsock available, then you should consult the support function at your ISP for details of how to obtain a DUN connection instead. (If you have installed an internet application such as Internet Explorer independently with success, then Web Wizard should work correctly as these also use Winsock.)

Evaluation version

You can enter the details for your site exactly as a registered user would. The products search page is disabled, along with the uploading section plus, instead of your company information at the foot of each page, you will have 'Web Wizard Evaluation' in large characters. If you decide to purchase the software, you can run the registered version and the site you have already designed may then be freely uploaded.


Example

OnUserUnlockCheck Event Example

Private Sub ProtectIT1_OnUserUnlockCheck(ByVal LicenceCode As String, ByVal Username As String, ByVal ComputerID As String)

'Manual licence code algorithm override procedure
'Any user algorithm can be inserted below
'A VERY simple method is shown but is NOT RECOMMENDED for use

'LicenceCode = The code entered in the registration dialog
'Username = The name entered in the registration dialog
'ComputerID = the unique computer identifier generated by ProtectIT if
'the UnlockCodeType is set to 0 - codeLockToComputer

If LicenceCode = "12345678" Then
'This is the correct code
ProtectIT1.CodeOverrideValid = True
Else
'Code is invalid - MUST set CodeOverrideInvalid to true
ProtectIT1.CodeOverrideInvalid = True
End If

End Sub