Discussion:
Keyboard Scan Code to Unicode Mapping
Jeff Roberts
2006-01-31 12:24:59 UTC
Permalink
Does anyone know of a way to access the keyboard scan code to Unicode mapping ? I need to be able to figure out what if any unicode character will be given to my .net application when a specific keyboard scan code is pressed. I know that the scan code is in the WM_KEY messages, but I need to know the mapping before any keys are pushed. Depending on the national language keyboard I have selected in Windows XP, a different Unicode character may be given to my .net application when a specific key is pressed. Is there any way to communicate with the keyboard driver to determine this ?

thank you

===================================
This list is hosted by DevelopMentor® http://www.develop.com

View archives and manage your subscription(s) at http://discuss.develop.com
Peter Ritchie
2006-01-31 16:48:45 UTC
Permalink
If you're dealing with the KeyPress event the KeyPressEventArgs.KeyChar is
the ASCII character of the key that was pressed. You can simply use the
Encoding.Convert to convert from ASCII to Unicode, for example:

byte[] asciiBytes = new byte[]{(byte)e.KeyChar};
byte[] unicodeBytes = Encoding.Convert(Encoding.ASCII, Encoding.Unicode,
asciiBytes);
char[] unicodeChars = Encoding.Unicode.GetChars(unicodeBytes);

Since KeyPressEventArgs.KeyChar is documented as the ASCII char, I assume
it's already been mapped from the scan code.

KeyUp and KeyDown use KeyEventArgs instead. I don't think there's
anything in .NET 1.1 to do the scan mapping directly. You'd probably have
to P/Invoke MapVirtualKey from user32.

I would suggest using KeyPress unless you need to know the key state
change. KeyUp and KeyDown are not one-to-one with KeyPress. If example,
if the user presses a key and holds it down you will get multiple KeyDown
and KeyPress events, but only one KeyUp event when they release the key.

http://www.peterRitchie.com/

On Tue, 31 Jan 2006 07:24:59 -0500, Jeff Roberts
Post by Jeff Roberts
Does anyone know of a way to access the keyboard scan code to Unicode
mapping ? I need to be able to figure out what if any unicode character
will be given to my .net application when a specific keyboard scan code is
pressed. I know that the scan code is in the WM_KEY messages, but I need
to know the mapping before any keys are pushed. Depending on the national
language keyboard I have selected in Windows XP, a different Unicode
character may be given to my .net application when a specific key is
pressed. Is there any way to communicate with the keyboard driver to
determine this ?
Post by Jeff Roberts
thank you
===================================
This list is hosted by DevelopMentor® http://www.develop.com
View archives and manage your subscription(s) at
http://discuss.develop.com

===================================
This list is hosted by DevelopMentor® http://www.develop.com

View archives and manage your subscription(s) at http://discuss.develop.com
Fabian Schmied
2006-01-31 17:42:45 UTC
Permalink
Post by Peter Ritchie
If you're dealing with the KeyPress event the KeyPressEventArgs.KeyChar is
the ASCII character of the key that was pressed. You can simply use the
byte[] asciiBytes = new byte[]{(byte)e.KeyChar};
byte[] unicodeBytes = Encoding.Convert(Encoding.ASCII, Encoding.Unicode,
asciiBytes);
char[] unicodeChars = Encoding.Unicode.GetChars(unicodeBytes);
What happens if the user presses the 'Ö' key on a German keyboard? Or
some Japanese character on a Japanese keyboard?

The current MSDN2-docs on KeyChar only list a small subset of unicode
characters usable in connection with the KeyChar property. The docs
seem a little vague, if not inconsistent to me, anyway: on the one
hand they say KeyChar contains the ASCII character "that is composed"
(composed?). On the other hand, they say you can get or set the CTRL
key, which doesn't have an ASCII representation.

They also don't say what KeyChar will do if it is queried in response
to a key press of a key producing a non-ASCII character. Or if I try
set the property with the 'Ö' character, for example.

But even if KeyChar contains the right Unicode character in all
situations (which I always thought it would), casting to byte and
reencoding as unicode won't work in many cases and will only give you
an exception. For ASCII-characters, it won't to anything useful
(unicodeChars[0] will contain the original content of e.KeyChar,
unless I'm overlooking something).

Aside from that: for mapping virtual key codes or scan codes to
character values, p/invoking MapVirtualKey will probably be the only,
if you can't use KeyPress or WM_CHAR.

And Jeff: This is not the best list for this question. I think you
might get better answers at the WINFORMS list.

Fabian

===================================
This list is hosted by DevelopMentor® http://www.develop.com

View archives and manage your subscription(s) at http://discuss.develop.com
Jeff Roberts
2006-01-31 17:40:38 UTC
Permalink
Peter,

Sorry, you missed the point. I want to convert from the scan code to the Unicode character it produces without using any key events. I need to know the translation before any keys are pressed !

thanks anyway
Post by Peter Ritchie
If you're dealing with the KeyPress event the KeyPressEventArgs.KeyChar is
the ASCII character of the key that was pressed. You can simply use the
byte[] asciiBytes = new byte[]{(byte)e.KeyChar};
byte[] unicodeBytes = Encoding.Convert(Encoding.ASCII, Encoding.Unicode,
asciiBytes);
char[] unicodeChars = Encoding.Unicode.GetChars(unicodeBytes);
Since KeyPressEventArgs.KeyChar is documented as the ASCII char, I assume
it's already been mapped from the scan code.
KeyUp and KeyDown use KeyEventArgs instead. I don't think there's
anything in .NET 1.1 to do the scan mapping directly. You'd probably have
to P/Invoke MapVirtualKey from user32.
I would suggest using KeyPress unless you need to know the key state
change. KeyUp and KeyDown are not one-to-one with KeyPress. If example,
if the user presses a key and holds it down you will get multiple KeyDown
and KeyPress events, but only one KeyUp event when they release the key.
http://www.peterRitchie.com/
On Tue, 31 Jan 2006 07:24:59 -0500, Jeff Roberts
Post by Jeff Roberts
Does anyone know of a way to access the keyboard scan code to Unicode
mapping ? I need to be able to figure out what if any unicode character
will be given to my .net application when a specific keyboard scan code is
pressed. I know that the scan code is in the WM_KEY messages, but I need
to know the mapping before any keys are pushed. Depending on the national
language keyboard I have selected in Windows XP, a different Unicode
character may be given to my .net application when a specific key is
pressed. Is there any way to communicate with the keyboard driver to
determine this ?
Post by Jeff Roberts
thank you
===================================
This list is hosted by DevelopMentor® http://www.develop.com
View archives and manage your subscription(s) at
http://discuss.develop.com
===================================
This list is hosted by DevelopMentor® http://www.develop.com
View archives and manage your subscription(s) at
http://discuss.develop.com
===================================
This list is hosted by DevelopMentor® http://www.develop.com

View archives and manage your subscription(s) at http://discuss.develop.com
Fabian Schmied
2006-01-31 17:43:55 UTC
Permalink
Post by Jeff Roberts
Sorry, you missed the point. I want to convert from the scan code to the
Unicode character it produces without using any key events. I need to
know the translation before any keys are pressed !
Use MapVirtualKey, as Peter suggested. (Are you sure you mean scan
code and not virtual key code? MapVirtualKey should help you in both
cases, however.)

Fabian

===================================
This list is hosted by DevelopMentor® http://www.develop.com

View archives and manage your subscription(s) at http://discuss.develop.com
Peter Ritchie
2006-01-31 17:21:32 UTC
Permalink
I don't know where you're getting scan codes without keyboard events.
But, regardless of where the scan code came from, the KeyEventsArgs
example I gave still holds true, except KeyEventArgs and it's scan code
property isn't used as the variable that stores the scan code: P/Invoke
MapVirtualKey() to convert a scan code to/from a virtual key code. The
virtual key code can then be tested for valid ASCII ranges and convert
form ASCII to Unicode, if necessary. If you want to override the user's
current code page, use MapVirtualKeyEx().

Out of curiosity, why are you getting scan codes without keyboard events?

On Tue, 31 Jan 2006 12:40:38 -0500, Jeff Roberts
Post by Jeff Roberts
Peter,
Sorry, you missed the point. I want to convert from the scan code to the
Unicode character it produces without using any key events. I need to
know the translation before any keys are pressed !
Post by Jeff Roberts
thanks anyway
Post by Peter Ritchie
If you're dealing with the KeyPress event the
KeyPressEventArgs.KeyChar is
Post by Jeff Roberts
Post by Peter Ritchie
the ASCII character of the key that was pressed. You can simply
use the
Post by Jeff Roberts
Post by Peter Ritchie
byte[] asciiBytes = new byte[]{(byte)e.KeyChar};
byte[] unicodeBytes = Encoding.Convert(Encoding.ASCII,
Encoding.Unicode,
Post by Jeff Roberts
Post by Peter Ritchie
asciiBytes);
char[] unicodeChars = Encoding.Unicode.GetChars(unicodeBytes);
Since KeyPressEventArgs.KeyChar is documented as the ASCII char, I
assume
Post by Jeff Roberts
Post by Peter Ritchie
it's already been mapped from the scan code.
KeyUp and KeyDown use KeyEventArgs instead. I don't think there's
anything in .NET 1.1 to do the scan mapping directly. You'd
probably have
Post by Jeff Roberts
Post by Peter Ritchie
to P/Invoke MapVirtualKey from user32.
I would suggest using KeyPress unless you need to know the key state
change. KeyUp and KeyDown are not one-to-one with KeyPress. If
example,
Post by Jeff Roberts
Post by Peter Ritchie
if the user presses a key and holds it down you will get multiple
KeyDown
Post by Jeff Roberts
Post by Peter Ritchie
and KeyPress events, but only one KeyUp event when they release the
key.
Post by Jeff Roberts
Post by Peter Ritchie
http://www.peterRitchie.com/
On Tue, 31 Jan 2006 07:24:59 -0500, Jeff Roberts
Post by Jeff Roberts
Does anyone know of a way to access the keyboard scan code to
Unicode
Post by Jeff Roberts
Post by Peter Ritchie
mapping ? I need to be able to figure out what if any unicode
character
Post by Jeff Roberts
Post by Peter Ritchie
will be given to my .net application when a specific keyboard scan
code is
Post by Jeff Roberts
Post by Peter Ritchie
pressed. I know that the scan code is in the WM_KEY messages, but I
need
Post by Jeff Roberts
Post by Peter Ritchie
to know the mapping before any keys are pushed. Depending on the
national
Post by Jeff Roberts
Post by Peter Ritchie
language keyboard I have selected in Windows XP, a different Unicode
character may be given to my .net application when a specific key is
pressed. Is there any way to communicate with the keyboard driver
to
Post by Jeff Roberts
Post by Peter Ritchie
determine this ?
===================================
This list is hosted by DevelopMentor® http://www.develop.com

View archives and manage your subscription(s) at http://discuss.develop.com
Jeff Roberts
2006-01-31 18:20:03 UTC
Permalink
My situation is a little complicated, but, I'll try;

My application reads a keyboard mapping file, this file contains a scan code and any special mapping my application may want to assign a key. Each line of the file represents a physical key. My application is 100% unicode. This technique allows me to have a single keyboard mapping file for all possible Countries that Windows XP runs in (UK, France, etc.). My application uses the OnChar to process "normal" Unicode characters and the WM_KEY messages for determining special function keys from the scan code in the message. My application has a "Keyboard Mapping" function that displays a dialog window that looks like a keyboard on the screen. Each key represents a line in the keyboard mapping file and is a Button. When I display the dialog window, I need to figure out which Windows XP keyboard is currently configured (UK,France,etc.), and display the "normal" Unicode key character as the Text property of each Button.

I hope this makes sense, any help would be greatly appreciated !
Post by Peter Ritchie
I don't know where you're getting scan codes without keyboard events.
But, regardless of where the scan code came from, the KeyEventsArgs
example I gave still holds true, except KeyEventArgs and it's scan code
property isn't used as the variable that stores the scan code: P/Invoke
MapVirtualKey() to convert a scan code to/from a virtual key code. The
virtual key code can then be tested for valid ASCII ranges and convert
form ASCII to Unicode, if necessary. If you want to override the user's
current code page, use MapVirtualKeyEx().
Out of curiosity, why are you getting scan codes without keyboard events?
On Tue, 31 Jan 2006 12:40:38 -0500, Jeff Roberts
Post by Jeff Roberts
Peter,
Sorry, you missed the point. I want to convert from the scan code to the
Unicode character it produces without using any key events. I need to
know the translation before any keys are pressed !
Post by Jeff Roberts
thanks anyway
Post by Peter Ritchie
If you're dealing with the KeyPress event the
KeyPressEventArgs.KeyChar is
Post by Jeff Roberts
Post by Peter Ritchie
the ASCII character of the key that was pressed. You can simply
use the
Post by Jeff Roberts
Post by Peter Ritchie
byte[] asciiBytes = new byte[]{(byte)e.KeyChar};
byte[] unicodeBytes = Encoding.Convert(Encoding.ASCII,
Encoding.Unicode,
Post by Jeff Roberts
Post by Peter Ritchie
asciiBytes);
char[] unicodeChars = Encoding.Unicode.GetChars(unicodeBytes);
Since KeyPressEventArgs.KeyChar is documented as the ASCII char, I
assume
Post by Jeff Roberts
Post by Peter Ritchie
it's already been mapped from the scan code.
KeyUp and KeyDown use KeyEventArgs instead. I don't think there's
anything in .NET 1.1 to do the scan mapping directly. You'd
probably have
Post by Jeff Roberts
Post by Peter Ritchie
to P/Invoke MapVirtualKey from user32.
I would suggest using KeyPress unless you need to know the key
state
Post by Jeff Roberts
Post by Peter Ritchie
change. KeyUp and KeyDown are not one-to-one with KeyPress. If
example,
Post by Jeff Roberts
Post by Peter Ritchie
if the user presses a key and holds it down you will get multiple
KeyDown
Post by Jeff Roberts
Post by Peter Ritchie
and KeyPress events, but only one KeyUp event when they release the
key.
Post by Jeff Roberts
Post by Peter Ritchie
http://www.peterRitchie.com/
On Tue, 31 Jan 2006 07:24:59 -0500, Jeff Roberts
Post by Jeff Roberts
Does anyone know of a way to access the keyboard scan code to
Unicode
Post by Jeff Roberts
Post by Peter Ritchie
mapping ? I need to be able to figure out what if any unicode
character
Post by Jeff Roberts
Post by Peter Ritchie
will be given to my .net application when a specific keyboard scan
code is
Post by Jeff Roberts
Post by Peter Ritchie
pressed. I know that the scan code is in the WM_KEY messages, but I
need
Post by Jeff Roberts
Post by Peter Ritchie
to know the mapping before any keys are pushed. Depending on the
national
Post by Jeff Roberts
Post by Peter Ritchie
language keyboard I have selected in Windows XP, a different
Unicode
Post by Jeff Roberts
Post by Peter Ritchie
character may be given to my .net application when a specific key
is
Post by Jeff Roberts
Post by Peter Ritchie
pressed. Is there any way to communicate with the keyboard driver
to
Post by Jeff Roberts
Post by Peter Ritchie
determine this ?
===================================
This list is hosted by DevelopMentor® http://www.develop.com
View archives and manage your subscription(s) at
http://discuss.develop.com
===================================
This list is hosted by DevelopMentor® http://www.develop.com

View archives and manage your subscription(s) at http://discuss.develop.com
Peter Ritchie
2006-01-31 19:29:00 UTC
Permalink
I personally avoid KeyXXX for anything other than navigational keys. But,
these events are not the source of the scan codes anyway; but, it begs the
question: how is the user selecting these scan codes?

http://www.peterRitchie.com/
Post by Fabian Schmied
Post by Peter Ritchie
If you're dealing with the KeyPress event the KeyPressEventArgs.KeyChar
is
Post by Fabian Schmied
Post by Peter Ritchie
the ASCII character of the key that was pressed. You can simply use the
byte[] asciiBytes = new byte[]{(byte)e.KeyChar};
byte[] unicodeBytes = Encoding.Convert(Encoding.ASCII, Encoding.Unicode,
asciiBytes);
char[] unicodeChars = Encoding.Unicode.GetChars(unicodeBytes);
What happens if the user presses the 'Ö' key on a German keyboard? Or
some Japanese character on a Japanese keyboard?
The current MSDN2-docs on KeyChar only list a small subset of unicode
characters usable in connection with the KeyChar property. The docs
seem a little vague, if not inconsistent to me, anyway: on the one
hand they say KeyChar contains the ASCII character "that is composed"
(composed?). On the other hand, they say you can get or set the CTRL
key, which doesn't have an ASCII representation.
They also don't say what KeyChar will do if it is queried in response
to a key press of a key producing a non-ASCII character. Or if I try
set the property with the 'Ö' character, for example.
But even if KeyChar contains the right Unicode character in all
situations (which I always thought it would), casting to byte and
reencoding as unicode won't work in many cases and will only give you
an exception. For ASCII-characters, it won't to anything useful
(unicodeChars[0] will contain the original content of e.KeyChar,
unless I'm overlooking something).
Aside from that: for mapping virtual key codes or scan codes to
character values, p/invoking MapVirtualKey will probably be the only,
if you can't use KeyPress or WM_CHAR.
And Jeff: This is not the best list for this question. I think you
might get better answers at the WINFORMS list.
Fabian
===================================
This list is hosted by DevelopMentor® http://www.develop.com
View archives and manage your subscription(s) at
http://discuss.develop.com

===================================
This list is hosted by DevelopMentor® http://www.develop.com

View archives and manage your subscription(s) at http://discuss.develop.com
Peter Ritchie
2006-01-31 20:09:06 UTC
Permalink
This is a completely application-specific mapping based on whatever
Windows keyboard language mapping the user currently has set? Yuck.

I don't think you'll be able to get much out the the framework (.NET or
Platform) to help you here. You'll have to handle the storage and lookup
of data yourself based solely on the scan-code. You would have to iterate
through all the scan-codes and look-up the virtual key with MapVirtualKey
when you bring up the dialog (or if the user changes languages while your
dialog is opened--see WM_SETTINGCHANGE) to find out what that scan code
means at that moment (if they exit your app and change language settings
that scan code could have a different virtual key). Even then, anything
other than English characters are not well documented, see the Keys and
KeyCode enumerations for example.

If you want to map a specific key to another specific key, the best you
can hope for is to ask the user to press the key they want to map then
press the other key they want to map to. Everything else is OEM specific.

Good luck.

http://www.peterRitchie.com/

On Tue, 31 Jan 2006 13:20:03 -0500, Jeff Roberts
Post by Jeff Roberts
My situation is a little complicated, but, I'll try;
My application reads a keyboard mapping file, this file contains a scan
code and any special mapping my application may want to assign a key. Each
line of the file represents a physical key. My application is 100%
unicode. This technique allows me to have a single keyboard mapping file
for all possible Countries that Windows XP runs in (UK, France, etc.). My
application uses the OnChar to process "normal" Unicode characters and the
WM_KEY messages for determining special function keys from the scan code
in the message. My application has a "Keyboard Mapping" function that
displays a dialog window that looks like a keyboard on the screen. Each
key represents a line in the keyboard mapping file and is a Button. When
I display the dialog window, I need to figure out which Windows XP
keyboard is currently configured (UK,France,etc.), and display
the "normal" Unicode key character as the Text property of each Button.
Post by Jeff Roberts
I hope this makes sense, any help would be greatly appreciated !
===================================
This list is hosted by DevelopMentor® http://www.develop.com

View archives and manage your subscription(s) at http://discuss.develop.com
Jeff Roberts
2006-01-31 20:55:18 UTC
Permalink
Peter,


thanks, that is what I am doing now. I thought there might be some way into the keyboard driver to ask for the translation. Some layer has to do the translation !

thanks
Post by Peter Ritchie
This is a completely application-specific mapping based on whatever
Windows keyboard language mapping the user currently has set? Yuck.
I don't think you'll be able to get much out the the framework (.NET or
Platform) to help you here. You'll have to handle the storage and lookup
of data yourself based solely on the scan-code. You would have to iterate
through all the scan-codes and look-up the virtual key with MapVirtualKey
when you bring up the dialog (or if the user changes languages while your
dialog is opened--see WM_SETTINGCHANGE) to find out what that scan code
means at that moment (if they exit your app and change language settings
that scan code could have a different virtual key). Even then, anything
other than English characters are not well documented, see the Keys and
KeyCode enumerations for example.
If you want to map a specific key to another specific key, the best you
can hope for is to ask the user to press the key they want to map then
press the other key they want to map to. Everything else is OEM specific.
Good luck.
http://www.peterRitchie.com/
On Tue, 31 Jan 2006 13:20:03 -0500, Jeff Roberts
Post by Jeff Roberts
My situation is a little complicated, but, I'll try;
My application reads a keyboard mapping file, this file contains a scan
code and any special mapping my application may want to assign a key. Each
line of the file represents a physical key. My application is 100%
unicode. This technique allows me to have a single keyboard mapping file
for all possible Countries that Windows XP runs in (UK, France, etc.). My
application uses the OnChar to process "normal" Unicode characters and the
WM_KEY messages for determining special function keys from the scan code
in the message. My application has a "Keyboard Mapping" function that
displays a dialog window that looks like a keyboard on the screen. Each
key represents a line in the keyboard mapping file and is a Button. When
I display the dialog window, I need to figure out which Windows XP
keyboard is currently configured (UK,France,etc.), and display
the "normal" Unicode key character as the Text property of each Button.
Post by Jeff Roberts
I hope this makes sense, any help would be greatly appreciated !
===================================
This list is hosted by DevelopMentor® http://www.develop.com
View archives and manage your subscription(s) at
http://discuss.develop.com
===================================
This list is hosted by DevelopMentor® http://www.develop.com

View archives and manage your subscription(s) at http://discuss.develop.com
Krzysztof Kozielczyk
2006-02-01 07:38:11 UTC
Permalink
Jeff,

Just remember the composed chars, you mentioned. These are the chars invoked
by pressing a combination of keys - in Polish keyboard RIGHT Alt + S for
example means "Ś" (you can think about it as about "S" with an accent),
while LEFT Alt + S often means "send" in the same context.

Regards, Krzysztof
Reply-To: "Discussion of development on the .NET platform using any managed
Subject: Re: [DOTNET-CLR] Keyboard Scan Code to Unicode Mapping
Date: Tue, 31 Jan 2006 15:55:18 -0500
Peter,
thanks, that is what I am doing now. I thought there might be some way
into the keyboard driver to ask for the translation. Some layer has to do
the translation !
thanks
Post by Peter Ritchie
This is a completely application-specific mapping based on whatever
Windows keyboard language mapping the user currently has set? Yuck.
I don't think you'll be able to get much out the the framework (.NET
or
Post by Peter Ritchie
Platform) to help you here. You'll have to handle the storage and
lookup
Post by Peter Ritchie
of data yourself based solely on the scan-code. You would have to
iterate
Post by Peter Ritchie
through all the scan-codes and look-up the virtual key with
MapVirtualKey
Post by Peter Ritchie
when you bring up the dialog (or if the user changes languages while
your
Post by Peter Ritchie
dialog is opened--see WM_SETTINGCHANGE) to find out what that scan
code
Post by Peter Ritchie
means at that moment (if they exit your app and change language
settings
Post by Peter Ritchie
that scan code could have a different virtual key). Even then,
anything
Post by Peter Ritchie
other than English characters are not well documented, see the Keys
and
Post by Peter Ritchie
KeyCode enumerations for example.
If you want to map a specific key to another specific key, the best
you
Post by Peter Ritchie
can hope for is to ask the user to press the key they want to map
then
Post by Peter Ritchie
press the other key they want to map to. Everything else is OEM
specific.
Post by Peter Ritchie
Good luck.
http://www.peterRitchie.com/
On Tue, 31 Jan 2006 13:20:03 -0500, Jeff Roberts
Post by Jeff Roberts
My situation is a little complicated, but, I'll try;
My application reads a keyboard mapping file, this file contains a
scan
Post by Peter Ritchie
code and any special mapping my application may want to assign a
key. Each
Post by Peter Ritchie
line of the file represents a physical key. My application is 100%
unicode. This technique allows me to have a single keyboard mapping
file
Post by Peter Ritchie
for all possible Countries that Windows XP runs in (UK, France,
etc.). My
Post by Peter Ritchie
application uses the OnChar to process "normal" Unicode characters
and the
Post by Peter Ritchie
WM_KEY messages for determining special function keys from the scan
code
Post by Peter Ritchie
in the message. My application has a "Keyboard Mapping" function
that
Post by Peter Ritchie
displays a dialog window that looks like a keyboard on the screen.
Each
Post by Peter Ritchie
key represents a line in the keyboard mapping file and is a Button.
When
Post by Peter Ritchie
I display the dialog window, I need to figure out which Windows XP
keyboard is currently configured (UK,France,etc.), and display
the "normal" Unicode key character as the Text property of each
Button.
Post by Peter Ritchie
Post by Jeff Roberts
I hope this makes sense, any help would be greatly appreciated !
===================================
This list is hosted by DevelopMentor® http://www.develop.com
View archives and manage your subscription(s) at
http://discuss.develop.com
===================================
This list is hosted by DevelopMentor® http://www.develop.com
View archives and manage your subscription(s) at http://discuss.develop.com
_________________________________________________________________
Express yourself instantly with MSN Messenger! Download today it's FREE!
http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/

===================================
This list is hosted by DevelopMentor® http://www.develop.com

View archives and manage your subscription(s) at http://discuss.develop.com
Loading...