26 พฤษภาคม 2555

VB.NET แสดงสถานะปุ่มเปลี่ยนภาษา Grave Accent ( ~ )

การเขียนคำสั่งเพื่อแสดงสถานะของภาษาบนแป้นพิมพ์ (keyboard) ที่ใช้อยู่ สามารถทำได้โดยอาศัยการตรวจสอบการกดปุ่ม Grave Accent ( ~ ) จาก Procedure ของฟอร์ม ชื่อ InputLanguageChanged ตามตัวอย่างด้านล่าง (Source Code from : http://songkwae.com/foxboard/display_topic_threads.asp?ForumID=3&TopicID=3815&PagePosition=1) ดังนี้

วิธีที่ 1 ที่ Procedure : InputLanguageChange
Private Sub Form1_InputLanguageChanged _
           (ByVal sender As Object, ByVal e As _
            System.Windows.Forms.InputLanguageChangedEventArgs) _
            Handles Me.InputLanguageChanged

    Label1.Text = InputLanguage.CurrentInputLanguage.Culture.DisplayName.ToString

End Sub
ที่ Procedure : Load
Private Sub Form1_Load _
            (ByVal sender As System.Object, ByVal e As System.EventArgs) _
             Handles MyBase.Load
    Label1.Text = InputLanguage.CurrentInputLanguage.Culture.DisplayName.ToString
End Sub
วิธีที่ 2 อาศัยเรียกใช้จาก user32 ให้ทำการ Import คลาสเข้ามาใช้งาน
Imports System.Runtime.InteropServices
จากนั้นสร้าง Function ชื่อ GetKeyBoardLayoutName
   _
  Private Shared Function GetKeyboardLayoutName _
         (ByVal sb As System.Text.StringBuilder) As Integer
     'ไม่ต้องใส่อะไร
    End Function
ที่ Procedure : InputLanguageChange
Private Sub Form1_InputLanguageChanged _
           (ByVal sender As Object, ByVal e As _
            System.Windows.Forms.InputLanguageChangedEventArgs) _
            Handles Me.InputLanguageChanged
        Dim sb As New System.Text.StringBuilder(" "c, 256)
        Dim len As Integer
        len = GetKeyboardLayoutName(sb)
        Label1.Text = sb.ToString

End Sub
ที่ Procedure : Load
Private Sub Form1_Load _
            (ByVal sender As System.Object, ByVal e As System.EventArgs) _
             Handles MyBase.Load
        Dim sb As New System.Text.StringBuilder(" "c, 256)
        Dim len As Integer
        len = GetKeyboardLayoutName(sb)
        Label1.Text = sb.ToString
End Sub
สำหรับวิธีที่ 2 การแสดงผลจะเป็นรหัส เช่น ' ไทย -- 0000041E ' English -- 00000409 หวังว่าคงเป็นประโยชน์.... สวัสดี คนไทยไม่ทิ้งกัน

ไม่มีความคิดเห็น:

"I Believe in You"

Copyright(c) 2007 - 2022 by Kasem Kamolchaipisit.