質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

Windows 7

Microsoft Windows 7は過去にリリースされたMicrosoft WindowsのOSであり、Windows8の1代前です。2009年の7月にリリースされ販売されました。Windows7の前はWindowsVistaで、その更に3年前にリリースされました。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

Q&A

0回答

1938閲覧

VB.NET2015で変換候補の一覧を取得したい

Display

総合スコア2

VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

Windows 7

Microsoft Windows 7は過去にリリースされたMicrosoft WindowsのOSであり、Windows8の1代前です。2009年の7月にリリースされ販売されました。Windows7の前はWindowsVistaで、その更に3年前にリリースされました。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

0グッド

0クリップ

投稿2021/03/15 01:32

編集2021/03/18 08:05

Windows7 32bit VB.NET 2015でWPFクラスライブラリのDLLを作成しようとしています。
この中で日本語入力を行うテキストボックスがあり、ここにソフトキーボードから入力された平仮名の文字列が入っています。
最終的には、この平仮名に対する漢字変換候補の一覧をリストボックスに貼りつけたいのですが、一覧を取得するところで躓いています。

以下のコードを試作してみました。

VB

1 Dim Kana As String = "アイ" 2 Dim infoType As Object 3 4 infoType = {GCS_COMPCLAUSE, GCS_COMPREADCLAUSE, GCS_RESULTCLAUSE, GCS_RESULTREADCLAUSE} 5 6 'フォーカスを設定 7 textBox.Focus() 8 9 Dim winHandle As IntPtr 10 winHandle = New WindowInteropHelper(Me).Handle 11 12 Dim ret0 As Boolean 13 imeContext = ImmGetContext(hWnd) 14 ret0 = ImmSetOpenStatus(imeContext, True) 15 16 ret0 = ImmSetCompositionString(imeContext, SCS_SETSTR, 0, 0, Kana, Len(Kana)) 17 18 ret0 = ImmNotifyIME(imeContext, NI_COMPOSITIONSTR, CPS_CONVERT, 0) 19 20 ' 読みの文字列 21 Dim intLength As Integer 22 intLength = ImmGetCompositionString(imeContext, GCS_RESULTREADSTR, Nothing, 0) 23 24 Dim temp As New StringBuilder(intLength) 25 For i = 0 To UBound(infoType) 26 ImmGetCompositionString(imeContext, GCS_RESULTREADSTR, temp, intLength) 27 Next 28 29 bufferSize = ImmGetCandidateList(imeContext, 0, udtCandidateList, 0) 30 bufferSize = ImmGetCandidateList(imeContext, 0, udtCandidateList, bufferSize)

「ImmNotifyIME」まではリターン値にTrueが入り、正常終了していますが、
「ImmGetCompositionString」のリターン値が0になってしまいます。
何かIMEへの指定が間違っているのでしょうか。

ご教示をお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Display

2021/03/17 04:47

ありがとうございます。 ご提示いただいたWebを参考に「GCS_RESULTREADSTR→GCS_RESULTSTR」「Nothing→New StringBuilder(0)」に変えてみたりしましたが、結果は変わらずでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問