none
windows mobile 輸入法選擇 RRS feed

  • 問題

  •  小弟 使用了 inputpanel 來選定輸入法,在"注音輸入法"內  有  1注音2 英文 3 符4. 全

    預設是 注音,請問有辦法調整

      

        Private Sub GetInputMethods()
            Me.ListBox1.Items.Clear()

            ' Get the InputMethods collection and
            ' add each method to the list box.
            Dim im As InputMethod
            For Each im In InputPanel1.InputMethods
                Me.ListBox1.Items.Add(im.Name)
            Next im
        End Sub

        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            GetInputMethods()
        End Sub

        Private Sub TextBox1_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.GotFocus


            Dim strIM As String
            strIM = ListBox1.SelectedItem.ToString()


            Dim im As InputMethod
            For Each im In InputPanel1.InputMethods
                If im.Name = strIM Then

                    InputPanel1.Enabled = True
                    InputPanel1.CurrentInputMethod = im

                End If
            Next im
        End Sub


    每天都在複製貼上,什麼時候才能自己寫出來~~哎.....


    2012年9月17日 上午 07:15

解答

  • 我的作法是使用模擬滑鼠的click 事件去點選,當切換輸入法的時候在去模擬事件,目前我找不到有什麼好方法就只好先用這招。

     [DllImport("coredll")]
            private static extern void mouse_event(MOUSEEVENTF dwFlags, int dx, int dy, int dwData, int dwExtraInfo);

            [Flags()]
            private enum MOUSEEVENTF
            {
                MOVE = 0x1, /* mouse move */
                LEFTDOWN = 0x2, /* left button down */
                LEFTUP = 0x4, /*left button up */
                RIGHTDOWN = 0x8, /*right button down */
                RIGHTUP = 0x10, /*right button up */
                MIDDLEDOWN = 0x20, /*middle button down */
                MIDDLEUP = 0x40, /* middle button up */
                WHEEL = 0x800, /*wheel button rolled */
                VIRTUALDESK = 0x4000, /* map to entrire virtual desktop */
                ABSOLUTE = 0x8000, /* absolute move */
                TOUCH = 0x100000, /* absolute move */
            }

            public static void SendTap(int x, int y)
            {
                mouse_event(MOUSEEVENTF.LEFTDOWN | MOUSEEVENTF.ABSOLUTE, (int)((65535 / Screen.PrimaryScreen.Bounds.Width) * x), (int)((65535 / Screen.PrimaryScreen.Bounds.Height) * y), 0, 0);
                mouse_event(MOUSEEVENTF.LEFTUP, 0, 0, 0, 0);
            }

    • 已標示為解答 嘿嘿嘿的啦 2012年9月25日 上午 02:08
    • 已編輯 kylin70 2012年9月26日 上午 12:58
    2012年9月24日 上午 05:23

所有回覆

  • Hi,

    你目前的寫法無法調整輸入法嗎? 因為 MSDN Library 上的方法也是這麼用 CurrentInputMethod...
    http://msdn.microsoft.com/zh-tw/library/microsoft.windowsce.forms.inputpanel.currentinputmethod(v=vs.90).aspx
    要不要確認一下你的程式流程?

    2012年9月17日 上午 10:36
  • 您好,我要選擇輸入法裡面的  1注音2 英文 3 符4. 全 , 有時候是 注音 有時候是英文,我有用紅色框框標示起來的那個,多謝。目前的輸入法是有切換

    每天都在複製貼上,什麼時候才能自己寫出來~~哎.....

    2012年9月17日 上午 11:57
  • Hi,

    請問你的問題是?看來你原本的source code 已經可滿足你的需求。

    程式運作的流程是?

    2012年9月20日 上午 12:42
  • 可能標題下錯了,

    Step1 "在我選到 注音輸入法 以後 "

    Step2 " 會顯示貼圖的那個小鍵盤"  , (在我貼的那段 MSDN上面 copy 下來程式已經可以動作 )

    Step3  " 小鍵盤內 有  1注音2 英文 3 符4. 全  "  這邊要怎麼利用程式去選擇  這四種 ( 這一段不會做 )


    每天都在複製貼上,什麼時候才能自己寫出來~~哎.....

    2012年9月20日 下午 04:53
  • Hi,

    現在手邊沒 windows mobile 的模擬器可以測試
    不過我想應該是下列這段就可以讓程式去控制輸入法切換
    InputPanel1.Enabled = True
    InputPanel1.CurrentInputMethod = InputPanel1.InputMethods[n] 'n 換成你要的輸入法索引
    再把這段放到你要控制的 method 裡應該就可以了
    2012年9月21日 上午 03:46
  • 感謝你,不過您可能是不太了解我的意思

    InputPanel1.InputMethods[0]=Keypad

    InputPanel1.InputMethods[1]=手寫板

    InputPanel1.InputMethods[2]=全螢幕手寫

     InputPanel1.InputMethods[3]=倉頡

    InputPanel1.InputMethods[4]=注音 ==>( 這會顯示小鍵盤 紅色框框 1注音2 英文 3 符4. 全  ") 我想要控制

    紅色框框 裡面的 index


    每天都在複製貼上,什麼時候才能自己寫出來~~哎.....


    2012年9月21日 下午 01:53
  • 我的作法是使用模擬滑鼠的click 事件去點選,當切換輸入法的時候在去模擬事件,目前我找不到有什麼好方法就只好先用這招。

     [DllImport("coredll")]
            private static extern void mouse_event(MOUSEEVENTF dwFlags, int dx, int dy, int dwData, int dwExtraInfo);

            [Flags()]
            private enum MOUSEEVENTF
            {
                MOVE = 0x1, /* mouse move */
                LEFTDOWN = 0x2, /* left button down */
                LEFTUP = 0x4, /*left button up */
                RIGHTDOWN = 0x8, /*right button down */
                RIGHTUP = 0x10, /*right button up */
                MIDDLEDOWN = 0x20, /*middle button down */
                MIDDLEUP = 0x40, /* middle button up */
                WHEEL = 0x800, /*wheel button rolled */
                VIRTUALDESK = 0x4000, /* map to entrire virtual desktop */
                ABSOLUTE = 0x8000, /* absolute move */
                TOUCH = 0x100000, /* absolute move */
            }

            public static void SendTap(int x, int y)
            {
                mouse_event(MOUSEEVENTF.LEFTDOWN | MOUSEEVENTF.ABSOLUTE, (int)((65535 / Screen.PrimaryScreen.Bounds.Width) * x), (int)((65535 / Screen.PrimaryScreen.Bounds.Height) * y), 0, 0);
                mouse_event(MOUSEEVENTF.LEFTUP, 0, 0, 0, 0);
            }

    • 已標示為解答 嘿嘿嘿的啦 2012年9月25日 上午 02:08
    • 已編輯 kylin70 2012年9月26日 上午 12:58
    2012年9月24日 上午 05:23