Making TableTextService work for both 32-bit and 64-bit on a 64-bit Windows...

by Michael S. Kaplan, published on 2011/03/15 07:01 -04:00, original URI: http://blogs.msdn.com/b/michkap/archive/2011/03/15/10141137.aspx


So last week I got a note from Alex via the Contact link:

Subject: 64-bit TableTextService and 32-bit programs

Hi, I am using TableTextService to maintain my own Cantonese input method after reading your post: http://blogs.msdn.com/b/michkap/archive/2006/07/27/679538.aspx The posts you wrote about TableTextService is really informative and useful, I couldn't type Chinese without reading them! Few weeks ago, I upgraded my computer to Windows 7 (64-bit, Home Premium). Everything runs fine except the input method. I have US English and Cantonese input method configured. I found that the input method created by 32-bit TableTextService didn't work in 64-bit programs: I could still switch to Cantonese input method, but the computer kept typing English when I tried to type Chinese in 64-bit programs (such as 64-bit IE). The situation is similar if I try to type Chinese in 32-bit programs with 64-bit TableTextService configured. I wonder if you have experienced similar problems before? Do you have any suggestions/ solutions? Is there any way for TableTextService to work on 32-bit/ 64-bit programs no matter which version (32 or 64 bit) of TableTextService I configured? Many thanks. Alex

Well, I actualy did cover this in the series describing the TableTextService, though admittedly it's a litle buried.

If you check Behold the Table Driven Text Service, Part 12 (The knights who say நீ, redux, #2), it has a bit in the middle that covers this, basically steps 2a and 4a....

The trick is that you have to register it twice -- in the two different directories with the two different DLLs.

Anyway, to repeat steps 2, 2a, 3, 4, and 4a:

2) Copy the text file to \Program Files\Windows NT\TableTextService on your machine (if the "Program Files" on your machine is another language, use that directory, do not create a new one!). If you drg it in you will be prompted to elevate:

so accept that and copy the file. When you are done it will look something like the following:

Though if you do not have MUI language packs installed those language directories will be missing and you might have some localized path chunks up in the breadcrumb bar.

2a) If you running on a 64-bit machine then you must also put a copy of this file in \Program Files (x86)\Windows NT\TableTextService on your machine (if the "Program Files (x86)" on your machine is another language, use that directory, do not create a new one!). If you skip this step on a 64-bit machine then you will not be able to use the input method in 32-bit processes.

You will get that same elevation prompt as the other directory if you drag the file in

and when you are done it will look something like this:

Though if you do not have MUI language packs installed those language directories will be missing and you might have some localized path chunks up in the breadcrumb bar.

3) Open up an elevated command prompt. All you have to do is right click on the icon in the Start Menu or whereever to get this menu:

and select the Run as administrator option.

4) You will be put in the system32 directory. You need to navigate to the place you put the file in step 2, ande then run the command to register the input method:

The command to run is

rundll32 TableTextService.dll RegisterProfile TableTextServiceTamil.txt

and it is somewhat case sensitive so do not experiment with the case unless you are being paid by me to test this (since I am paying no one this rules you all out).

You will then be prompted to OKAY this registration you just requested:

Say OK to this.

4a) If you are running on a 64-bit machine, you must also navigate to the place you put the other file in that elevated command prompt:

Run the same command again:

rundll32 TableTextService.dll RegisterProfile TableTextServiceTamil.txt

and then you'll get that dialog again:

Just OK it again.


Raymond on 27 Apr 2011 1:38 AM:

Hi, I'm trying to build my own input method using the TableTextService. However, I'm not quite following what you've said in your articles... is there any reference material that explains the various configuration parameters more in-depth? Thanks so much!!

Michael S. Kaplan on 27 Apr 2011 5:56 AM:

There is a whole series of posts here, which you can see all the links for if you look at part 12 (linked to near the top of this blog right here). AFAIK, no other documentation exists....


go to newer or older post, or back to index or month or day