From: Jan Opitz on
I used ImmGetDescription to find out which Japanese IME is installed with
w2k and XP. With Vista this does not work. Any advice or link?
Also: Is there any general VB (6 or net) related info on activation of the
Japanese IME with MS Vista?

TIA, Jan



From: Bill McCarthy on
Hi Jan,

"Jan Opitz" <next1NO(a)SPAMgmx.de> wrote in message
news:OslgmJJVJHA.3964(a)TK2MSFTNGP03.phx.gbl...
>I used ImmGetDescription to find out which Japanese IME is installed with
>w2k and XP. With Vista this does not work. Any advice or link?
> Also: Is there any general VB (6 or net) related info on activation of the
> Japanese IME with MS Vista?
>
> TIA, Jan
>

When you say it does not work, what exactly doesn't work ? What is
ImmGetDescription returning ? Are you sure you are using the correct locale
identifier ?

As to general info on IME, what are you after ? In .NET windows.Forms and
WPF all have IME support. For example, you can set the IME mode of a textbox
to Hiragana, Katakana, KatakanaHalf, Alpha, AlphaFull etc. There's also
events like the IMEChange event on a richtextbox that lets you know when the
user changes IME mode.


From: Jan Opitz on
Thank you for your questions.

I wrote an application in VB6 some years ago and used ImmGetDescription to
read out the IME name from the buffer.

For i = 1 To NoOfKBDLayout
Buff = String(255, 0)
If ImmIsIME(hKB(i - 1)) = 1 Then 'IME-depending Keyb?
BuffLen = 255
RetCount = ImmGetDescription(hKB(i - 1), Buff, BuffLen)
RetStr = UCase(Left$(Buff, RetCount))
'check for IME in Win2K and winXP
If InStr(RetStr, "JAP") Or InStr(RetStr, "MICROSOFT IME") Then
Test2000IME = True
Exit For
End If
End If
Next

For Vista users I would like to make some changes, since with Vista, the
buffer remains empty.

Also, I cannot display the IME input pad anymore using this code which used
to work on w2k and XP

lngResult = LoadKeyboardLayout("E0010411", KLF_ACTIVATE)
'brings up Jp IME
WM_MSIME_SHOWIMEPAD = RegisterWindowMessage("MSIMEShowImePad")
lngDefaultIMEHandle = ImmGetDefaultIMEWnd(RichEdit1.hwnd)
lngResult = SendMessage(lngDefaultIMEHandle, _
WM_MSIME_SHOWIMEPAD, _
SHOWIMEPAD_CATEGORY, _
ByVal IPACID_HANDWRITING)

So I assumed there is a change Vista, but could not find workarounds so far.
Any help would be appreciated very much.

Jan



"Bill McCarthy" <Bill(a)localhost.com> schrieb im Newsbeitrag
news:u1C3rYJVJHA.4884(a)TK2MSFTNGP02.phx.gbl...
> Hi Jan,
>
> "Jan Opitz" <next1NO(a)SPAMgmx.de> wrote in message
> news:OslgmJJVJHA.3964(a)TK2MSFTNGP03.phx.gbl...
>>I used ImmGetDescription to find out which Japanese IME is installed with
>>w2k and XP. With Vista this does not work. Any advice or link?
>> Also: Is there any general VB (6 or net) related info on activation of
>> the Japanese IME with MS Vista?
>>
>> TIA, Jan
>>
>
> When you say it does not work, what exactly doesn't work ? What is
> ImmGetDescription returning ? Are you sure you are using the correct
> locale identifier ?
>
> As to general info on IME, what are you after ? In .NET windows.Forms and
> WPF all have IME support. For example, you can set the IME mode of a
> textbox to Hiragana, Katakana, KatakanaHalf, Alpha, AlphaFull etc.
> There's also events like the IMEChange event on a richtextbox that lets
> you know when the user changes IME mode.
>
>


From: Bill McCarthy on
Hi Jan,

"Jan Opitz" <next1NO(a)SPAMgmx.de> wrote in message
news:e2qYvlJVJHA.5424(a)TK2MSFTNGP04.phx.gbl...
> Thank you for your questions.
>
> I wrote an application in VB6 some years ago and used ImmGetDescription to
> read out the IME name from the buffer.
>
> For i = 1 To NoOfKBDLayout
> Buff = String(255, 0)
> If ImmIsIME(hKB(i - 1)) = 1 Then 'IME-depending Keyb?
> BuffLen = 255
> RetCount = ImmGetDescription(hKB(i - 1), Buff, BuffLen)
> RetStr = UCase(Left$(Buff, RetCount))
> 'check for IME in Win2K and winXP
> If InStr(RetStr, "JAP") Or InStr(RetStr, "MICROSOFT IME") Then
> Test2000IME = True
> Exit For
> End If
> End If
> Next
>
> For Vista users I would like to make some changes, since with Vista, the
> buffer remains empty.
>


Strange I get an empty buffer for that on XP and Vista. Admittedly my XP
hasn't got Japanese, but I have got IME languages on it.

A work around might be just to check the locale info part of hte keyboard,
eg:

Const locale_JP = & H411

If (hKB(i) And locale_JP) = locale_JP Then ' is Japanese locale




> Also, I cannot display the IME input pad anymore using this code which
> used to work on w2k and XP
>
> lngResult = LoadKeyboardLayout("E0010411", KLF_ACTIVATE)
> 'brings up Jp IME
> WM_MSIME_SHOWIMEPAD = RegisterWindowMessage("MSIMEShowImePad")
> lngDefaultIMEHandle = ImmGetDefaultIMEWnd(RichEdit1.hwnd)
> lngResult = SendMessage(lngDefaultIMEHandle, _
> WM_MSIME_SHOWIMEPAD, _
> SHOWIMEPAD_CATEGORY, _
> ByVal IPACID_HANDWRITING)
>
> So I assumed there is a change Vista, but could not find workarounds so
> far.
> Any help would be appreciated very much.
>


Not sure on this part. What's the "E0010411" ? Doesn't that value depend on
the hKB(i) value ?




> Jan
>
>
>
> "Bill McCarthy" <Bill(a)localhost.com> schrieb im Newsbeitrag
> news:u1C3rYJVJHA.4884(a)TK2MSFTNGP02.phx.gbl...
>> Hi Jan,
>>
>> "Jan Opitz" <next1NO(a)SPAMgmx.de> wrote in message
>> news:OslgmJJVJHA.3964(a)TK2MSFTNGP03.phx.gbl...
>>>I used ImmGetDescription to find out which Japanese IME is installed with
>>>w2k and XP. With Vista this does not work. Any advice or link?
>>> Also: Is there any general VB (6 or net) related info on activation of
>>> the Japanese IME with MS Vista?
>>>
>>> TIA, Jan
>>>
>>
>> When you say it does not work, what exactly doesn't work ? What is
>> ImmGetDescription returning ? Are you sure you are using the correct
>> locale identifier ?
>>
>> As to general info on IME, what are you after ? In .NET windows.Forms and
>> WPF all have IME support. For example, you can set the IME mode of a
>> textbox to Hiragana, Katakana, KatakanaHalf, Alpha, AlphaFull etc.
>> There's also events like the IMEChange event on a richtextbox that lets
>> you know when the user changes IME mode.
>>
>>
>
>

From: Jan Opitz on
Hi Bill,

> Const locale_JP = & H411
> If (hKB(i) And locale_JP) = locale_JP Then ' is Japanese locale

thank you very much for this.

However, using the hKB(i) value for the JP keyboard does not activate the
JP IME (with Vista - it does with XP). Any more ideas?

>> lngResult = LoadKeyboardLayout("E0010411", KLF_ACTIVATE)
>
> Not sure on this part. What's the "E0010411" ? Doesn't that value depend
> on the hKB(i) value ?
>

Jan Opitz