Question

Virtual Thai Keyboard

Asked by: Dodsworth

I need to allow english users to type thai characters into my app.

Anyone know of code for a virtual Thai keyboard ?


Any ideas ?

This Question has been solved and asker verified All Experts Exchange premium technology solutions are available to subscription members.

Subscribe now for full access to Experts Exchange and get

Instant Access to this Solution

  • Plus...
  • 30 Day FREE access, no risk, no obligation
  • Collaborate with the world's top tech experts
  • Unlimited access to our exclusive solution database
  • Never be left without tech help again

Subscribe Now

Asked On
2009-08-26 at 05:07:41ID24682899
Tags

Virtual Thai Keyboard VB.net control

Topics

Microsoft Visual Basic.Net

,

VB Controls

Participating Experts
2
Points
500
Comments
32

Trusted by hundreds of thousands everyday for fast, accurate and reliable tech support.

  • "The time we save is the biggest benefit of Experts Exchange to Warner Bros. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange." Mike Kapnisakis, Warner Bros.
  • "Our team likes having a resource that is more secure than just using Google and most experts using this service really know their stuff. It's nice to look here first versus using Google." Dayna Sellner, Lockheed Martin
  • "Anytime that I've been stumped with a problem, 9 out of 10 times Experts Exchange has either the accepted solution or an open discussion of the potential solution to the problem." Kenny Red, eBay Inc.

See what Experts Exchange can do for you.

Got a question?

We've got the answer.

Experts Exchange has been collecting answers to technology questions since 1996…3 million and counting! If you have a question, chances are we already have your answer.

Screenshot of Experts Exchange Knowledgebase

Need individual assistance?

Our experts are ready to help.

If you can't find the exact answer you're looking for, ask our exclusive community of 50,000 experts. You’ll get a personalized answer from a trusted professional.

Screenshot of Experts Exchange Knowledgebase

Want to learn from the best?

Read articles from industry experts.

Thousands of free tech tips, tricks, how-to’s and tutorials are available in our peer reviewed articles section. See for yourself how smart our experts are, no login required.

Screenshot of an Article

Working on a long term project?

Store your work and research.

Save solutions to your questions, answers you’ve discovered through searching plus helpful articles in your personal knowledgebase for easy future access.

Screenshot of Experts Exchange Knowledgebase

Access the answers to your technology questions today.

Subscribe Now

30-day free trial. Register in 60 seconds.

What Makes Experts Exchange Unique?

Members of the expert community talk about why the experience at Experts Exchange is different than what you will find anywhere else.

Trusted by the world's most respected brands.

image of each brand's logo

Faithfully serving IT professionals since 1996.

Experts Exchange Logo

Try it out and discover for yourself.

Subscribe Now

30-day free trial. Register in 60 seconds.

Related Solutions

  1. Sql - English and Thai
    I want to use SQL server in English and Thai - In Word / Excell etc I can just switch between languages in Regional languages to type in the various languag, however when I try this in SQL the Thai character set is incorrect. Is it possible to use the two Languages in the sam...
  2. Foxpro Thai input
    My OS is win2k. and when i wanna input thai in the fields, it showed strange characters( which is not thai ) I have set my locale and it's default setting to thai. What should i do to type thai in foxpro ?
  3. Insert THAI character language into SQL 2000 DB
    Hi, Anybody knows how to insert thai characters correctly into SQL 2000 DB (displayed Thai characters correctly in SQL Enterprise manager)? Should JSP page encoding set to TIS-620 or UTF-8? What about the SQL 2000 DB? THAI_CI_AS? Please advise, Thanks.
  4. Windowx Xp Thai Edition Password Problems
    I set my password in Windows Xp Proffessional with the Windows Xp Proffessional Thai edition thai font. Now there is no function for typing the password in this font. There is options for setting in Unicode manually by right clicking on the blank part for entering the passw...

Free Tech Articles

  1. WARNING: 5 Reasons why you should NEVER fix a computer for free.
    It is in our nature to love the puzzle. We are obsessed. The lot of us. We love puzzles. We love the challenge. We thrive on finding the answer. We hate disarray. It bothers us deep in our soul. W...
  2. SCCM OSD Basic troubleshooting
    SCCM 2007 OSD is a fantastic way to deploy operating systems, however, like most things SCCM issues can sometimes be difficult to resolve due to the sheer volume of logs to sift through and the dispe...
  3. Migrate Small Business Server 2003 to Exchange 2010 and Windows 2008 R2
    This guide is intended to provide step by step instructions on how to migrate from Small Business Server 2003 to Windows 2008 R2 with Exchange 2010. For this migration to work you will need the fo...
  4. Create a Win7 Gadget
    This article shows you how to create a simple "Gadget" -- a sort of mini-application supported by Windows 7 and Vista. Gadgets can be dropped anywhere on the desktop to provide instant information, ...
  5. Outlook continually prompting for username and password
    There have been a lot of questions recently regarding Outlook prompting for a username and password whilst using Exchange 2007. There are a few reasons why this would happen and I will try to cover t...
  6. Backup Exchange 2010 Information Store using Windows Backup
    There seems to be quite a lot of confusion around the ability to backup Exchange 2010 using the built in Windows Backup feature. This stems from the omission of this feature prior to Exchange 2007 s...

Cloud Class Webinars

  1. Avoiding Bugs in Microsoft Access
    Alison Balter takes and in-depth look at avoiding bugs in Access. In this webinar you will learn about using the immediate window to debug your applications, invoking the debugger, using breakpoints to troubleshoot, stepping through code, setting the next statement to execute, ...
  2. Top 10 Best New Features in Visio 2010
    Scott Helmers gives live demonstrations of the top 10 new features in Visio 2010. This webinar will teach you how to create compelling diagrams by adding shapes to the page with a single click, linking the shapes in a diagram to data in Excel (or SQL Server, or SharePoint), ...
  3. IT Consultant Business Secrets Revealed
    Michael Munger, Experts Exchange tech pro and IT consultant, pulls back the curtain on his very successful businesses and answers question on every IT consultant and business owner should know about. He shares secrets on what he did to solve the 5 most common problems in IT, ...
  4. Disaster Recovery and Business Continuity
    Quest CTO, Mike Billon, gives an overview of the steps involved in building a dunamic disaster recovery plan. Through case studies and an examination of software/hardware tooles for monitoring and testing, you'll gain a better understandin of where you are, where you want ...
  5. Organize Your Visio Diagrams with Containers and Lists
    Scott Helmers uses cross functional flowcharts, wireframe diagrams, data graphic legends and seating charts to teach you: how to ustilize all three new structured diagram components in Visio 2010, the best practices for organizeing shapes in previous version of Visio, how to organize ...
  6. How to Us Objects, Properties, Events and Methods in Microsoft Access
    Alison Dalter gives an in-depbth look at objects, properties, events and methods in Microsoft Access. In this webinar you will learn about using the object browser, referring to objects, working with properties and methods, working with object variables, understanding the ...

Join the Community

Give a Little. Get a Lot.

Join the community of experts here and help other tech pros by answering question in your area of expertise. You can earn FREE access to all Experts Exchange's premium features and resources.

Join the Community

Answers

 

by: CodeCruiserPosted on 2009-08-26 at 06:17:39ID: 25187209

Make a keyboard youself. Display it in the application (like the onscreen keyboard). Then use a thai font to type characters into the application.

 

by: danaseamanPosted on 2009-08-26 at 10:16:30ID: 25189988

No need to reinvent the wheel:

On XP/Vista install Thai Keyboard support (Thai Kedmanee) via control panel, Regional Settings, Keyboards.
Select Thai keyboard in system tray (Thai Kedmanee, for example).

For XP:
Go to Start Menu --> All Programs --> Accessories --> Accessiblity --> On-Screen Keyboard

For Vista:
Go to Start Menu --> All Programs --> Accessories --> Ease of Access --> On-Screen Keyboard

You can set Keyboard IME programatically:
  http://www.xtremevbtalk.com/showthread.php?t=267909

You can call On-Screen Keyboard programatically using API ShellExecute:
  Osk.exe (Microsoft On-Screen Keyboard) located in Windows\System32 folder?


 

by: DodsworthPosted on 2009-08-27 at 00:53:14ID: 25195511

Ooh that looks good.

But how do I find the constant for Thai and programatically close te OSK when needed ?

 

by: danaseamanPosted on 2009-08-27 at 05:20:47ID: 25197087

Try this constant to select Thai keyboard:
  Private Const LANG_THAI As String = "0000041E"

To startup On-Screen Keyboard:
  Shell "osk.exe"

To Shutdown On-Screen Keyboard:
  Safely Shut Down a Running Application
  http://www.thescarms.com/vbasic/stopprocess.aspx


 

by: DodsworthPosted on 2009-08-27 at 05:28:31ID: 25197137

Would I be best hiding it rather than shutting it down ?  How could I do that ?

 

by: DodsworthPosted on 2009-08-27 at 06:02:19ID: 25197499

At

strRet = String(9, 0)

I get String is a class type and cannot  be used in an expression !?

 

by: danaseamanPosted on 2009-08-27 at 06:05:20ID: 25197533

Sample code to Start, Close, Hide, Show On-Screen Keyboard:

Option Explicit
 
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
 
Private Const WM_CLOSE = &H10
Private Const WM_DESTROY = &H2
Private Const SW_HIDE = 0
Private Const SW_SHOW = 5
 
Private Sub cmdHide_Click()
   ShowWindow OSKhWnd, SW_HIDE
End Sub
 
Private Sub cmdShow_Click()
   ShowWindow OSKhWnd, SW_SHOW
End Sub
 
Private Sub cmdStart_Click()
   Shell "osk.exe"
End Sub
 
Private Sub cmdStop_Click()
   PostMessage OSKhWnd, WM_CLOSE, 0, 0
   PostMessage OSKhWnd, WM_DESTROY, 0, 0
End Sub
 
Private Function OSKhWnd() As Long
   OSKhWnd = FindWindow("OSKMainClass", "On-Screen Keyboard")
End Function
                                              
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:

Select allOpen in new window

 

by: danaseamanPosted on 2009-08-27 at 06:13:09ID: 25197648

This sample code is working here and switches between English and Thai.

Option Explicit
 
Private Declare Function GetKeyboardLayoutName Lib "user32" _
                      Alias "GetKeyboardLayoutNameA" _
                      (ByVal pwszKLID As String) As Long
Private Declare Function LoadKeyboardLayout Lib "user32" _
                      Alias "LoadKeyboardLayoutA" _
                      (ByVal pwszKLID As String, ByVal flags As Long) As Long
 
Const KLF_ACTIVATE = &H1
 
' some languages code
Private Const LANG_ENGLISH As String = "00000409"
Private Const LANG_FRENCH As String = "0000040C"
Private Const LANG_ARABIC As String = "00000401"
Private Const LANG_GREEK As String = "00000408"
Private Const LANG_ITALIAN As String = "00000400"
Private Const LANG_GERMAN As String = "00000407"
Private Const LANG_THAI As String = "0000041E"
 
Private Sub Form_Load()
    Command1.Caption = "Thai"
    Command2.Caption = "English"
End Sub
 
Private Sub Command2_Click()
    Me.Caption = SwitchKeyboardLang(LANG_ENGLISH)
End Sub
 
Private Sub Command1_Click()
    Me.Caption = SwitchKeyboardLang(LANG_THAI)
End Sub
 
Private Function SwitchKeyboardLang(ByVal strLangID As String) As Boolean
    'Returns TRUE when the KeyboardLayout was set properly, FALSE otherwise
    Dim strRet As String
    On Error Resume Next
    strRet = String(9, 0)
    GetKeyboardLayoutName strRet
    If strRet = (strLangID & Chr(0)) Then
        ' you are try to switch to the already selected language
        ' so return without doing anything
        SwitchKeyboardLang = True
        Exit Function
    Else
        strRet = String(9, 0)
        strRet = LoadKeyboardLayout((strLangID & Chr(0)), KLF_ACTIVATE)
    End If
    
    GetKeyboardLayoutName strRet ' Test if switch successed
    If strRet = (strLangID) Then
        SwitchKeyboardLang = True
    End If
End Function
                                              
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:

Select allOpen in new window

 

by: DodsworthPosted on 2009-08-27 at 07:30:57ID: 25198619

My version of VB.net doesn't like the following line...


strRet = String(9, 0)

Dunno what this line does so I can't replace it !?

 

by: danaseamanPosted on 2009-08-27 at 09:14:08ID: 25199888

Try strRet = "         "
make sure there are 9 spaces.

 

by: DodsworthPosted on 2009-09-08 at 05:16:14ID: 25281018

Is there a way to change the size of the OSK?  The thai characters are virtually illegible !

 

by: danaseamanPosted on 2009-09-08 at 08:20:18ID: 25282785

In Menu item 'Settings' of On-Screen Keyboard, change Font to larger size.
Default FontSize appears to be 8.
Setting will be remembered for subsequent popups.

 

by: DodsworthPosted on 2009-09-08 at 09:25:04ID: 25283481

Ok almost there apart from the showing and hiding.  Any ideas?

 

by: danaseamanPosted on 2009-09-08 at 09:41:58ID: 25283662

Did you try the code in post:
08/27/09 10:05 AM, ID: 25197533
Sample code to Start, Close, Hide, Show On-Screen Keyboard]


 

by: danaseamanPosted on 2009-09-08 at 09:44:54ID: 25283699

You will also need to change the API declares for .Net

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long


Change Long to Int32

 

by: DodsworthPosted on 2009-09-08 at 09:54:03ID: 25283784

Hmm Nothing. No errors either ?

 

by: danaseamanPosted on 2009-09-08 at 09:58:16ID: 25283827

Does Debug.Print OSKhWnd return a handle?

 

by: DodsworthPosted on 2009-09-09 at 01:12:05ID: 25289118

yes..1649267776872?

 

by: danaseamanPosted on 2009-09-09 at 05:31:24ID: 25290423

How about Shell "osk.exe"
Does that work?

Code in post 08/27/09 10:05 AM, ID: 25197533 works OK in Vb6

 

by: DodsworthPosted on 2009-09-09 at 05:50:45ID: 25290610

Yes I get the OSK but it won't hide.

 

by: danaseamanPosted on 2009-09-09 at 06:09:21ID: 25290811

Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Int32, ByVal nCmdShow As Int32) As Int32

Private Sub cmdHide_Click()
  ShowWindow OSKhWnd, SW_HIDE
End Sub

 

by: DodsworthPosted on 2009-09-09 at 07:32:02ID: 25291668

That gives me an arthimetic overflow !

 

by: danaseamanPosted on 2009-09-09 at 07:46:04ID: 25291822

Did you change FindWindow also to Int32?
Vb6 Long is Int32 in .Net
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Int32


 

by: DodsworthPosted on 2009-09-09 at 07:50:19ID: 25291872

No error just not hiding again!

 

by: danaseamanPosted on 2009-09-09 at 07:59:28ID: 25291977

Out of ideas. Maybe:
ShowWindow OSKhWnd, 0

 

by: DodsworthPosted on 2009-09-09 at 09:20:04ID: 25292835

Does it work for you?

 

by: danaseamanPosted on 2009-09-09 at 09:25:41ID: 25292899

Yes. Start, Stop, Hide, Show all work but I am testing with Vb6-SP6 and Vista.

 

by: DodsworthPosted on 2009-09-10 at 01:18:39ID: 25298202

Could it be a .net issue?

I can start it and change the language but can't hide or stop it (dunno about show as I can't hide!!)

 

by: DodsworthPosted on 2009-09-25 at 01:36:45ID: 25421029

Oh so close.. Please help.

 

by: danaseamanPosted on 2009-10-27 at 14:35:21ID: 25677831

With exception of hiding OnScreenKeyboard in .Net my solution works perfectly.
08/27/09 10:13 AM, ID: 25197648

20120131-EE-VQP-002

3 Ways to Join

30-Day Free Trial

The Experts

98% positive feedback on 31,087 answers since March 2000. angeliii is a Microsoft Most Valuable Professional for his work with MS SQL Server & Develoment.

He has also proven his knowledge of Visual Basic Programming, PHP Scripting and Oracle Databases.

The Experts

97% positive feedback on 10,752 answers since July 2000. lrmoore has more than 18 years experience in the networking industry.

The six-time Mircosoft MVPs specialties include firewalls, virtual private networking, and network management.

Testimonials

"...and excellent source for support... Kind of like having your very own IT dept." Electriciansnet

Testimonials

"I was apprehensive at signing up at first. However... it has already made my life as an IT administrator much easier." JaCrews

Testimonials

"WOW! You guys have great, active, and knowledgeable people on here." moore50

Business Clients

Business Clients

In the Press

"If you’ve got a question... Experts Exchange can supply an answer.”

In the Press

"...an invaluable aid for both IT professionals and those who require tech support."

In the Press

"where IT professionals provide quick answers on just about any topic"

Business Account Plans

Loading Advertisement...